<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[189471] trunk/LayoutTests</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/189471">189471</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2015-09-07 18:09:45 -0700 (Mon, 07 Sep 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Unreviewed, move W3C DOM tests to imported/w3c/web-platform-tests/dom
https://bugs.webkit.org/show_bug.cgi?id=148947

Move W3C DOM tests with other web-platform-tests under:
imported/w3c/web-platform-tests/dom.

LayoutTests/imported/w3c:

* web-platform-tests/dom/*: Added.

LayoutTests:

* TestExpectations:
* http/tests/w3c/dom/collections/w3c-import.log: Removed.
* http/tests/w3c/dom/events/w3c-import.log: Removed.
* http/tests/w3c/dom/lists/w3c-import.log: Removed.
* http/tests/w3c/dom/nodes/Document-URL.sub-expected.txt: Removed.
* http/tests/w3c/dom/nodes/Document-characterSet-normalization-expected.txt: Removed.
* http/tests/w3c/dom/nodes/DocumentType-literal-xhtml-expected.txt: Removed.
* http/tests/w3c/dom/nodes/Element-childElementCount-dynamic-add-xhtml-expected.txt: Removed.
* http/tests/w3c/dom/nodes/Element-childElementCount-nochild-xhtml-expected.txt: Removed.
* http/tests/w3c/dom/nodes/Element-firstElementChild-xhtml-expected.txt: Removed.
* http/tests/w3c/dom/nodes/Element-nextElementSibling-xhtml-expected.txt: Removed.
* http/tests/w3c/dom/nodes/Element-previousElementSibling-xhtml-expected.txt: Removed.
* http/tests/w3c/dom/nodes/Node-isEqualNode-xhtml-expected.txt: Removed.
* http/tests/w3c/dom/nodes/Node-lookupPrefix-xhtml-expected.txt: Removed.
* http/tests/w3c/dom/nodes/ProcessingInstruction-literal-1-xhtml-expected.txt: Removed.
* http/tests/w3c/dom/nodes/ProcessingInstruction-literal-2-xhtml-expected.txt: Removed.
* http/tests/w3c/dom/nodes/getElementsByClassName-10-expected.txt: Removed.
* http/tests/w3c/dom/nodes/getElementsByClassName-11-expected.txt: Removed.
* http/tests/w3c/dom/nodes/getElementsByClassName-31-expected.txt: Removed.
* http/tests/w3c/dom/nodes/w3c-import.log: Removed.
* http/tests/w3c/dom/ranges/w3c-import.log: Removed.
* http/tests/w3c/dom/traversal/w3c-import.log: Removed.
* http/tests/w3c/dom/w3c-import.log: Removed.
* platform/efl/TestExpectations:
* platform/ios-simulator/TestExpectations:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsTestExpectations">trunk/LayoutTests/TestExpectations</a></li>
<li><a href="#trunkLayoutTestsimportedw3cChangeLog">trunk/LayoutTests/imported/w3c/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cresourceswebplatformtestsmodulesjson">trunk/LayoutTests/imported/w3c/resources/web-platform-tests-modules.json</a></li>
<li><a href="#trunkLayoutTestsplatformeflTestExpectations">trunk/LayoutTests/platform/efl/TestExpectations</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorTestExpectations">trunk/LayoutTests/platform/ios-simulator/TestExpectations</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/dom/</li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomcollectionsHTMLCollectionemptynameexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/HTMLCollection-empty-name-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomcollectionsHTMLCollectionemptynamehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/HTMLCollection-empty-name.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomcollectionsHTMLCollectionsupportedpropertynamesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/HTMLCollection-supported-property-names-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomcollectionsHTMLCollectionsupportedpropertynameshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/HTMLCollection-supported-property-names.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomcommonjs">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/common.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomconstantsjs">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/constants.js</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventconstantsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-constants-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventconstantshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-constants.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventconstructorsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-constructors-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventconstructorshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-constructors.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdefaultPreventedexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-defaultPrevented-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdefaultPreventedhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-defaultPrevented.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchbubblesfalseexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-bubbles-false-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchbubblesfalsehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-bubbles-false.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchhandlerschangedexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-handlers-changed-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchhandlerschangedhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-handlers-changed.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchomittedcaptureexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-omitted-capture-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchomittedcapturehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-omitted-capture.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchredispatchexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-redispatch-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchredispatchhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-redispatch.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchreenterexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-reenter-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchreenterhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-reenter.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchtargetmovedexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-target-moved-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchtargetmovedhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-target-moved.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchtargetremovedexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-target-removed-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchtargetremovedhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-target-removed.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventinitEventexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-initEvent-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventinitEventhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-initEvent.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventpropagationexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-propagation-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventpropagationhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-propagation.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventtypeemptyexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-type-empty-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventtypeemptyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-type-empty.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventtypeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-type-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventtypehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-type.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventTargetaddEventListenerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-addEventListener-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventTargetaddEventListenerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-addEventListener.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventTargetdispatchEventexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventTargetdispatchEventreturnvalueexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent-returnvalue-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventTargetdispatchEventreturnvaluehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent-returnvalue.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventTargetdispatchEventhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventTargetremoveEventListenerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-removeEventListener-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventTargetremoveEventListenerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-removeEventListener.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsProgressEventexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/ProgressEvent-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomeventsProgressEventhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/ProgressEvent.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomhistoricalexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/historical-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomhistoricalhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/historical.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdominterfaceobjectsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interface-objects-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdominterfaceobjectshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interface-objects.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdominterfacesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdominterfaceshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces.html</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomlistsDOMTokenListstringifierexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/DOMTokenList-stringifier-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomlistsDOMTokenListstringifierhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/DOMTokenList-stringifier.html</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDataappendDataexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-appendData-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDataappendDatahtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-appendData.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDatadataexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-data-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDatadatahtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-data.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDatadeleteDataexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-deleteData-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDatadeleteDatahtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-deleteData.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDatainsertDataexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-insertData-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDatainsertDatahtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-insertData.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDataremoveexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-remove-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDataremovehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-remove.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDatareplaceDataexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-replaceData-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDatareplaceDatahtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-replaceData.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDatasubstringDataexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-substringData-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDatasubstringDatahtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-substringData.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDatasurrogatesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-surrogates-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDatasurrogateshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-surrogates.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesChildNodeafterexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ChildNode-after-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesChildNodeafterhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ChildNode-after.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesChildNodebeforeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ChildNode-before-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesChildNodebeforehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ChildNode-before.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesChildNoderemovejs">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ChildNode-remove.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesChildNodereplaceWithexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ChildNode-replaceWith-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesChildNodereplaceWithhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ChildNode-replaceWith.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCommentTextconstructorjs">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Comment-Text-constructor.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCommentconstructorexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Comment-constructor-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCommentconstructorhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Comment-constructor.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDOMImplementationcreateDocumentexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocument-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDOMImplementationcreateDocumenthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocument.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDOMImplementationcreateDocumentTypeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocumentType-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDOMImplementationcreateDocumentTypehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocumentType.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDOMImplementationcreateHTMLDocumentexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createHTMLDocument-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDOMImplementationcreateHTMLDocumenthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createHTMLDocument.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDOMImplementationcreateHTMLDocumentjs">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createHTMLDocument.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDOMImplementationhasFeatureexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-hasFeature-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDOMImplementationhasFeaturehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-hasFeature.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentElementgetElementsByTagNamejs">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-Element-getElementsByTagName.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentElementgetElementsByTagNameNSjs">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-Element-getElementsByTagNameNS.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentURLsubexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-URL.sub-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentURLsubhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-URL.sub.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentadoptNodeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-adoptNode-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentadoptNodehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-adoptNode.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcharacterSetnormalizationexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-characterSet-normalization-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcharacterSetnormalizationhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-characterSet-normalization.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentconstructorexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-constructor-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentconstructorhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-constructor.html</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/</li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_bmpexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_bmp-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_bmphtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_bmp.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_cssexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_css-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_csshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_css.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_datauri_01expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_datauri_01-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_datauri_01html">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_datauri_01.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_datauri_02expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_datauri_02-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_datauri_02html">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_datauri_02.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_gifexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_gif-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_gifhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_gif.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_htmlexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_html-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_htmlhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_html.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_javascripturiexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_javascripturi-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_javascripturihtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_javascripturi.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_jpgexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_jpg-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_jpghtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_jpg.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_mimeheader_01expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_mimeheader_01-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_mimeheader_01html">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_mimeheader_01.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_mimeheader_02expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_mimeheader_02-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_mimeheader_02html">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_mimeheader_02.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_pngexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_png-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_pnghtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_png.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_txtexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_txt-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_txthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_txt.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_xmlexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_xml-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_xmlhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_xml.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecreateDocumentexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/createDocument-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecreateDocumenthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/createDocument.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecreateHTMLDocumentexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/createHTMLDocument-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecreateHTMLDocumenthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/createHTMLDocument.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypexhr_responseType_documentexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/xhr_responseType_document-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypexhr_responseType_documenthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/xhr_responseType_document.html</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTyperesourcesblobhtm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/blob.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTyperesourcesblobtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/blob.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTyperesourcesblobxml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/blob.xml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTyperesourceslibjs">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/lib.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTyperesourcesstylecss">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/style.css</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTyperesourcestbmp">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/t.bmp</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTyperesourcestgif">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/t.gif</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTyperesourcestjpg">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/t.jpg</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTyperesourcestpng">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/t.png</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/support/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypesupportcontenttype_setterpy">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/support/contenttype_setter.py</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateAttributeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createAttribute-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateAttributehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createAttribute.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateCommentcreateTextNodejs">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createComment-createTextNode.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateCommentexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createComment-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateCommenthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createComment.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateElementexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElement-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateElementnamespaceexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElement-namespace-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateElementnamespacehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElement-namespace.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateElementhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElement.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateElementNSexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElementNS-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateElementNShtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElementNS.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateElementNSjs">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElementNS.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateEventexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateEventhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateEventjs">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateProcessingInstructionexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createProcessingInstruction-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateProcessingInstructionxhtmlexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createProcessingInstruction-xhtml-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateProcessingInstructionxhtmlxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createProcessingInstruction-xhtml.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateProcessingInstructionhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createProcessingInstruction.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateProcessingInstructionjs">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createProcessingInstruction.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateTextNodeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createTextNode-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateTextNodehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createTextNode.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateTreeWalkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createTreeWalker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateTreeWalkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createTreeWalker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentdoctypeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-doctype-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentdoctypehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-doctype.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentgetElementByIdexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementById-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentgetElementByIdhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementById.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentgetElementsByTagNameexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementsByTagName-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentgetElementsByTagNamexhtmlexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementsByTagName-xhtml-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentgetElementsByTagNamexhtmlxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementsByTagName-xhtml.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentgetElementsByTagNamehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementsByTagName.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentgetElementsByTagNameNSexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementsByTagNameNS-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentgetElementsByTagNameNShtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementsByTagNameNS.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentimplementationexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-implementation-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentimplementationhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-implementation.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentimportNodeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-importNode-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentimportNodehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-importNode.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentTypeliteralexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-literal-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentTypeliteralhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-literal.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentTypeliteralxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-literal.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentTyperemoveexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-remove-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentTyperemovehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-remove.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementnullexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElement-null-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementnullxhtmlexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElement-null-xhtml-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementnullxhtmlxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElement-null-xhtml.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementnullhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElement-null.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementCountdynamicaddexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementCountdynamicaddhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementCountdynamicaddxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementCountdynamicremoveexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-remove-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementCountdynamicremovexhtmlexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-remove-xhtml-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementCountdynamicremovexhtmlxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-remove-xhtml.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementCountdynamicremovehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-remove.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementCountexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementCountnochildexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-nochild-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementCountnochildhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-nochild.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementCountnochildxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-nochild.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementCountxhtmlexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-xhtml-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementCountxhtmlxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-xhtml.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementCounthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildrenexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-children-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildrenhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-children.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementclasslistexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-classlist-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementclasslisthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-classlist.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementclosestexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-closest-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementclosesthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-closest.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementfirstElementChildentityxhtmlexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-entity-xhtml-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementfirstElementChildentityxhtmlxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-entity-xhtml.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementfirstElementChildexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementfirstElementChildnamespaceexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-namespace-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementfirstElementChildnamespacexhtmlexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-namespace-xhtml-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementfirstElementChildnamespacexhtmlxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-namespace-xhtml.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementfirstElementChildnamespacehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-namespace.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementfirstElementChildhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementfirstElementChildxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementgetElementsByClassNameexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByClassName-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementgetElementsByClassNamehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByClassName.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementgetElementsByTagNameexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagName-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementgetElementsByTagNamehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagName.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementgetElementsByTagNameNSexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagNameNS-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementgetElementsByTagNameNShtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagNameNS.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementlastElementChildexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-lastElementChild-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementlastElementChildxhtmlexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-lastElementChild-xhtml-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementlastElementChildxhtmlxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-lastElementChild-xhtml.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementlastElementChildhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-lastElementChild.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementmatchesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-matches-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementmatcheshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-matches.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementmatchesjs">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-matches.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementnextElementSiblingexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-nextElementSibling-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementnextElementSiblinghtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-nextElementSibling.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementnextElementSiblingxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-nextElementSibling.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementpreviousElementSiblingexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-previousElementSibling-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementpreviousElementSiblinghtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-previousElementSibling.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementpreviousElementSiblingxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-previousElementSibling.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementremoveexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-remove-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementremovehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-remove.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementremoveAttributeNSexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-removeAttributeNS-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementremoveAttributeNShtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-removeAttributeNS.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementsiblingElementnullexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-siblingElement-null-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementsiblingElementnullxhtmlexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-siblingElement-null-xhtml-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementsiblingElementnullxhtmlxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-siblingElement-null-xhtml.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementsiblingElementnullhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-siblingElement-null.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementtagNameexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-tagName-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementtagNamehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-tagName.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesMutationObserverattributesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-attributes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesMutationObserverattributeshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-attributes.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesMutationObservercharacterDataexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-characterData-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesMutationObservercharacterDatahtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-characterData.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesMutationObserverchildListexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-childList-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesMutationObserverchildListhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-childList.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesMutationObserverdisconnectexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-disconnect-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesMutationObserverdisconnecthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-disconnect.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesMutationObserverdocumentexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-document-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesMutationObserverdocumenthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-document.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesMutationObserverinnerouterexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-inner-outer-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesMutationObserverinnerouterhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-inner-outer.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesMutationObservertakeRecordsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-takeRecords-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesMutationObservertakeRecordshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-takeRecords.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeappendChildexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-appendChild-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeappendChildhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-appendChild.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodebaseURIexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-baseURI-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodebaseURIhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-baseURI.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodechildNodesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-childNodes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodechildNodeshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-childNodes.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodecloneNodeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-cloneNode-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodecloneNodehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-cloneNode.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodecompareDocumentPositionexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-compareDocumentPosition-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodecompareDocumentPositionhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-compareDocumentPosition.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeconstantsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-constants-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeconstantshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-constants.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodecontainsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodecontainsxhtmlexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains-xhtml-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodecontainsxhtmlxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains-xhtml.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodecontainshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeinsertBeforeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-insertBefore-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeinsertBeforehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-insertBefore.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeisEqualNodeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeisEqualNodexhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodelookupNamespaceURIexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-lookupNamespaceURI-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodelookupNamespaceURIhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-lookupNamespaceURI.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodelookupPrefixexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-lookupPrefix-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodelookupPrefixxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-lookupPrefix.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodenodeNameexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-nodeName-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodenodeNamexhtmlexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-nodeName-xhtml-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodenodeNamexhtmlxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-nodeName-xhtml.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodenodeNamehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-nodeName.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodenodeValueexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-nodeValue-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodenodeValuehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-nodeValue.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodenormalizeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-normalize-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodenormalizehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-normalize.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeparentElementexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-parentElement-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeparentElementhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-parentElement.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeparentNodeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-parentNode-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeparentNodeiframeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-parentNode-iframe-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeparentNodeiframehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-parentNode-iframe.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeparentNodehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-parentNode.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodepropertiesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-properties-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodepropertieshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-properties.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNoderemoveChildexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-removeChild-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNoderemoveChildhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-removeChild.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodereplaceChildexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-replaceChild-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodereplaceChildhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-replaceChild.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodetextContentexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-textContent-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodetextContenthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-textContent.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesParentNodeappendexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-append-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesParentNodeappendhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-append.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesParentNodeprependexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-prepend-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesParentNodeprependhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-prepend.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesParentNodequerySelectorAllexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesParentNodequerySelectorAllxhtmlexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-xhtml-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesParentNodequerySelectorAllxhtmlxht">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-xhtml.xht</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesParentNodequerySelectorAllhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesParentNodequerySelectorAlljs">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesProcessingInstructionliteral1expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ProcessingInstruction-literal-1-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesProcessingInstructionliteral1xhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ProcessingInstruction-literal-1.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesProcessingInstructionliteral2expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ProcessingInstruction-literal-2-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesProcessingInstructionliteral2xhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ProcessingInstruction-literal-2.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesTextconstructorexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Text-constructor-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesTextconstructorhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Text-constructor.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesTextsplitTextexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Text-splitText-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesTextsplitTexthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Text-splitText.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesappendonDocumentexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/append-on-Document-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesappendonDocumenthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/append-on-Document.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesattributesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/attributes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesattributeshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/attributes.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesattributesjs">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/attributes.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodescaseexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/case-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodescasehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/case.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodescasejs">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/case.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodescreatorsjs">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/creators.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesencodingpy">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/encoding.py</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName01expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-01-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName01htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-01.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName02expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-02-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName02htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-02.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName03expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-03-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName03htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-03.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName04expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-04-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName04htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-04.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName05expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-05-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName05htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-05.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName06expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-06-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName06htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-06.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName07expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-07-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName07htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-07.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName08expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-08-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName08htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-08.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName09expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-09-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName09htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-09.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName10expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-10-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName10xml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-10.xml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName11expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-11-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName11xml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-11.xml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName12expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-12-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName12htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-12.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName13expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-13-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName13htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-13.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName14expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-14-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName14htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-14.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName15expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-15-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName15htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-15.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName16expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-16-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName16htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-16.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName17expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-17-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName17htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-17.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName18expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-18-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName18htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-18.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName19expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-19-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName19htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-19.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName20expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-20-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName20htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-20.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName21expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-21-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName21htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-21.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName22expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-22-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName22htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-22.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName23expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-23-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName23htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-23.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName24expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-24-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName24htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-24.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName25expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-25-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName25htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-25.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName26expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-26-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName26htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-26.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName27expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-27-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName27htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-27.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName28expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-28-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName28htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-28.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName29expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-29-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName29htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-29.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName30expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-30-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName30htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-30.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName31expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-31-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName31htm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-31.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassNameFrameexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassNameFrame-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassNameFramehtm">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassNameFrame.htm</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesmutationobserversjs">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/mutationobservers.js</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesprependonDocumentexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/prepend-on-Document-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesprependonDocumenthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/prepend-on-Document.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesproductionsjs">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/productions.js</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/</li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsbare_mathmlhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_mathml.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsbare_mathmlsvg">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_mathml.svg</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsbare_mathmlxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_mathml.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsbare_mathmlxml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_mathml.xml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsbare_svghtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_svg.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsbare_svgsvg">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_svg.svg</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsbare_svgxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_svg.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsbare_svgxml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_svg.xml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsbare_xhtmlhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_xhtml.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsbare_xhtmlsvg">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_xhtml.svg</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsbare_xhtmlxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_xhtml.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsbare_xhtmlxml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_xhtml.xml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsemptyhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/empty.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsemptysvg">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/empty.svg</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsemptyxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/empty.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsemptyxml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/empty.xml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsgeneratepy">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/generate.py</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsmathmlhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/mathml.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsmathmlsvg">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/mathml.svg</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsmathmlxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/mathml.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsmathmlxml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/mathml.xml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsminimal_htmlhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/minimal_html.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsminimal_htmlsvg">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/minimal_html.svg</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsminimal_htmlxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/minimal_html.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsminimal_htmlxml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/minimal_html.xml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestssvghtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/svg.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestssvgsvg">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/svg.svg</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestssvgxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/svg.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestssvgxml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/svg.xml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsxhtmlhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsxhtmlsvg">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml.svg</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsxhtmlxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsxhtmlxml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml.xml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsxhtml_ns_changedhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_changed.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsxhtml_ns_changedsvg">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_changed.svg</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsxhtml_ns_changedxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_changed.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsxhtml_ns_changedxml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_changed.xml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsxhtml_ns_removedhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_removed.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsxhtml_ns_removedsvg">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_removed.svg</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsxhtml_ns_removedxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_removed.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsxhtml_ns_removedxml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_removed.xml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesParentNodequerySelectorAllcontenthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/ParentNode-querySelector-All-content.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesParentNodequerySelectorAllcontentxht">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/ParentNode-querySelector-All-content.xht</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomnodesselectorsjs">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/selectors.js</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeattributesexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-attributes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeattributeshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-attributes.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecloneContentsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-cloneContents-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecloneContentshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-cloneContents.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecloneRangeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-cloneRange-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecloneRangehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-cloneRange.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecollapseexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-collapse-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecollapsehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-collapse.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecommonAncestorContainer2expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-commonAncestorContainer-2-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecommonAncestorContainer2html">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-commonAncestorContainer-2.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecommonAncestorContainerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-commonAncestorContainer-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecommonAncestorContainerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-commonAncestorContainer.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecompareBoundaryPointsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-compareBoundaryPoints-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecompareBoundaryPointshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-compareBoundaryPoints.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecomparePoint2expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-comparePoint-2-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecomparePoint2html">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-comparePoint-2.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecomparePointexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-comparePoint-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecomparePointhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-comparePoint.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangedeleteContentsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-deleteContents-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangedeleteContentshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-deleteContents.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangedetachexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-detach-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangedetachhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-detach.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeextractContentsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-extractContents-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeextractContentshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-extractContents.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeinsertNodeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-insertNode-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeinsertNodehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-insertNode.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeintersectsNodebindingexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-intersectsNode-binding-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeintersectsNodebindinghtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-intersectsNode-binding.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeintersectsNodeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-intersectsNode-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeintersectsNodehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-intersectsNode.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeisPointInRangeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-isPointInRange-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeisPointInRangehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-isPointInRange.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangemutationsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-mutations-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangemutationshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-mutations.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeselectNodeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-selectNode-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeselectNodehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-selectNode.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangesetexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-set-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangesethtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-set.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangesurroundContentsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-surroundContents-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangesurroundContentshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-surroundContents.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangetestiframeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-test-iframe-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangetestiframehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-test-iframe.html</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalNodeFilterconstantsexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/NodeFilter-constants-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalNodeFilterconstantshtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/NodeFilter-constants.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalNodeIteratorexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/NodeIterator-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalNodeIteratorremovalexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/NodeIterator-removal-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalNodeIteratorremovalhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/NodeIterator-removal.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalNodeIteratorhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/NodeIterator.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkeracceptNodefilterexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkeracceptNodefilterhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkerbasicexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-basic-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkerbasichtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-basic.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkercurrentNodeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-currentNode-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkercurrentNodehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-currentNode.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkerexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkerpreviousNodeLastChildRejectexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-previousNodeLastChildReject-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkerpreviousNodeLastChildRejecthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-previousNodeLastChildReject.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkerpreviousSiblingLastChildSkipexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-previousSiblingLastChildSkip-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkerpreviousSiblingLastChildSkiphtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-previousSiblingLastChildSkip.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkertraversalrejectexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-traversal-reject-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkertraversalrejecthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-traversal-reject.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkertraversalskipexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-traversal-skip-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkertraversalskipmostexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-traversal-skip-most-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkertraversalskipmosthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-traversal-skip-most.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkertraversalskiphtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-traversal-skip.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkerwalkingoutsideatreeexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-walking-outside-a-tree-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkerwalkingoutsideatreehtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-walking-outside-a-tree.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkerhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversaltraversalsupportjs">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/traversal-support.js</a></li>
<li>trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/</li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished001expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/001-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished001xml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/001.xml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished002expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/002-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished002xml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/002.xml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished003expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/003-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished003xml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/003.xml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished004expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/004-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished004xml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/004.xml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished005expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/005-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished005xml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/005.xml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished006expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/006-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished006xml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/006.xml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished007expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/007-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished007xml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/007.xml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished008expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/008-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished008xml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/008.xml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished009expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/009-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished009xml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/009.xml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished010expectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/010-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished010xml">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/010.xml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinishedTODO">trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/TODO</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li>trunk/LayoutTests/http/tests/w3c/dom/</li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (189470 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2015-09-07 23:05:28 UTC (rev 189470)
+++ trunk/LayoutTests/ChangeLog        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -1,3 +1,37 @@
</span><ins>+2015-09-07  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Unreviewed, move W3C DOM tests to imported/w3c/web-platform-tests/dom
+        https://bugs.webkit.org/show_bug.cgi?id=148947
+
+        Move W3C DOM tests with other web-platform-tests under:
+        imported/w3c/web-platform-tests/dom.
+
+        * TestExpectations:
+        * http/tests/w3c/dom/collections/w3c-import.log: Removed.
+        * http/tests/w3c/dom/events/w3c-import.log: Removed.
+        * http/tests/w3c/dom/lists/w3c-import.log: Removed.
+        * http/tests/w3c/dom/nodes/Document-URL.sub-expected.txt: Removed.
+        * http/tests/w3c/dom/nodes/Document-characterSet-normalization-expected.txt: Removed.
+        * http/tests/w3c/dom/nodes/DocumentType-literal-xhtml-expected.txt: Removed.
+        * http/tests/w3c/dom/nodes/Element-childElementCount-dynamic-add-xhtml-expected.txt: Removed.
+        * http/tests/w3c/dom/nodes/Element-childElementCount-nochild-xhtml-expected.txt: Removed.
+        * http/tests/w3c/dom/nodes/Element-firstElementChild-xhtml-expected.txt: Removed.
+        * http/tests/w3c/dom/nodes/Element-nextElementSibling-xhtml-expected.txt: Removed.
+        * http/tests/w3c/dom/nodes/Element-previousElementSibling-xhtml-expected.txt: Removed.
+        * http/tests/w3c/dom/nodes/Node-isEqualNode-xhtml-expected.txt: Removed.
+        * http/tests/w3c/dom/nodes/Node-lookupPrefix-xhtml-expected.txt: Removed.
+        * http/tests/w3c/dom/nodes/ProcessingInstruction-literal-1-xhtml-expected.txt: Removed.
+        * http/tests/w3c/dom/nodes/ProcessingInstruction-literal-2-xhtml-expected.txt: Removed.
+        * http/tests/w3c/dom/nodes/getElementsByClassName-10-expected.txt: Removed.
+        * http/tests/w3c/dom/nodes/getElementsByClassName-11-expected.txt: Removed.
+        * http/tests/w3c/dom/nodes/getElementsByClassName-31-expected.txt: Removed.
+        * http/tests/w3c/dom/nodes/w3c-import.log: Removed.
+        * http/tests/w3c/dom/ranges/w3c-import.log: Removed.
+        * http/tests/w3c/dom/traversal/w3c-import.log: Removed.
+        * http/tests/w3c/dom/w3c-import.log: Removed.
+        * platform/efl/TestExpectations:
+        * platform/ios-simulator/TestExpectations:
+
</ins><span class="cx"> 2015-09-07  Daniel Bates  &lt;dabates@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         ASSERT_WITH_SECURITY_IMPLICATION in WebCore::DocumentOrderedMap::get(); update form
</span></span></pre></div>
<a id="trunkLayoutTestsTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/TestExpectations (189470 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/TestExpectations        2015-09-07 23:05:28 UTC (rev 189470)
+++ trunk/LayoutTests/TestExpectations        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -228,11 +228,11 @@
</span><span class="cx"> webkit.org/b/136878 js/promises-tests/promises-tests-2-3-3.html [ Slow ]
</span><span class="cx"> 
</span><span class="cx"> # Skip W3C tests that are too slow in debug builds.
</span><del>-webkit.org/b/148546 [ Debug ] http/tests/w3c/dom/ranges/Range-compareBoundaryPoints.html [ Skip ]
-webkit.org/b/148546 [ Debug ] http/tests/w3c/dom/ranges/Range-comparePoint.html [ Skip ]
-webkit.org/b/148546 [ Debug ] http/tests/w3c/dom/ranges/Range-isPointInRange.html [ Skip ]
-webkit.org/b/148546 [ Debug ] http/tests/w3c/dom/ranges/Range-mutations.html [ Skip ]
-webkit.org/b/148546 [ Debug ] http/tests/w3c/dom/ranges/Range-set.html [ Skip ]
</del><ins>+webkit.org/b/148546 [ Debug ] imported/w3c/web-platform-tests/dom/ranges/Range-compareBoundaryPoints.html [ Skip ]
+webkit.org/b/148546 [ Debug ] imported/w3c/web-platform-tests/dom/ranges/Range-comparePoint.html [ Skip ]
+webkit.org/b/148546 [ Debug ] imported/w3c/web-platform-tests/dom/ranges/Range-isPointInRange.html [ Skip ]
+webkit.org/b/148546 [ Debug ] imported/w3c/web-platform-tests/dom/ranges/Range-mutations.html [ Skip ]
+webkit.org/b/148546 [ Debug ] imported/w3c/web-platform-tests/dom/ranges/Range-set.html [ Skip ]
</ins><span class="cx"> webkit.org/b/148736 [ Debug ] http/tests/w3c/html/dom/interfaces.html [ Skip ]
</span><span class="cx"> webkit.org/b/148822 [ Debug ] http/tests/w3c/html/semantics/interfaces.html [ Skip ]
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (189470 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/ChangeLog        2015-09-07 23:05:28 UTC (rev 189470)
+++ trunk/LayoutTests/imported/w3c/ChangeLog        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -1,3 +1,13 @@
</span><ins>+2015-09-07  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Unreviewed, move W3C DOM tests to imported/w3c/web-platform-tests/dom
+        https://bugs.webkit.org/show_bug.cgi?id=148947
+
+        Move W3C DOM tests with other web-platform-tests under:
+        imported/w3c/web-platform-tests/dom.
+
+        * web-platform-tests/dom/*: Added.
+
</ins><span class="cx"> 2015-09-04  Ryosuke Niwa  &lt;rniwa@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Import new multicolumn layout tests from CSS WG testss
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cresourceswebplatformtestsmodulesjson"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/resources/web-platform-tests-modules.json (189470 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/resources/web-platform-tests-modules.json        2015-09-07 23:05:28 UTC (rev 189470)
+++ trunk/LayoutTests/imported/w3c/resources/web-platform-tests-modules.json        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -38,5 +38,13 @@
</span><span class="cx">         ], 
</span><span class="cx">         &quot;url&quot;: &quot;https://github.com/jgraham/six/archive/3b6173c833d217ab0186c355804f5925cbcfca47.tar.gz&quot;, 
</span><span class="cx">         &quot;url_subpath&quot;: &quot;six-3b6173c833d217ab0186c355804f5925cbcfca47&quot;
</span><ins>+    },
+    {
+        &quot;name&quot;: &quot;webidl2&quot;,
+        &quot;path&quot;: [
+            &quot;resources&quot;
+        ],
+        &quot;url&quot;: &quot;https://github.com/darobin/webidl2.js/archive/997fb214e02980ef4c27137553857ae6da533590.tar.gz&quot;,
+        &quot;url_subpath&quot;: &quot;webidl2.js-997fb214e02980ef4c27137553857ae6da533590&quot;
</ins><span class="cx">     }
</span><del>-]
</del><span class="cx">\ No newline at end of file
</span><ins>+]
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomcollectionsHTMLCollectionemptynameexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomcollectionsHTMLCollectionemptynameexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/HTMLCollection-empty-name-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/collections/HTMLCollection-empty-name-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/HTMLCollection-empty-name-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/HTMLCollection-empty-name-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+
+PASS Empty string as a name for Document.getElementsByTagName 
+PASS Empty string as a name for Element.getElementsByTagName 
+PASS Empty string as a name for Document.getElementsByTagNameNS 
+PASS Empty string as a name for Element.getElementsByTagNameNS 
+PASS Empty string as a name for Document.getElementsByClassName 
+PASS Empty string as a name for Element.getElementsByClassName 
+PASS Empty string as a name for Element.children 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomcollectionsHTMLCollectionemptynamehtmlfromrev189470trunkLayoutTestshttptestsw3cdomcollectionsHTMLCollectionemptynamehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/HTMLCollection-empty-name.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/collections/HTMLCollection-empty-name.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/HTMLCollection-empty-name.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/HTMLCollection-empty-name.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,65 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;HTMLCollection and empty names&lt;/title&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;div id=test&gt;
+&lt;div class=a id&gt;&lt;/div&gt;
+&lt;div class=a name&gt;&lt;/div&gt;
+&lt;a class=a name&gt;&lt;/a&gt;
+&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  var c = document.getElementsByTagName(&quot;*&quot;);
+  assert_false(&quot;&quot; in c, &quot;Empty string should not be in the collection.&quot;);
+  assert_equals(c[&quot;&quot;], undefined, &quot;Named getter should return undefined for empty string.&quot;);
+  assert_equals(c.namedItem(&quot;&quot;), null, &quot;namedItem should return null for empty string.&quot;);
+}, &quot;Empty string as a name for Document.getElementsByTagName&quot;);
+
+test(function() {
+  var div = document.getElementById(&quot;test&quot;);
+  var c = div.getElementsByTagName(&quot;*&quot;);
+  assert_false(&quot;&quot; in c, &quot;Empty string should not be in the collection.&quot;);
+  assert_equals(c[&quot;&quot;], undefined, &quot;Named getter should return undefined for empty string.&quot;);
+  assert_equals(c.namedItem(&quot;&quot;), null, &quot;namedItem should return null for empty string.&quot;);
+}, &quot;Empty string as a name for Element.getElementsByTagName&quot;);
+
+test(function() {
+  var c = document.getElementsByTagNameNS(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;a&quot;);
+  assert_false(&quot;&quot; in c, &quot;Empty string should not be in the collection.&quot;);
+  assert_equals(c[&quot;&quot;], undefined, &quot;Named getter should return undefined for empty string.&quot;);
+  assert_equals(c.namedItem(&quot;&quot;), null, &quot;namedItem should return null for empty string.&quot;);
+}, &quot;Empty string as a name for Document.getElementsByTagNameNS&quot;);
+
+test(function() {
+  var div = document.getElementById(&quot;test&quot;);
+  var c = div.getElementsByTagNameNS(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;a&quot;);
+  assert_false(&quot;&quot; in c, &quot;Empty string should not be in the collection.&quot;);
+  assert_equals(c[&quot;&quot;], undefined, &quot;Named getter should return undefined for empty string.&quot;);
+  assert_equals(c.namedItem(&quot;&quot;), null, &quot;namedItem should return null for empty string.&quot;);
+}, &quot;Empty string as a name for Element.getElementsByTagNameNS&quot;);
+
+test(function() {
+  var c = document.getElementsByClassName(&quot;a&quot;);
+  assert_false(&quot;&quot; in c, &quot;Empty string should not be in the collection.&quot;);
+  assert_equals(c[&quot;&quot;], undefined, &quot;Named getter should return undefined for empty string.&quot;);
+  assert_equals(c.namedItem(&quot;&quot;), null, &quot;namedItem should return null for empty string.&quot;);
+}, &quot;Empty string as a name for Document.getElementsByClassName&quot;);
+
+test(function() {
+  var div = document.getElementById(&quot;test&quot;);
+  var c = div.getElementsByClassName(&quot;a&quot;);
+  assert_false(&quot;&quot; in c, &quot;Empty string should not be in the collection.&quot;);
+  assert_equals(c[&quot;&quot;], undefined, &quot;Named getter should return undefined for empty string.&quot;);
+  assert_equals(c.namedItem(&quot;&quot;), null, &quot;namedItem should return null for empty string.&quot;);
+}, &quot;Empty string as a name for Element.getElementsByClassName&quot;);
+
+test(function() {
+  var div = document.getElementById(&quot;test&quot;);
+  var c = div.children;
+  assert_false(&quot;&quot; in c, &quot;Empty string should not be in the collection.&quot;);
+  assert_equals(c[&quot;&quot;], undefined, &quot;Named getter should return undefined for empty string.&quot;);
+  assert_equals(c.namedItem(&quot;&quot;), null, &quot;namedItem should return null for empty string.&quot;);
+}, &quot;Empty string as a name for Element.children&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomcollectionsHTMLCollectionsupportedpropertynamesexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/HTMLCollection-supported-property-names-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/HTMLCollection-supported-property-names-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/HTMLCollection-supported-property-names-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+
+FAIL Object.getOwnPropertyNames on HTMLCollection assert_array_equals: lengths differ, expected 12 got 10
+FAIL Object.getOwnPropertyNames on HTMLCollection with non-HTML namespace assert_array_equals: lengths differ, expected 1 got 3
+FAIL Object.getOwnPropertyNames on HTMLCollection with expando object assert_array_equals: lengths differ, expected 2 got 4
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomcollectionsHTMLCollectionsupportedpropertynameshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/HTMLCollection-supported-property-names.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/HTMLCollection-supported-property-names.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/collections/HTMLCollection-supported-property-names.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,54 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;link rel=help href=https://dom.spec.whatwg.org/#interface-htmlcollection&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
+
+&lt;!-- with no attribute --&gt;
+&lt;span&gt;&lt;/span&gt;
+
+&lt;!-- with `id` attribute --&gt;
+&lt;span id=''&gt;&lt;/span&gt;
+&lt;span id='some-id'&gt;&lt;/span&gt;
+&lt;span id='some-id'&gt;&lt;/span&gt;&lt;!-- to ensure no duplicates --&gt;
+
+&lt;!-- with `name` attribute --&gt;
+&lt;span name=''&gt;&lt;/span&gt;
+&lt;span name='some-name'&gt;&lt;/span&gt;
+&lt;span name='some-name'&gt;&lt;/span&gt;&lt;!-- to ensure no duplicates --&gt;
+
+&lt;!-- with `name` and `id` attribute --&gt;
+&lt;span id='another-id' name='another-name'&gt;&lt;/span&gt;
+
+&lt;script&gt;
+test(function () {
+  var elements = document.getElementsByTagName(&quot;span&quot;);
+  assert_array_equals(
+    Object.getOwnPropertyNames(elements),
+    ['0', '1', '2', '3', '4', '5', '6', '7', 'some-id', 'some-name', 'another-id', 'another-name']
+  );
+}, 'Object.getOwnPropertyNames on HTMLCollection');
+
+test(function () {
+  var elem = document.createElementNS('some-random-namespace', 'foo');
+  this.add_cleanup(function () {elem.remove();});
+  elem.setAttribute(&quot;name&quot;, &quot;some-name&quot;);
+  document.body.appendChild(elem);
+
+  var elements = document.getElementsByTagName(&quot;foo&quot;);
+  assert_array_equals(Object.getOwnPropertyNames(elements), ['0']);
+}, 'Object.getOwnPropertyNames on HTMLCollection with non-HTML namespace');
+
+test(function () {
+  var elem = document.createElement('foo');
+  this.add_cleanup(function () {elem.remove();});
+  document.body.appendChild(elem);
+
+  var elements = document.getElementsByTagName(&quot;foo&quot;);
+  elements.someProperty = &quot;some value&quot;;
+
+  assert_array_equals(Object.getOwnPropertyNames(elements), ['0', 'someProperty']);
+}, 'Object.getOwnPropertyNames on HTMLCollection with expando object');
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomcommonjsfromrev189470trunkLayoutTestshttptestsw3cdomcommonjs"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/common.js (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/common.js) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/common.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/common.js        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,1085 @@
</span><ins>+&quot;use strict&quot;;
+// Written by Aryeh Gregor &lt;ayg@aryeh.name&gt;
+
+// TODO: iframes, contenteditable/designMode
+
+// Everything is done in functions in this test harness, so we have to declare
+// all the variables before use to make sure they can be reused.
+var testDiv, paras, detachedDiv, detachedPara1, detachedPara2,
+    foreignDoc, foreignPara1, foreignPara2, xmlDoc, xmlElement,
+    detachedXmlElement, detachedTextNode, foreignTextNode,
+    detachedForeignTextNode, xmlTextNode, detachedXmlTextNode,
+    processingInstruction, detachedProcessingInstruction, comment,
+    detachedComment, foreignComment, detachedForeignComment, xmlComment,
+    detachedXmlComment, docfrag, foreignDocfrag, xmlDocfrag, doctype,
+    foreignDoctype, xmlDoctype;
+var testRangesShort, testRanges, testPoints, testNodesShort, testNodes;
+
+function setupRangeTests() {
+    testDiv = document.querySelector(&quot;#test&quot;);
+    if (testDiv) {
+        testDiv.parentNode.removeChild(testDiv);
+    }
+    testDiv = document.createElement(&quot;div&quot;);
+    testDiv.id = &quot;test&quot;;
+    document.body.insertBefore(testDiv, document.body.firstChild);
+
+    paras = [];
+    paras.push(document.createElement(&quot;p&quot;));
+    paras[0].setAttribute(&quot;id&quot;, &quot;a&quot;);
+    // Test some diacritics, to make sure browsers are using code units here
+    // and not something like grapheme clusters.
+    paras[0].textContent = &quot;A\u0308b\u0308c\u0308d\u0308e\u0308f\u0308g\u0308h\u0308\n&quot;;
+    testDiv.appendChild(paras[0]);
+
+    paras.push(document.createElement(&quot;p&quot;));
+    paras[1].setAttribute(&quot;id&quot;, &quot;b&quot;);
+    paras[1].setAttribute(&quot;style&quot;, &quot;display:none&quot;);
+    paras[1].textContent = &quot;Ijklmnop\n&quot;;
+    testDiv.appendChild(paras[1]);
+
+    paras.push(document.createElement(&quot;p&quot;));
+    paras[2].setAttribute(&quot;id&quot;, &quot;c&quot;);
+    paras[2].textContent = &quot;Qrstuvwx&quot;;
+    testDiv.appendChild(paras[2]);
+
+    paras.push(document.createElement(&quot;p&quot;));
+    paras[3].setAttribute(&quot;id&quot;, &quot;d&quot;);
+    paras[3].setAttribute(&quot;style&quot;, &quot;display:none&quot;);
+    paras[3].textContent = &quot;Yzabcdef&quot;;
+    testDiv.appendChild(paras[3]);
+
+    paras.push(document.createElement(&quot;p&quot;));
+    paras[4].setAttribute(&quot;id&quot;, &quot;e&quot;);
+    paras[4].setAttribute(&quot;style&quot;, &quot;display:none&quot;);
+    paras[4].textContent = &quot;Ghijklmn&quot;;
+    testDiv.appendChild(paras[4]);
+
+    detachedDiv = document.createElement(&quot;div&quot;);
+    detachedPara1 = document.createElement(&quot;p&quot;);
+    detachedPara1.appendChild(document.createTextNode(&quot;Opqrstuv&quot;));
+    detachedPara2 = document.createElement(&quot;p&quot;);
+    detachedPara2.appendChild(document.createTextNode(&quot;Wxyzabcd&quot;));
+    detachedDiv.appendChild(detachedPara1);
+    detachedDiv.appendChild(detachedPara2);
+
+    // Opera doesn't automatically create a doctype for a new HTML document,
+    // contrary to spec.  It also doesn't let you add doctypes to documents
+    // after the fact through any means I've tried.  So foreignDoc in Opera
+    // will have no doctype, foreignDoctype will be null, and Opera will fail
+    // some tests somewhat mysteriously as a result.
+    foreignDoc = document.implementation.createHTMLDocument(&quot;&quot;);
+    foreignPara1 = foreignDoc.createElement(&quot;p&quot;);
+    foreignPara1.appendChild(foreignDoc.createTextNode(&quot;Efghijkl&quot;));
+    foreignPara2 = foreignDoc.createElement(&quot;p&quot;);
+    foreignPara2.appendChild(foreignDoc.createTextNode(&quot;Mnopqrst&quot;));
+    foreignDoc.body.appendChild(foreignPara1);
+    foreignDoc.body.appendChild(foreignPara2);
+
+    // Now we get to do really silly stuff, which nobody in the universe is
+    // ever going to actually do, but the spec defines behavior, so too bad.
+    // Testing is fun!
+    xmlDoctype = document.implementation.createDocumentType(&quot;qorflesnorf&quot;, &quot;abcde&quot;, &quot;x\&quot;'y&quot;);
+    xmlDoc = document.implementation.createDocument(null, null, xmlDoctype);
+    detachedXmlElement = xmlDoc.createElement(&quot;everyone-hates-hyphenated-element-names&quot;);
+    detachedTextNode = document.createTextNode(&quot;Uvwxyzab&quot;);
+    detachedForeignTextNode = foreignDoc.createTextNode(&quot;Cdefghij&quot;);
+    detachedXmlTextNode = xmlDoc.createTextNode(&quot;Klmnopqr&quot;);
+    // PIs only exist in XML documents, so don't bother with document or
+    // foreignDoc.
+    detachedProcessingInstruction = xmlDoc.createProcessingInstruction(&quot;whippoorwill&quot;, &quot;chirp chirp chirp&quot;);
+    detachedComment = document.createComment(&quot;Stuvwxyz&quot;);
+    // Hurrah, we finally got to &quot;z&quot; at the end!
+    detachedForeignComment = foreignDoc.createComment(&quot;אריה יהודה&quot;);
+    detachedXmlComment = xmlDoc.createComment(&quot;בן חיים אליעזר&quot;);
+
+    // We should also test with document fragments that actually contain stuff
+    // . . . but, maybe later.
+    docfrag = document.createDocumentFragment();
+    foreignDocfrag = foreignDoc.createDocumentFragment();
+    xmlDocfrag = xmlDoc.createDocumentFragment();
+
+    xmlElement = xmlDoc.createElement(&quot;igiveuponcreativenames&quot;);
+    xmlTextNode = xmlDoc.createTextNode(&quot;do re mi fa so la ti&quot;);
+    xmlElement.appendChild(xmlTextNode);
+    processingInstruction = xmlDoc.createProcessingInstruction(&quot;somePI&quot;, 'Did you know that &quot;:syn sync fromstart&quot; is very useful when using vim to edit large amounts of JavaScript embedded in HTML?');
+    xmlDoc.appendChild(xmlElement);
+    xmlDoc.appendChild(processingInstruction);
+    xmlComment = xmlDoc.createComment(&quot;I maliciously created a comment that will break incautious XML serializers, but Firefox threw an exception, so all I got was this lousy T-shirt&quot;);
+    xmlDoc.appendChild(xmlComment);
+
+    comment = document.createComment(&quot;Alphabet soup?&quot;);
+    testDiv.appendChild(comment);
+
+    foreignComment = foreignDoc.createComment('&quot;Commenter&quot; and &quot;commentator&quot; mean different things.  I\'ve seen non-native speakers trip up on this.');
+    foreignDoc.appendChild(foreignComment);
+    foreignTextNode = foreignDoc.createTextNode(&quot;I admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now.&quot;);
+    foreignDoc.body.appendChild(foreignTextNode);
+
+    doctype = document.doctype;
+    foreignDoctype = foreignDoc.doctype;
+
+    testRangesShort = [
+        // Various ranges within the text node children of different
+        // paragraphs.  All should be valid.
+        &quot;[paras[0].firstChild, 0, paras[0].firstChild, 0]&quot;,
+        &quot;[paras[0].firstChild, 0, paras[0].firstChild, 1]&quot;,
+        &quot;[paras[0].firstChild, 2, paras[0].firstChild, 8]&quot;,
+        &quot;[paras[0].firstChild, 2, paras[0].firstChild, 9]&quot;,
+        &quot;[paras[1].firstChild, 0, paras[1].firstChild, 0]&quot;,
+        &quot;[paras[1].firstChild, 2, paras[1].firstChild, 9]&quot;,
+        &quot;[detachedPara1.firstChild, 0, detachedPara1.firstChild, 0]&quot;,
+        &quot;[detachedPara1.firstChild, 2, detachedPara1.firstChild, 8]&quot;,
+        &quot;[foreignPara1.firstChild, 0, foreignPara1.firstChild, 0]&quot;,
+        &quot;[foreignPara1.firstChild, 2, foreignPara1.firstChild, 8]&quot;,
+        // Now try testing some elements, not just text nodes.
+        &quot;[document.documentElement, 0, document.documentElement, 1]&quot;,
+        &quot;[document.documentElement, 0, document.documentElement, 2]&quot;,
+        &quot;[document.documentElement, 1, document.documentElement, 2]&quot;,
+        &quot;[document.head, 1, document.head, 1]&quot;,
+        &quot;[document.body, 4, document.body, 5]&quot;,
+        &quot;[foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]&quot;,
+        &quot;[paras[0], 0, paras[0], 1]&quot;,
+        &quot;[detachedPara1, 0, detachedPara1, 1]&quot;,
+        // Now try some ranges that span elements.
+        &quot;[paras[0].firstChild, 0, paras[1].firstChild, 0]&quot;,
+        &quot;[paras[0].firstChild, 0, paras[1].firstChild, 8]&quot;,
+        &quot;[paras[0].firstChild, 3, paras[3], 1]&quot;,
+        // How about something that spans a node and its descendant?
+        &quot;[paras[0], 0, paras[0].firstChild, 7]&quot;,
+        &quot;[testDiv, 2, paras[4], 1]&quot;,
+        // Then a few more interesting things just for good measure.
+        &quot;[document, 0, document, 1]&quot;,
+        &quot;[document, 0, document, 2]&quot;,
+        &quot;[comment, 2, comment, 3]&quot;,
+        &quot;[testDiv, 0, comment, 5]&quot;,
+        &quot;[foreignDoc, 1, foreignComment, 2]&quot;,
+        &quot;[foreignDoc.body, 0, foreignTextNode, 36]&quot;,
+        &quot;[xmlDoc, 1, xmlComment, 0]&quot;,
+        &quot;[detachedTextNode, 0, detachedTextNode, 8]&quot;,
+        &quot;[detachedForeignTextNode, 0, detachedForeignTextNode, 8]&quot;,
+        &quot;[detachedXmlTextNode, 0, detachedXmlTextNode, 8]&quot;,
+        &quot;[detachedComment, 3, detachedComment, 4]&quot;,
+        &quot;[detachedForeignComment, 0, detachedForeignComment, 1]&quot;,
+        &quot;[detachedXmlComment, 2, detachedXmlComment, 6]&quot;,
+        &quot;[docfrag, 0, docfrag, 0]&quot;,
+        &quot;[processingInstruction, 0, processingInstruction, 4]&quot;,
+    ];
+
+    testRanges = testRangesShort.concat([
+        &quot;[paras[1].firstChild, 0, paras[1].firstChild, 1]&quot;,
+        &quot;[paras[1].firstChild, 2, paras[1].firstChild, 8]&quot;,
+        &quot;[detachedPara1.firstChild, 0, detachedPara1.firstChild, 1]&quot;,
+        &quot;[foreignPara1.firstChild, 0, foreignPara1.firstChild, 1]&quot;,
+        &quot;[foreignDoc.head, 1, foreignDoc.head, 1]&quot;,
+        &quot;[foreignDoc.body, 0, foreignDoc.body, 0]&quot;,
+        &quot;[paras[0], 0, paras[0], 0]&quot;,
+        &quot;[detachedPara1, 0, detachedPara1, 0]&quot;,
+        &quot;[testDiv, 1, paras[2].firstChild, 5]&quot;,
+        &quot;[document.documentElement, 1, document.body, 0]&quot;,
+        &quot;[foreignDoc.documentElement, 1, foreignDoc.body, 0]&quot;,
+        &quot;[document, 1, document, 2]&quot;,
+        &quot;[paras[2].firstChild, 4, comment, 2]&quot;,
+        &quot;[paras[3], 1, comment, 8]&quot;,
+        &quot;[foreignDoc, 0, foreignDoc, 0]&quot;,
+        &quot;[xmlDoc, 0, xmlDoc, 0]&quot;,
+        &quot;[detachedForeignTextNode, 7, detachedForeignTextNode, 7]&quot;,
+        &quot;[detachedXmlTextNode, 7, detachedXmlTextNode, 7]&quot;,
+        &quot;[detachedComment, 5, detachedComment, 5]&quot;,
+        &quot;[detachedForeignComment, 4, detachedForeignComment, 4]&quot;,
+        &quot;[foreignDocfrag, 0, foreignDocfrag, 0]&quot;,
+        &quot;[xmlDocfrag, 0, xmlDocfrag, 0]&quot;,
+    ]);
+
+    testPoints = [
+        // Various positions within the page, some invalid.  Remember that
+        // paras[0] is visible, and paras[1] is display: none.
+        &quot;[paras[0].firstChild, -1]&quot;,
+        &quot;[paras[0].firstChild, 0]&quot;,
+        &quot;[paras[0].firstChild, 1]&quot;,
+        &quot;[paras[0].firstChild, 2]&quot;,
+        &quot;[paras[0].firstChild, 8]&quot;,
+        &quot;[paras[0].firstChild, 9]&quot;,
+        &quot;[paras[0].firstChild, 10]&quot;,
+        &quot;[paras[0].firstChild, 65535]&quot;,
+        &quot;[paras[1].firstChild, -1]&quot;,
+        &quot;[paras[1].firstChild, 0]&quot;,
+        &quot;[paras[1].firstChild, 1]&quot;,
+        &quot;[paras[1].firstChild, 2]&quot;,
+        &quot;[paras[1].firstChild, 8]&quot;,
+        &quot;[paras[1].firstChild, 9]&quot;,
+        &quot;[paras[1].firstChild, 10]&quot;,
+        &quot;[paras[1].firstChild, 65535]&quot;,
+        &quot;[detachedPara1.firstChild, 0]&quot;,
+        &quot;[detachedPara1.firstChild, 1]&quot;,
+        &quot;[detachedPara1.firstChild, 8]&quot;,
+        &quot;[detachedPara1.firstChild, 9]&quot;,
+        &quot;[foreignPara1.firstChild, 0]&quot;,
+        &quot;[foreignPara1.firstChild, 1]&quot;,
+        &quot;[foreignPara1.firstChild, 8]&quot;,
+        &quot;[foreignPara1.firstChild, 9]&quot;,
+        // Now try testing some elements, not just text nodes.
+        &quot;[document.documentElement, -1]&quot;,
+        &quot;[document.documentElement, 0]&quot;,
+        &quot;[document.documentElement, 1]&quot;,
+        &quot;[document.documentElement, 2]&quot;,
+        &quot;[document.documentElement, 7]&quot;,
+        &quot;[document.head, 1]&quot;,
+        &quot;[document.body, 3]&quot;,
+        &quot;[foreignDoc.documentElement, 0]&quot;,
+        &quot;[foreignDoc.documentElement, 1]&quot;,
+        &quot;[foreignDoc.head, 0]&quot;,
+        &quot;[foreignDoc.body, 1]&quot;,
+        &quot;[paras[0], 0]&quot;,
+        &quot;[paras[0], 1]&quot;,
+        &quot;[paras[0], 2]&quot;,
+        &quot;[paras[1], 0]&quot;,
+        &quot;[paras[1], 1]&quot;,
+        &quot;[paras[1], 2]&quot;,
+        &quot;[detachedPara1, 0]&quot;,
+        &quot;[detachedPara1, 1]&quot;,
+        &quot;[testDiv, 0]&quot;,
+        &quot;[testDiv, 3]&quot;,
+        // Then a few more interesting things just for good measure.
+        &quot;[document, -1]&quot;,
+        &quot;[document, 0]&quot;,
+        &quot;[document, 1]&quot;,
+        &quot;[document, 2]&quot;,
+        &quot;[document, 3]&quot;,
+        &quot;[comment, -1]&quot;,
+        &quot;[comment, 0]&quot;,
+        &quot;[comment, 4]&quot;,
+        &quot;[comment, 96]&quot;,
+        &quot;[foreignDoc, 0]&quot;,
+        &quot;[foreignDoc, 1]&quot;,
+        &quot;[foreignComment, 2]&quot;,
+        &quot;[foreignTextNode, 0]&quot;,
+        &quot;[foreignTextNode, 36]&quot;,
+        &quot;[xmlDoc, -1]&quot;,
+        &quot;[xmlDoc, 0]&quot;,
+        &quot;[xmlDoc, 1]&quot;,
+        &quot;[xmlDoc, 5]&quot;,
+        &quot;[xmlComment, 0]&quot;,
+        &quot;[xmlComment, 4]&quot;,
+        &quot;[processingInstruction, 0]&quot;,
+        &quot;[processingInstruction, 5]&quot;,
+        &quot;[processingInstruction, 9]&quot;,
+        &quot;[detachedTextNode, 0]&quot;,
+        &quot;[detachedTextNode, 8]&quot;,
+        &quot;[detachedForeignTextNode, 0]&quot;,
+        &quot;[detachedForeignTextNode, 8]&quot;,
+        &quot;[detachedXmlTextNode, 0]&quot;,
+        &quot;[detachedXmlTextNode, 8]&quot;,
+        &quot;[detachedProcessingInstruction, 12]&quot;,
+        &quot;[detachedComment, 3]&quot;,
+        &quot;[detachedComment, 5]&quot;,
+        &quot;[detachedForeignComment, 0]&quot;,
+        &quot;[detachedForeignComment, 4]&quot;,
+        &quot;[detachedXmlComment, 2]&quot;,
+        &quot;[docfrag, 0]&quot;,
+        &quot;[foreignDocfrag, 0]&quot;,
+        &quot;[xmlDocfrag, 0]&quot;,
+        &quot;[doctype, 0]&quot;,
+        &quot;[doctype, -17]&quot;,
+        &quot;[doctype, 1]&quot;,
+        &quot;[foreignDoctype, 0]&quot;,
+        &quot;[xmlDoctype, 0]&quot;,
+    ];
+
+    testNodesShort = [
+        &quot;paras[0]&quot;,
+        &quot;paras[0].firstChild&quot;,
+        &quot;paras[1].firstChild&quot;,
+        &quot;foreignPara1&quot;,
+        &quot;foreignPara1.firstChild&quot;,
+        &quot;detachedPara1&quot;,
+        &quot;detachedPara1.firstChild&quot;,
+        &quot;document&quot;,
+        &quot;detachedDiv&quot;,
+        &quot;foreignDoc&quot;,
+        &quot;foreignPara2&quot;,
+        &quot;xmlDoc&quot;,
+        &quot;xmlElement&quot;,
+        &quot;detachedTextNode&quot;,
+        &quot;foreignTextNode&quot;,
+        &quot;processingInstruction&quot;,
+        &quot;detachedProcessingInstruction&quot;,
+        &quot;comment&quot;,
+        &quot;detachedComment&quot;,
+        &quot;docfrag&quot;,
+        &quot;doctype&quot;,
+        &quot;foreignDoctype&quot;,
+    ];
+
+    testNodes = testNodesShort.concat([
+        &quot;paras[1]&quot;,
+        &quot;detachedPara2&quot;,
+        &quot;detachedPara2.firstChild&quot;,
+        &quot;testDiv&quot;,
+        &quot;detachedXmlElement&quot;,
+        &quot;detachedForeignTextNode&quot;,
+        &quot;xmlTextNode&quot;,
+        &quot;detachedXmlTextNode&quot;,
+        &quot;xmlComment&quot;,
+        &quot;foreignComment&quot;,
+        &quot;detachedForeignComment&quot;,
+        &quot;detachedXmlComment&quot;,
+        &quot;foreignDocfrag&quot;,
+        &quot;xmlDocfrag&quot;,
+        &quot;xmlDoctype&quot;,
+    ]);
+}
+if (&quot;setup&quot; in window) {
+    setup(setupRangeTests);
+} else {
+    // Presumably we're running from within an iframe or something
+    setupRangeTests();
+}
+
+/**
+ * The &quot;length&quot; of a node as defined by the Ranges section of DOM4.
+ */
+function nodeLength(node) {
+    // &quot;The length of a node node depends on node:
+    //
+    // &quot;DocumentType
+    //   &quot;0.&quot;
+    if (node.nodeType == Node.DOCUMENT_TYPE_NODE) {
+        return 0;
+    }
+    // &quot;Text
+    // &quot;ProcessingInstruction
+    // &quot;Comment
+    //   &quot;Its length attribute value.&quot;
+    // Browsers don't historically support the length attribute on
+    // ProcessingInstruction, so to avoid spurious failures, do
+    // node.data.length instead of node.length.
+    if (node.nodeType == Node.TEXT_NODE || node.nodeType == Node.PROCESSING_INSTRUCTION_NODE || node.nodeType == Node.COMMENT_NODE) {
+        return node.data.length;
+    }
+    // &quot;Any other node
+    //   &quot;Its number of children.&quot;
+    return node.childNodes.length;
+}
+
+/**
+ * Returns the furthest ancestor of a Node as defined by the spec.
+ */
+function furthestAncestor(node) {
+    var root = node;
+    while (root.parentNode != null) {
+        root = root.parentNode;
+    }
+    return root;
+}
+
+/**
+ * &quot;The ancestor containers of a Node are the Node itself and all its
+ * ancestors.&quot;
+ *
+ * Is node1 an ancestor container of node2?
+ */
+function isAncestorContainer(node1, node2) {
+    return node1 == node2 ||
+        (node2.compareDocumentPosition(node1) &amp; Node.DOCUMENT_POSITION_CONTAINS);
+}
+
+/**
+ * Returns the first Node that's after node in tree order, or null if node is
+ * the last Node.
+ */
+function nextNode(node) {
+    if (node.hasChildNodes()) {
+        return node.firstChild;
+    }
+    return nextNodeDescendants(node);
+}
+
+/**
+ * Returns the last Node that's before node in tree order, or null if node is
+ * the first Node.
+ */
+function previousNode(node) {
+    if (node.previousSibling) {
+        node = node.previousSibling;
+        while (node.hasChildNodes()) {
+            node = node.lastChild;
+        }
+        return node;
+    }
+    return node.parentNode;
+}
+
+/**
+ * Returns the next Node that's after node and all its descendants in tree
+ * order, or null if node is the last Node or an ancestor of it.
+ */
+function nextNodeDescendants(node) {
+    while (node &amp;&amp; !node.nextSibling) {
+        node = node.parentNode;
+    }
+    if (!node) {
+        return null;
+    }
+    return node.nextSibling;
+}
+
+/**
+ * Returns the ownerDocument of the Node, or the Node itself if it's a
+ * Document.
+ */
+function ownerDocument(node) {
+    return node.nodeType == Node.DOCUMENT_NODE
+        ? node
+        : node.ownerDocument;
+}
+
+/**
+ * Returns true if ancestor is an ancestor of descendant, false otherwise.
+ */
+function isAncestor(ancestor, descendant) {
+    if (!ancestor || !descendant) {
+        return false;
+    }
+    while (descendant &amp;&amp; descendant != ancestor) {
+        descendant = descendant.parentNode;
+    }
+    return descendant == ancestor;
+}
+
+/**
+ * Returns true if ancestor is an inclusive ancestor of descendant, false
+ * otherwise.
+ */
+function isInclusiveAncestor(ancestor, descendant) {
+    return ancestor === descendant || isAncestor(ancestor, descendant);
+}
+
+/**
+ * Returns true if descendant is a descendant of ancestor, false otherwise.
+ */
+function isDescendant(descendant, ancestor) {
+    return isAncestor(ancestor, descendant);
+}
+
+/**
+ * Returns true if descendant is an inclusive descendant of ancestor, false
+ * otherwise.
+ */
+function isInclusiveDescendant(descendant, ancestor) {
+    return descendant === ancestor || isDescendant(descendant, ancestor);
+}
+
+/**
+ * The position of two boundary points relative to one another, as defined by
+ * the spec.
+ */
+function getPosition(nodeA, offsetA, nodeB, offsetB) {
+    // &quot;If node A is the same as node B, return equal if offset A equals offset
+    // B, before if offset A is less than offset B, and after if offset A is
+    // greater than offset B.&quot;
+    if (nodeA == nodeB) {
+        if (offsetA == offsetB) {
+            return &quot;equal&quot;;
+        }
+        if (offsetA &lt; offsetB) {
+            return &quot;before&quot;;
+        }
+        if (offsetA &gt; offsetB) {
+            return &quot;after&quot;;
+        }
+    }
+
+    // &quot;If node A is after node B in tree order, compute the position of (node
+    // B, offset B) relative to (node A, offset A). If it is before, return
+    // after. If it is after, return before.&quot;
+    if (nodeB.compareDocumentPosition(nodeA) &amp; Node.DOCUMENT_POSITION_FOLLOWING) {
+        var pos = getPosition(nodeB, offsetB, nodeA, offsetA);
+        if (pos == &quot;before&quot;) {
+            return &quot;after&quot;;
+        }
+        if (pos == &quot;after&quot;) {
+            return &quot;before&quot;;
+        }
+    }
+
+    // &quot;If node A is an ancestor of node B:&quot;
+    if (nodeB.compareDocumentPosition(nodeA) &amp; Node.DOCUMENT_POSITION_CONTAINS) {
+        // &quot;Let child equal node B.&quot;
+        var child = nodeB;
+
+        // &quot;While child is not a child of node A, set child to its parent.&quot;
+        while (child.parentNode != nodeA) {
+            child = child.parentNode;
+        }
+
+        // &quot;If the index of child is less than offset A, return after.&quot;
+        if (indexOf(child) &lt; offsetA) {
+            return &quot;after&quot;;
+        }
+    }
+
+    // &quot;Return before.&quot;
+    return &quot;before&quot;;
+}
+
+/**
+ * &quot;contained&quot; as defined by DOM Range: &quot;A Node node is contained in a range
+ * range if node's furthest ancestor is the same as range's root, and (node, 0)
+ * is after range's start, and (node, length of node) is before range's end.&quot;
+ */
+function isContained(node, range) {
+    var pos1 = getPosition(node, 0, range.startContainer, range.startOffset);
+    var pos2 = getPosition(node, nodeLength(node), range.endContainer, range.endOffset);
+
+    return furthestAncestor(node) == furthestAncestor(range.startContainer)
+        &amp;&amp; pos1 == &quot;after&quot;
+        &amp;&amp; pos2 == &quot;before&quot;;
+}
+
+/**
+ * &quot;partially contained&quot; as defined by DOM Range: &quot;A Node is partially
+ * contained in a range if it is an ancestor container of the range's start but
+ * not its end, or vice versa.&quot;
+ */
+function isPartiallyContained(node, range) {
+    var cond1 = isAncestorContainer(node, range.startContainer);
+    var cond2 = isAncestorContainer(node, range.endContainer);
+    return (cond1 &amp;&amp; !cond2) || (cond2 &amp;&amp; !cond1);
+}
+
+/**
+ * Index of a node as defined by the spec.
+ */
+function indexOf(node) {
+    if (!node.parentNode) {
+        // No preceding sibling nodes, right?
+        return 0;
+    }
+    var i = 0;
+    while (node != node.parentNode.childNodes[i]) {
+        i++;
+    }
+    return i;
+}
+
+/**
+ * extractContents() implementation, following the spec.  If an exception is
+ * supposed to be thrown, will return a string with the name (e.g.,
+ * &quot;HIERARCHY_REQUEST_ERR&quot;) instead of a document fragment.  It might also
+ * return an arbitrary human-readable string if a condition is hit that implies
+ * a spec bug.
+ */
+function myExtractContents(range) {
+    // &quot;If the context object's detached flag is set, raise an
+    // INVALID_STATE_ERR exception and abort these steps.&quot;
+    try {
+        range.collapsed;
+    } catch (e) {
+        return &quot;INVALID_STATE_ERR&quot;;
+    }
+
+    // &quot;Let frag be a new DocumentFragment whose ownerDocument is the same as
+    // the ownerDocument of the context object's start node.&quot;
+    var ownerDoc = range.startContainer.nodeType == Node.DOCUMENT_NODE
+        ? range.startContainer
+        : range.startContainer.ownerDocument;
+    var frag = ownerDoc.createDocumentFragment();
+
+    // &quot;If the context object's start and end are the same, abort this method,
+    // returning frag.&quot;
+    if (range.startContainer == range.endContainer
+    &amp;&amp; range.startOffset == range.endOffset) {
+        return frag;
+    }
+
+    // &quot;Let original start node, original start offset, original end node, and
+    // original end offset be the context object's start and end nodes and
+    // offsets, respectively.&quot;
+    var originalStartNode = range.startContainer;
+    var originalStartOffset = range.startOffset;
+    var originalEndNode = range.endContainer;
+    var originalEndOffset = range.endOffset;
+
+    // &quot;If original start node and original end node are the same, and they are
+    // a Text or Comment node:&quot;
+    if (range.startContainer == range.endContainer
+    &amp;&amp; (range.startContainer.nodeType == Node.TEXT_NODE
+    || range.startContainer.nodeType == Node.COMMENT_NODE)) {
+        // &quot;Let clone be the result of calling cloneNode(false) on original
+        // start node.&quot;
+        var clone = originalStartNode.cloneNode(false);
+
+        // &quot;Set the data of clone to the result of calling
+        // substringData(original start offset, original end offset − original
+        // start offset) on original start node.&quot;
+        clone.data = originalStartNode.substringData(originalStartOffset,
+            originalEndOffset - originalStartOffset);
+
+        // &quot;Append clone as the last child of frag.&quot;
+        frag.appendChild(clone);
+
+        // &quot;Call deleteData(original start offset, original end offset −
+        // original start offset) on original start node.&quot;
+        originalStartNode.deleteData(originalStartOffset,
+            originalEndOffset - originalStartOffset);
+
+        // &quot;Abort this method, returning frag.&quot;
+        return frag;
+    }
+
+    // &quot;Let common ancestor equal original start node.&quot;
+    var commonAncestor = originalStartNode;
+
+    // &quot;While common ancestor is not an ancestor container of original end
+    // node, set common ancestor to its own parent.&quot;
+    while (!isAncestorContainer(commonAncestor, originalEndNode)) {
+        commonAncestor = commonAncestor.parentNode;
+    }
+
+    // &quot;If original start node is an ancestor container of original end node,
+    // let first partially contained child be null.&quot;
+    var firstPartiallyContainedChild;
+    if (isAncestorContainer(originalStartNode, originalEndNode)) {
+        firstPartiallyContainedChild = null;
+    // &quot;Otherwise, let first partially contained child be the first child of
+    // common ancestor that is partially contained in the context object.&quot;
+    } else {
+        for (var i = 0; i &lt; commonAncestor.childNodes.length; i++) {
+            if (isPartiallyContained(commonAncestor.childNodes[i], range)) {
+                firstPartiallyContainedChild = commonAncestor.childNodes[i];
+                break;
+            }
+        }
+        if (!firstPartiallyContainedChild) {
+            throw &quot;Spec bug: no first partially contained child!&quot;;
+        }
+    }
+
+    // &quot;If original end node is an ancestor container of original start node,
+    // let last partially contained child be null.&quot;
+    var lastPartiallyContainedChild;
+    if (isAncestorContainer(originalEndNode, originalStartNode)) {
+        lastPartiallyContainedChild = null;
+    // &quot;Otherwise, let last partially contained child be the last child of
+    // common ancestor that is partially contained in the context object.&quot;
+    } else {
+        for (var i = commonAncestor.childNodes.length - 1; i &gt;= 0; i--) {
+            if (isPartiallyContained(commonAncestor.childNodes[i], range)) {
+                lastPartiallyContainedChild = commonAncestor.childNodes[i];
+                break;
+            }
+        }
+        if (!lastPartiallyContainedChild) {
+            throw &quot;Spec bug: no last partially contained child!&quot;;
+        }
+    }
+
+    // &quot;Let contained children be a list of all children of common ancestor
+    // that are contained in the context object, in tree order.&quot;
+    //
+    // &quot;If any member of contained children is a DocumentType, raise a
+    // HIERARCHY_REQUEST_ERR exception and abort these steps.&quot;
+    var containedChildren = [];
+    for (var i = 0; i &lt; commonAncestor.childNodes.length; i++) {
+        if (isContained(commonAncestor.childNodes[i], range)) {
+            if (commonAncestor.childNodes[i].nodeType
+            == Node.DOCUMENT_TYPE_NODE) {
+                return &quot;HIERARCHY_REQUEST_ERR&quot;;
+            }
+            containedChildren.push(commonAncestor.childNodes[i]);
+        }
+    }
+
+    // &quot;If original start node is an ancestor container of original end node,
+    // set new node to original start node and new offset to original start
+    // offset.&quot;
+    var newNode, newOffset;
+    if (isAncestorContainer(originalStartNode, originalEndNode)) {
+        newNode = originalStartNode;
+        newOffset = originalStartOffset;
+    // &quot;Otherwise:&quot;
+    } else {
+        // &quot;Let reference node equal original start node.&quot;
+        var referenceNode = originalStartNode;
+
+        // &quot;While reference node's parent is not null and is not an ancestor
+        // container of original end node, set reference node to its parent.&quot;
+        while (referenceNode.parentNode
+        &amp;&amp; !isAncestorContainer(referenceNode.parentNode, originalEndNode)) {
+            referenceNode = referenceNode.parentNode;
+        }
+
+        // &quot;Set new node to the parent of reference node, and new offset to one
+        // plus the index of reference node.&quot;
+        newNode = referenceNode.parentNode;
+        newOffset = 1 + indexOf(referenceNode);
+    }
+
+    // &quot;If first partially contained child is a Text or Comment node:&quot;
+    if (firstPartiallyContainedChild
+    &amp;&amp; (firstPartiallyContainedChild.nodeType == Node.TEXT_NODE
+    || firstPartiallyContainedChild.nodeType == Node.COMMENT_NODE)) {
+        // &quot;Let clone be the result of calling cloneNode(false) on original
+        // start node.&quot;
+        var clone = originalStartNode.cloneNode(false);
+
+        // &quot;Set the data of clone to the result of calling substringData() on
+        // original start node, with original start offset as the first
+        // argument and (length of original start node − original start offset)
+        // as the second.&quot;
+        clone.data = originalStartNode.substringData(originalStartOffset,
+            nodeLength(originalStartNode) - originalStartOffset);
+
+        // &quot;Append clone as the last child of frag.&quot;
+        frag.appendChild(clone);
+
+        // &quot;Call deleteData() on original start node, with original start
+        // offset as the first argument and (length of original start node −
+        // original start offset) as the second.&quot;
+        originalStartNode.deleteData(originalStartOffset,
+            nodeLength(originalStartNode) - originalStartOffset);
+    // &quot;Otherwise, if first partially contained child is not null:&quot;
+    } else if (firstPartiallyContainedChild) {
+        // &quot;Let clone be the result of calling cloneNode(false) on first
+        // partially contained child.&quot;
+        var clone = firstPartiallyContainedChild.cloneNode(false);
+
+        // &quot;Append clone as the last child of frag.&quot;
+        frag.appendChild(clone);
+
+        // &quot;Let subrange be a new Range whose start is (original start node,
+        // original start offset) and whose end is (first partially contained
+        // child, length of first partially contained child).&quot;
+        var subrange = ownerDoc.createRange();
+        subrange.setStart(originalStartNode, originalStartOffset);
+        subrange.setEnd(firstPartiallyContainedChild,
+            nodeLength(firstPartiallyContainedChild));
+
+        // &quot;Let subfrag be the result of calling extractContents() on
+        // subrange.&quot;
+        var subfrag = myExtractContents(subrange);
+
+        // &quot;For each child of subfrag, in order, append that child to clone as
+        // its last child.&quot;
+        for (var i = 0; i &lt; subfrag.childNodes.length; i++) {
+            clone.appendChild(subfrag.childNodes[i]);
+        }
+    }
+
+    // &quot;For each contained child in contained children, append contained child
+    // as the last child of frag.&quot;
+    for (var i = 0; i &lt; containedChildren.length; i++) {
+        frag.appendChild(containedChildren[i]);
+    }
+
+    // &quot;If last partially contained child is a Text or Comment node:&quot;
+    if (lastPartiallyContainedChild
+    &amp;&amp; (lastPartiallyContainedChild.nodeType == Node.TEXT_NODE
+    || lastPartiallyContainedChild.nodeType == Node.COMMENT_NODE)) {
+        // &quot;Let clone be the result of calling cloneNode(false) on original
+        // end node.&quot;
+        var clone = originalEndNode.cloneNode(false);
+
+        // &quot;Set the data of clone to the result of calling substringData(0,
+        // original end offset) on original end node.&quot;
+        clone.data = originalEndNode.substringData(0, originalEndOffset);
+
+        // &quot;Append clone as the last child of frag.&quot;
+        frag.appendChild(clone);
+
+        // &quot;Call deleteData(0, original end offset) on original end node.&quot;
+        originalEndNode.deleteData(0, originalEndOffset);
+    // &quot;Otherwise, if last partially contained child is not null:&quot;
+    } else if (lastPartiallyContainedChild) {
+        // &quot;Let clone be the result of calling cloneNode(false) on last
+        // partially contained child.&quot;
+        var clone = lastPartiallyContainedChild.cloneNode(false);
+
+        // &quot;Append clone as the last child of frag.&quot;
+        frag.appendChild(clone);
+
+        // &quot;Let subrange be a new Range whose start is (last partially
+        // contained child, 0) and whose end is (original end node, original
+        // end offset).&quot;
+        var subrange = ownerDoc.createRange();
+        subrange.setStart(lastPartiallyContainedChild, 0);
+        subrange.setEnd(originalEndNode, originalEndOffset);
+
+        // &quot;Let subfrag be the result of calling extractContents() on
+        // subrange.&quot;
+        var subfrag = myExtractContents(subrange);
+
+        // &quot;For each child of subfrag, in order, append that child to clone as
+        // its last child.&quot;
+        for (var i = 0; i &lt; subfrag.childNodes.length; i++) {
+            clone.appendChild(subfrag.childNodes[i]);
+        }
+    }
+
+    // &quot;Set the context object's start and end to (new node, new offset).&quot;
+    range.setStart(newNode, newOffset);
+    range.setEnd(newNode, newOffset);
+
+    // &quot;Return frag.&quot;
+    return frag;
+}
+
+/**
+ * insertNode() implementation, following the spec.  If an exception is meant
+ * to be thrown, will return a string with the expected exception name, for
+ * instance &quot;HIERARCHY_REQUEST_ERR&quot;.
+ */
+function myInsertNode(range, node) {
+    // &quot;If range's start node is either a ProcessingInstruction or Comment
+    // node, or a Text node whose parent is null, throw an
+    // &quot;HierarchyRequestError&quot; exception and terminate these steps.&quot;
+    if (range.startContainer.nodeType == Node.PROCESSING_INSTRUCTION_NODE
+            || range.startContainer.nodeType == Node.COMMENT_NODE
+            || (range.startContainer.nodeType == Node.TEXT_NODE
+                &amp;&amp; !range.startContainer.parentNode)) {
+                    return &quot;HIERARCHY_REQUEST_ERR&quot;;
+    }
+
+    // &quot;Let referenceNode be null.&quot;
+    var referenceNode = null;
+
+    // &quot;If range's start node is a Text node, set referenceNode to that Text node.&quot;
+    if (range.startContainer.nodeType == Node.TEXT_NODE) {
+        referenceNode = range.startContainer;
+
+        // &quot;Otherwise, set referenceNode to the child of start node whose index is
+        // start offset, and null if there is no such child.&quot;
+    } else {
+        if (range.startOffset &lt; range.startContainer.childNodes.length) {
+            referenceNode = range.startContainer.childNodes[range.startOffset];
+        } else {
+            referenceNode = null;
+        }
+    }
+
+    // &quot;Let parent be range's start node if referenceNode is null, and
+    // referenceNode's parent otherwise.&quot;
+    var parent_ = referenceNode === null ? range.startContainer :
+        referenceNode.parentNode;
+
+    // &quot;Ensure pre-insertion validity of node into parent before
+    // referenceNode.&quot;
+    var error = ensurePreInsertionValidity(node, parent_, referenceNode);
+    if (error) {
+        return error;
+    }
+
+    // &quot;If range's start node is a Text node, set referenceNode to the result
+    // of splitting it with offset range's start offset.&quot;
+    if (range.startContainer.nodeType == Node.TEXT_NODE) {
+        referenceNode = range.startContainer.splitText(range.startOffset);
+    }
+
+    // &quot;If node is referenceNode, set referenceNode to its next sibling.&quot;
+    if (node == referenceNode) {
+        referenceNode = referenceNode.nextSibling;
+    }
+
+    // &quot;If node's parent is not null, remove node from its parent.&quot;
+    if (node.parentNode) {
+        node.parentNode.removeChild(node);
+    }
+
+    // &quot;Let newOffset be parent's length if referenceNode is null, and
+    // referenceNode's index otherwise.&quot;
+    var newOffset = referenceNode === null ? nodeLength(parent_) :
+        indexOf(referenceNode);
+
+    // &quot;Increase newOffset by node's length if node is a DocumentFragment node,
+    // and one otherwise.&quot;
+    newOffset += node.nodeType == Node.DOCUMENT_FRAGMENT_NODE ?
+        nodeLength(node) : 1;
+
+    // &quot;Pre-insert node into parent before referenceNode.&quot;
+    parent_.insertBefore(node, referenceNode);
+
+    // &quot;If range's start and end are the same, set range's end to (parent,
+    // newOffset).&quot;
+    if (range.startContainer == range.endContainer
+    &amp;&amp; range.startOffset == range.endOffset) {
+        range.setEnd(parent_, newOffset);
+    }
+}
+
+// To make filter() calls more readable
+function isElement(node) {
+    return node.nodeType == Node.ELEMENT_NODE;
+}
+
+function isText(node) {
+    return node.nodeType == Node.TEXT_NODE;
+}
+
+function isDoctype(node) {
+    return node.nodeType == Node.DOCUMENT_TYPE_NODE;
+}
+
+function ensurePreInsertionValidity(node, parent_, child) {
+    // &quot;If parent is not a Document, DocumentFragment, or Element node, throw a
+    // HierarchyRequestError.&quot;
+    if (parent_.nodeType != Node.DOCUMENT_NODE
+            &amp;&amp; parent_.nodeType != Node.DOCUMENT_FRAGMENT_NODE
+            &amp;&amp; parent_.nodeType != Node.ELEMENT_NODE) {
+                return &quot;HIERARCHY_REQUEST_ERR&quot;;
+    }
+
+    // &quot;If node is a host-including inclusive ancestor of parent, throw a
+    // HierarchyRequestError.&quot;
+    //
+    // XXX Does not account for host
+    if (isInclusiveAncestor(node, parent_)) {
+        return &quot;HIERARCHY_REQUEST_ERR&quot;;
+    }
+
+    // &quot;If child is not null and its parent is not parent, throw a NotFoundError
+    // exception.&quot;
+    if (child &amp;&amp; child.parentNode != parent_) {
+        return &quot;NOT_FOUND_ERR&quot;;
+    }
+
+    // &quot;If node is not a DocumentFragment, DocumentType, Element, Text,
+    // ProcessingInstruction, or Comment node, throw a HierarchyRequestError.&quot;
+    if (node.nodeType != Node.DOCUMENT_FRAGMENT_NODE
+            &amp;&amp; node.nodeType != Node.DOCUMENT_TYPE_NODE
+            &amp;&amp; node.nodeType != Node.ELEMENT_NODE
+            &amp;&amp; node.nodeType != Node.TEXT_NODE
+            &amp;&amp; node.nodeType != Node.PROCESSING_INSTRUCTION_NODE
+            &amp;&amp; node.nodeType != Node.COMMENT_NODE) {
+                return &quot;HIERARCHY_REQUEST_ERR&quot;;
+    }
+
+    // &quot;If either node is a Text node and parent is a document, or node is a
+    // doctype and parent is not a document, throw a HierarchyRequestError.&quot;
+    if ((node.nodeType == Node.TEXT_NODE
+                &amp;&amp; parent_.nodeType == Node.DOCUMENT_NODE)
+            || (node.nodeType == Node.DOCUMENT_TYPE_NODE
+                &amp;&amp; parent_.nodeType != Node.DOCUMENT_NODE)) {
+                    return &quot;HIERARCHY_REQUEST_ERR&quot;;
+    }
+
+    // &quot;If parent is a document, and any of the statements below, switched on
+    // node, are true, throw a HierarchyRequestError.&quot;
+    if (parent_.nodeType == Node.DOCUMENT_NODE) {
+        switch (node.nodeType) {
+        case Node.DOCUMENT_FRAGMENT_NODE:
+            // &quot;If node has more than one element child or has a Text node
+            // child.  Otherwise, if node has one element child and either
+            // parent has an element child, child is a doctype, or child is not
+            // null and a doctype is following child.&quot;
+            if ([].filter.call(node.childNodes, isElement).length &gt; 1) {
+                return &quot;HIERARCHY_REQUEST_ERR&quot;;
+            }
+
+            if ([].some.call(node.childNodes, isText)) {
+                return &quot;HIERARCHY_REQUEST_ERR&quot;;
+            }
+
+            if ([].filter.call(node.childNodes, isElement).length == 1) {
+                if ([].some.call(parent_.childNodes, isElement)) {
+                    return &quot;HIERARCHY_REQUEST_ERR&quot;;
+                }
+
+                if (child &amp;&amp; child.nodeType == Node.DOCUMENT_TYPE_NODE) {
+                    return &quot;HIERARCHY_REQUEST_ERR&quot;;
+                }
+
+                if (child &amp;&amp; [].slice.call(parent_.childNodes, indexOf(child) + 1)
+                               .filter(isDoctype)) {
+                    return &quot;HIERARCHY_REQUEST_ERR&quot;;
+                }
+            }
+            break;
+
+        case Node.ELEMENT_NODE:
+            // &quot;parent has an element child, child is a doctype, or child is
+            // not null and a doctype is following child.&quot;
+            if ([].some.call(parent_.childNodes, isElement)) {
+                return &quot;HIERARCHY_REQUEST_ERR&quot;;
+            }
+
+            if (child.nodeType == Node.DOCUMENT_TYPE_NODE) {
+                return &quot;HIERARCHY_REQUEST_ERR&quot;;
+            }
+
+            if (child &amp;&amp; [].slice.call(parent_.childNodes, indexOf(child) + 1)
+                           .filter(isDoctype)) {
+                return &quot;HIERARCHY_REQUEST_ERR&quot;;
+            }
+            break;
+
+        case Node.DOCUMENT_TYPE_NODE:
+            // &quot;parent has a doctype child, an element is preceding child, or
+            // child is null and parent has an element child.&quot;
+            if ([].some.call(parent_.childNodes, isDoctype)) {
+                return &quot;HIERARCHY_REQUEST_ERR&quot;;
+            }
+
+            if (child &amp;&amp; [].slice.call(parent_.childNodes, 0, indexOf(child))
+                           .some(isElement)) {
+                return &quot;HIERARCHY_REQUEST_ERR&quot;;
+            }
+
+            if (!child &amp;&amp; [].some.call(parent_.childNodes, isElement)) {
+                return &quot;HIERARCHY_REQUEST_ERR&quot;;
+            }
+            break;
+        }
+    }
+}
+
+/**
+ * Asserts that two nodes are equal, in the sense of isEqualNode().  If they
+ * aren't, tries to print a relatively informative reason why not.  TODO: Move
+ * this to testharness.js?
+ */
+function assertNodesEqual(actual, expected, msg) {
+    if (!actual.isEqualNode(expected)) {
+        msg = &quot;Actual and expected mismatch for &quot; + msg + &quot;.  &quot;;
+
+        while (actual &amp;&amp; expected) {
+            assert_true(actual.nodeType === expected.nodeType
+                &amp;&amp; actual.nodeName === expected.nodeName
+                &amp;&amp; actual.nodeValue === expected.nodeValue,
+                &quot;First differing node: expected &quot; + format_value(expected)
+                + &quot;, got &quot; + format_value(actual) + &quot; [&quot; + msg + &quot;]&quot;);
+            actual = nextNode(actual);
+            expected = nextNode(expected);
+        }
+
+        assert_unreached(&quot;DOMs were not equal but we couldn't figure out why&quot;);
+    }
+}
+
+/**
+ * Given a DOMException, return the name (e.g., &quot;HIERARCHY_REQUEST_ERR&quot;).
+ */
+function getDomExceptionName(e) {
+    var ret = null;
+    for (var prop in e) {
+        if (/^[A-Z_]+_ERR$/.test(prop) &amp;&amp; e[prop] == e.code) {
+            return prop;
+        }
+    }
+
+    throw &quot;Exception seems to not be a DOMException?  &quot; + e;
+}
+
+/**
+ * Given an array of endpoint data [start container, start offset, end
+ * container, end offset], returns a Range with those endpoints.
+ */
+function rangeFromEndpoints(endpoints) {
+    // If we just use document instead of the ownerDocument of endpoints[0],
+    // WebKit will throw on setStart/setEnd.  This is a WebKit bug, but it's in
+    // range, not selection, so we don't want to fail anything for it.
+    var range = ownerDocument(endpoints[0]).createRange();
+    range.setStart(endpoints[0], endpoints[1]);
+    range.setEnd(endpoints[2], endpoints[3]);
+    return range;
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomconstantsjsfromrev189470trunkLayoutTestshttptestsw3cdomconstantsjs"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/constants.js (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/constants.js) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/constants.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/constants.js        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+function testConstants(objects, constants, msg) {
+  objects.forEach(function(arr) {
+    var o = arr[0], desc = arr[1];
+    test(function() {
+      constants.forEach(function(d) {
+        assert_true(d[0] in o, &quot;Object &quot; + o + &quot; doesn't have &quot; + d[0])
+        assert_equals(o[d[0]], d[1], &quot;Object &quot; + o + &quot; value for &quot; + d[0] + &quot; is wrong&quot;)
+      })
+    }, &quot;Constants for &quot; + msg + &quot; on &quot; + desc + &quot;.&quot;)
+  })
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventconstantsexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventconstantsexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-constants-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/Event-constants-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-constants-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-constants-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+PASS Constants for eventPhase on Event interface object. 
+PASS Constants for eventPhase on Event prototype object. 
+PASS Constants for eventPhase on Event object. 
+PASS Constants for eventPhase on CustomEvent object. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventconstantshtmlfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventconstantshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-constants.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/Event-constants.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-constants.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-constants.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Event constants&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../constants.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+var objects;
+setup(function() {
+  objects = [
+    [Event, &quot;Event interface object&quot;],
+    [Event.prototype, &quot;Event prototype object&quot;],
+    [document.createEvent(&quot;Event&quot;), &quot;Event object&quot;],
+    [document.createEvent(&quot;CustomEvent&quot;), &quot;CustomEvent object&quot;]
+  ]
+})
+testConstants(objects, [
+  [&quot;NONE&quot;, 0],
+  [&quot;CAPTURING_PHASE&quot;, 1],
+  [&quot;AT_TARGET&quot;, 2],
+  [&quot;BUBBLING_PHASE&quot;, 3]
+], &quot;eventPhase&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventconstructorsexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventconstructorsexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-constructors-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/Event-constructors-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-constructors-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-constructors-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+
+FAIL Event constructors assert_throws: function &quot;function () {
+    new Event()
+  }&quot; did not throw
+PASS Event constructors 1 
+FAIL Event constructors 2 assert_equals: expected (boolean) false but got (undefined) undefined
+FAIL Event constructors 3 assert_equals: expected (boolean) false but got (undefined) undefined
+FAIL Event constructors 4 Event is not a function. (In 'Event(&quot;test&quot;)', 'Event' is an instance of EventConstructor)
+PASS Event constructors 5 
+PASS Event constructors 6 
+PASS Event constructors 7 
+PASS Event constructors 8 
+PASS Event constructors 9 
+PASS Event constructors 10 
+PASS Event constructors 11 
+PASS Event constructors 12 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventconstructorshtmlfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventconstructorshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-constructors.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/Event-constructors.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-constructors.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-constructors.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,124 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Event constructors&lt;/title&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  assert_throws(new TypeError(), function() {
+    new Event()
+  })
+})
+test(function() {
+  var test_error = { name: &quot;test&quot; }
+  assert_throws(test_error, function() {
+    new Event({ toString: function() { throw test_error; } })
+  })
+})
+test(function() {
+  var ev = new Event(&quot;&quot;)
+  assert_equals(ev.type, &quot;&quot;)
+  assert_equals(ev.target, null)
+  assert_equals(ev.currentTarget, null)
+  assert_equals(ev.eventPhase, Event.NONE)
+  assert_equals(ev.bubbles, false)
+  assert_equals(ev.cancelable, false)
+  assert_equals(ev.defaultPrevented, false)
+  assert_equals(ev.isTrusted, false)
+  assert_true(ev.timeStamp &gt; 0)
+  assert_true(&quot;initEvent&quot; in ev)
+})
+test(function() {
+  var ev = new Event(&quot;test&quot;)
+  assert_equals(ev.type, &quot;test&quot;)
+  assert_equals(ev.target, null)
+  assert_equals(ev.currentTarget, null)
+  assert_equals(ev.eventPhase, Event.NONE)
+  assert_equals(ev.bubbles, false)
+  assert_equals(ev.cancelable, false)
+  assert_equals(ev.defaultPrevented, false)
+  assert_equals(ev.isTrusted, false)
+  assert_true(ev.timeStamp &gt; 0)
+  assert_true(&quot;initEvent&quot; in ev)
+})
+test(function() {
+  var ev = Event(&quot;test&quot;)
+  assert_equals(ev.type, &quot;test&quot;)
+  assert_equals(ev.target, null)
+  assert_equals(ev.currentTarget, null)
+  assert_equals(ev.eventPhase, Event.NONE)
+  assert_equals(ev.bubbles, false)
+  assert_equals(ev.cancelable, false)
+  assert_equals(ev.defaultPrevented, false)
+  assert_equals(ev.isTrusted, false)
+  assert_true(ev.timeStamp &gt; 0)
+  assert_true(&quot;initEvent&quot; in ev)
+})
+test(function() {
+  var ev = new Event(&quot;I am an event&quot;, { bubbles: true, cancelable: false})
+  assert_equals(ev.type, &quot;I am an event&quot;)
+  assert_equals(ev.bubbles, true)
+  assert_equals(ev.cancelable, false)
+})
+test(function() {
+  var ev = new Event(&quot;@&quot;, { bubblesIGNORED: true, cancelable: true})
+  assert_equals(ev.type, &quot;@&quot;)
+  assert_equals(ev.bubbles, false)
+  assert_equals(ev.cancelable, true)
+})
+test(function() {
+  var ev = new Event(&quot;@&quot;, { &quot;bubbles\0IGNORED&quot;: true, cancelable: true})
+  assert_equals(ev.type, &quot;@&quot;)
+  assert_equals(ev.bubbles, false)
+  assert_equals(ev.cancelable, true)
+})
+test(function() {
+  var ev = new Event(&quot;Xx&quot;, { cancelable: true})
+  assert_equals(ev.type, &quot;Xx&quot;)
+  assert_equals(ev.bubbles, false)
+  assert_equals(ev.cancelable, true)
+})
+test(function() {
+  var ev = new Event(&quot;Xx&quot;, {})
+  assert_equals(ev.type, &quot;Xx&quot;)
+  assert_equals(ev.bubbles, false)
+  assert_equals(ev.cancelable, false)
+})
+test(function() {
+  var ev = new Event(&quot;Xx&quot;, {bubbles: true, cancelable: false, sweet: &quot;x&quot;})
+  assert_equals(ev.type, &quot;Xx&quot;)
+  assert_equals(ev.bubbles, true)
+  assert_equals(ev.cancelable, false)
+  assert_equals(ev.sweet, undefined)
+})
+test(function() {
+  var called = []
+  var ev = new Event(&quot;Xx&quot;, {
+    get cancelable() {
+      called.push(&quot;cancelable&quot;)
+      return false
+    },
+    get bubbles() {
+      called.push(&quot;bubbles&quot;)
+      return true;
+    },
+    get sweet() {
+      called.push(&quot;sweet&quot;)
+      return &quot;x&quot;
+    }
+  })
+  assert_array_equals(called, [&quot;bubbles&quot;, &quot;cancelable&quot;])
+  assert_equals(ev.type, &quot;Xx&quot;)
+  assert_equals(ev.bubbles, true)
+  assert_equals(ev.cancelable, false)
+  assert_equals(ev.sweet, undefined)
+})
+test(function() {
+  var ev = new CustomEvent(&quot;$&quot;, {detail: 54, sweet: &quot;x&quot;, sweet2: &quot;x&quot;, cancelable:true})
+  assert_equals(ev.type, &quot;$&quot;)
+  assert_equals(ev.bubbles, false)
+  assert_equals(ev.cancelable, true)
+  assert_equals(ev.sweet, undefined)
+  assert_equals(ev.detail, 54)
+})
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdefaultPreventedexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventdefaultPreventedexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-defaultPrevented-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/Event-defaultPrevented-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-defaultPrevented-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-defaultPrevented-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+
+PASS When an event is created, defaultPrevented should be initialized to false. 
+PASS initEvent should work correctly (not cancelable). 
+PASS preventDefault() should not change defaultPrevented if cancelable is false. 
+PASS initEvent should work correctly (cancelable). 
+PASS preventDefault() should change defaultPrevented if cancelable is false. 
+PASS initEvent should unset defaultPrevented. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdefaultPreventedhtmlfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventdefaultPreventedhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-defaultPrevented.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/Event-defaultPrevented.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-defaultPrevented.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-defaultPrevented.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Event.defaultPrevented&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+var ev;
+test(function() {
+  ev = document.createEvent(&quot;Event&quot;);
+  assert_equals(ev.defaultPrevented, false, &quot;defaultPrevented&quot;);
+}, &quot;When an event is created, defaultPrevented should be initialized to false.&quot;);
+test(function() {
+  ev.initEvent(&quot;foo&quot;, true, false);
+  assert_equals(ev.bubbles, true, &quot;bubbles&quot;);
+  assert_equals(ev.cancelable, false, &quot;cancelable&quot;);
+  assert_equals(ev.defaultPrevented, false, &quot;defaultPrevented&quot;);
+}, &quot;initEvent should work correctly (not cancelable).&quot;);
+test(function() {
+  assert_equals(ev.cancelable, false, &quot;cancelable (before)&quot;);
+  ev.preventDefault();
+  assert_equals(ev.cancelable, false, &quot;cancelable (after)&quot;);
+  assert_equals(ev.defaultPrevented, false, &quot;defaultPrevented&quot;);
+}, &quot;preventDefault() should not change defaultPrevented if cancelable is false.&quot;);
+test(function() {
+  ev.initEvent(&quot;foo&quot;, true, true);
+  assert_equals(ev.bubbles, true, &quot;bubbles&quot;);
+  assert_equals(ev.cancelable, true, &quot;cancelable&quot;);
+  assert_equals(ev.defaultPrevented, false, &quot;defaultPrevented&quot;);
+}, &quot;initEvent should work correctly (cancelable).&quot;);
+test(function() {
+  assert_equals(ev.cancelable, true, &quot;cancelable (before)&quot;);
+  ev.preventDefault();
+  assert_equals(ev.cancelable, true, &quot;cancelable (after)&quot;);
+  assert_equals(ev.defaultPrevented, true, &quot;defaultPrevented&quot;);
+}, &quot;preventDefault() should change defaultPrevented if cancelable is false.&quot;);
+test(function() {
+  ev.initEvent(&quot;foo&quot;, true, true);
+  assert_equals(ev.bubbles, true, &quot;bubbles&quot;);
+  assert_equals(ev.cancelable, true, &quot;cancelable&quot;);
+  assert_equals(ev.defaultPrevented, false, &quot;defaultPrevented&quot;);
+}, &quot;initEvent should unset defaultPrevented.&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchbubblesfalseexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventdispatchbubblesfalseexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-bubbles-false-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/Event-dispatch-bubbles-false-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-bubbles-false-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-bubbles-false-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Event.dispatchEvent with Event.bubbles set to false. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchbubblesfalsehtmlfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventdispatchbubblesfalsehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-bubbles-false.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/Event-dispatch-bubbles-false.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-bubbles-false.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-bubbles-false.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,68 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt; Event.bubbles attribute is set to false &lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#dom-event-initevent&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#concept-event-dispatch&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;table id=&quot;table&quot; border=&quot;1&quot; style=&quot;display: none&quot;&gt;
+    &lt;tbody id=&quot;table-body&quot;&gt;
+    &lt;tr id=&quot;table-row&quot;&gt;
+        &lt;td id=&quot;table-cell&quot;&gt;Shady Grove&lt;/td&gt;
+        &lt;td&gt;Aeolian&lt;/td&gt;
+    &lt;/tr&gt;
+    &lt;tr id=&quot;parent&quot;&gt;
+        &lt;td id=&quot;target&quot;&gt;Over the river, Charlie&lt;/td&gt;
+        &lt;td&gt;Dorian&lt;/td&gt;
+    &lt;/tr&gt;
+    &lt;/tbody&gt;
+&lt;/table&gt;
+&lt;script&gt;
+test(function() {
+    var event_type = &quot;click&quot;;
+    var target = document.getElementById(&quot;target&quot;);
+    var targets = [
+        window,
+        document,
+        document.documentElement,
+        document.body,
+        document.getElementById(&quot;table&quot;),
+        document.getElementById(&quot;table-body&quot;),
+        document.getElementById(&quot;parent&quot;),
+        target,
+    ];
+    var expected_targets = targets.concat(target);
+    var phases = [
+        Event.CAPTURING_PHASE,
+        Event.CAPTURING_PHASE,
+        Event.CAPTURING_PHASE,
+        Event.CAPTURING_PHASE,
+        Event.CAPTURING_PHASE,
+        Event.CAPTURING_PHASE,
+        Event.CAPTURING_PHASE,
+        Event.AT_TARGET,
+        Event.AT_TARGET,
+    ];
+
+
+    var actual_targets = [], actual_phases = [];
+    var test_event = function(evt) {
+        actual_targets.push(evt.currentTarget);
+        actual_phases.push(evt.eventPhase);
+    }
+
+    for (var i = 0; i &lt; targets.length; i++) {
+        targets[i].addEventListener(event_type, test_event, true);
+        targets[i].addEventListener(event_type, test_event, false);
+    }
+
+    var evt = document.createEvent(&quot;Event&quot;);
+    evt.initEvent(event_type, false, true);
+
+    target.dispatchEvent(evt);
+
+    assert_array_equals(actual_targets, expected_targets, &quot;targets&quot;);
+    assert_array_equals(actual_phases, phases, &quot;phases&quot;);
+}, &quot;Event.dispatchEvent with Event.bubbles set to false.&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchhandlerschangedexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventdispatchhandlerschangedexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-handlers-changed-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/Event-dispatch-handlers-changed-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-handlers-changed-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-handlers-changed-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS  Dispatch additional events inside an event listener  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchhandlerschangedhtmlfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventdispatchhandlerschangedhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-handlers-changed.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/Event-dispatch-handlers-changed.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-handlers-changed.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-handlers-changed.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,92 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt; Dispatch additional events inside an event listener &lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#concept-event-dispatch&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+
+&lt;table id=&quot;table&quot; border=&quot;1&quot; style=&quot;display: none&quot;&gt;
+    &lt;tbody id=&quot;table-body&quot;&gt;
+    &lt;tr id=&quot;table-row&quot;&gt;
+        &lt;td id=&quot;table-cell&quot;&gt;Shady Grove&lt;/td&gt;
+        &lt;td&gt;Aeolian&lt;/td&gt;
+    &lt;/tr&gt;
+    &lt;tr id=&quot;parent&quot;&gt;
+        &lt;td id=&quot;target&quot;&gt;Over the river, Charlie&lt;/td&gt;
+        &lt;td&gt;Dorian&lt;/td&gt;
+    &lt;/tr&gt;
+    &lt;/tbody&gt;
+&lt;/table&gt;
+
+&lt;script&gt;
+async_test(function() {
+  var event_type = &quot;bar&quot;;
+  var target = document.getElementById(&quot;target&quot;);
+  var parent = document.getElementById(&quot;parent&quot;);
+  var tbody = document.getElementById(&quot;table-body&quot;);
+  var table = document.getElementById(&quot;table&quot;);
+  var body = document.body;
+  var html = document.documentElement;
+  var targets = [window, document, html, body, table, tbody, parent, target];
+  var expected_targets = [
+    window,
+    document,
+    html,
+    body,
+    table,
+    tbody,
+    parent,
+    target,
+    target,
+    parent,
+    tbody,
+    table,
+    body,
+    html,
+    document,
+    window
+  ];
+  var expected_listeners = [0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1];
+
+  var actual_targets = [], actual_listeners = [];
+  var test_event_function = function(i) {
+    return this.step_func(function(evt) {
+      actual_targets.push(evt.currentTarget);
+      actual_listeners.push(i);
+
+      if (evt.eventPhase != evt.BUBBLING_PHASE &amp;&amp; evt.currentTarget.foo != 1) {
+        evt.currentTarget.removeEventListener(event_type, event_handlers[0], true);
+        evt.currentTarget.addEventListener(event_type, event_handlers[2], true);
+        evt.currentTarget.foo = 1;
+      }
+
+      if (evt.eventPhase != evt.CAPTURING_PHASE &amp;&amp; evt.currentTarget.foo != 3) {
+        evt.currentTarget.removeEventListener(event_type, event_handlers[0], false);
+        evt.currentTarget.addEventListener(event_type, event_handlers[3], false);
+        evt.currentTarget.foo = 3;
+      }
+    });
+  }.bind(this);
+  var event_handlers = [
+    test_event_function(0),
+    test_event_function(1),
+    test_event_function(2),
+    test_event_function(3),
+  ];
+
+  for (var i = 0; i &lt; targets.length; ++i) {
+    targets[i].addEventListener(event_type, event_handlers[0], true);
+    targets[i].addEventListener(event_type, event_handlers[1], false);
+  }
+
+  var evt = document.createEvent(&quot;Event&quot;);
+  evt.initEvent(event_type, true, true);
+  target.dispatchEvent(evt);
+
+  assert_array_equals(actual_targets, expected_targets, &quot;actual_targets&quot;);
+  assert_array_equals(actual_listeners, expected_listeners, &quot;actual_listeners&quot;);
+
+  this.done();
+});
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchomittedcaptureexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventdispatchomittedcaptureexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-omitted-capture-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/Event-dispatch-omitted-capture-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-omitted-capture-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-omitted-capture-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS EventTarget.addEventListener with the capture argument omitted 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchomittedcapturehtmlfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventdispatchomittedcapturehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-omitted-capture.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/Event-dispatch-omitted-capture.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-omitted-capture.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-omitted-capture.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,70 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;EventTarget.addEventListener: capture argument omitted&lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#dom-eventtarget-addeventlistener&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#concept-event-dispatch&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;table id=&quot;table&quot; border=&quot;1&quot; style=&quot;display: none&quot;&gt;
+    &lt;tbody id=&quot;table-body&quot;&gt;
+    &lt;tr id=&quot;table-row&quot;&gt;
+        &lt;td id=&quot;table-cell&quot;&gt;Shady Grove&lt;/td&gt;
+        &lt;td&gt;Aeolian&lt;/td&gt;
+    &lt;/tr&gt;
+    &lt;tr id=&quot;parent&quot;&gt;
+        &lt;td id=&quot;target&quot;&gt;Over the river, Charlie&lt;/td&gt;
+        &lt;td&gt;Dorian&lt;/td&gt;
+    &lt;/tr&gt;
+    &lt;/tbody&gt;
+&lt;/table&gt;
+&lt;script&gt;
+test(function() {
+    var event_type = &quot;foo&quot;;
+    var target = document.getElementById(&quot;target&quot;);
+    var targets = [
+        target,
+        document.getElementById(&quot;parent&quot;),
+        document.getElementById(&quot;table-body&quot;),
+        document.getElementById(&quot;table&quot;),
+        document.body,
+        document.documentElement,
+        document,
+        window
+    ];
+    var phases = [
+        Event.AT_TARGET,
+        Event.BUBBLING_PHASE,
+        Event.BUBBLING_PHASE,
+        Event.BUBBLING_PHASE,
+        Event.BUBBLING_PHASE,
+        Event.BUBBLING_PHASE,
+        Event.BUBBLING_PHASE,
+        Event.BUBBLING_PHASE
+    ];
+
+    var actual_targets = [], actual_phases = [];
+    var test_event = function(evt) {
+        actual_targets.push(evt.currentTarget);
+        actual_phases.push(evt.eventPhase);
+    }
+
+    for (var i = 0; i &lt; targets.length; i++) {
+        targets[i].addEventListener(event_type, test_event);
+    }
+
+    var evt = document.createEvent(&quot;Event&quot;);
+    evt.initEvent(event_type, true, true);
+
+    target.dispatchEvent(evt);
+
+    for (var i = 0; i &lt; targets.length; i++) {
+        targets[i].removeEventListener(event_type, test_event);
+    }
+
+    target.dispatchEvent(evt);
+
+    assert_array_equals(actual_targets, targets, &quot;targets&quot;);
+    assert_array_equals(actual_phases, phases, &quot;phases&quot;);
+}, &quot;EventTarget.addEventListener with the capture argument omitted&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchredispatchexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventdispatchredispatchexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-redispatch-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/Event-dispatch-redispatch-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-redispatch-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-redispatch-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL EventTarget#dispatchEvent(): redispatching a native event assert_true: Should be trusted when first handled expected true got undefined
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchredispatchhtmlfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventdispatchredispatchhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-redispatch.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/Event-dispatch-redispatch.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-redispatch.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-redispatch.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=urf-8&gt;
+&lt;title&gt;EventTarget#dispatchEvent(): redispatching a native event&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script&gt;
+async_test(function() {
+  var event;
+  document.addEventListener(&quot;DOMContentLoaded&quot;, this.step_func(function(e) {
+    assert_true(e.isTrusted, &quot;Should be trusted when first handled&quot;);
+    event = e;
+  }), true);
+
+  window.onload = this.step_func_done(function() {
+    var received = 0;
+    var target = document.createElement(&quot;span&quot;);
+    target.addEventListener(&quot;DOMContentLoaded&quot;, this.step_func(function(e) {
+      assert_false(e.isTrusted, &quot;Should not be trusted during redispatching&quot;);
+      ++received;
+    }), true);
+    assert_true(event.isTrusted, &quot;Should be trusted before redispatching&quot;);
+    target.dispatchEvent(event);
+    assert_false(event.isTrusted, &quot;Should not be trusted after redispatching&quot;);
+    assert_equals(received, 1);
+  });
+});
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchreenterexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventdispatchreenterexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-reenter-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/Event-dispatch-reenter-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-reenter-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-reenter-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS  Dispatch additional events inside an event listener  
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchreenterhtmlfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventdispatchreenterhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-reenter.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/Event-dispatch-reenter.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-reenter.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-reenter.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,66 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt; Dispatch additional events inside an event listener &lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;table id=&quot;table&quot; border=&quot;1&quot; style=&quot;display: none&quot;&gt;
+    &lt;tbody id=&quot;table-body&quot;&gt;
+    &lt;tr id=&quot;table-row&quot;&gt;
+        &lt;td id=&quot;table-cell&quot;&gt;Shady Grove&lt;/td&gt;
+        &lt;td&gt;Aeolian&lt;/td&gt;
+    &lt;/tr&gt;
+    &lt;tr id=&quot;parent&quot;&gt;
+        &lt;td id=&quot;target&quot;&gt;Over the river, Charlie&lt;/td&gt;
+        &lt;td&gt;Dorian&lt;/td&gt;
+    &lt;/tr&gt;
+    &lt;/tbody&gt;
+&lt;/table&gt;
+&lt;script&gt;
+test(function() {
+    var event_type = &quot;foo&quot;;
+    var target = document.getElementById(&quot;target&quot;);
+    var parent = document.getElementById(&quot;parent&quot;);
+    var tbody = document.getElementById(&quot;table-body&quot;);
+    var table = document.getElementById(&quot;table&quot;);
+    var body = document.body;
+    var html = document.documentElement;
+    var targets = [window, document, html, body, table, tbody, parent, target];
+    var expected_targets = [
+        window, document, html, body, table,
+        target, parent, tbody,
+        table, body, html, document, window,
+        tbody, parent, target];
+    var actual_targets = [];
+    var expected_types = [
+        &quot;foo&quot;, &quot;foo&quot;, &quot;foo&quot;, &quot;foo&quot;, &quot;foo&quot;,
+        &quot;bar&quot;, &quot;bar&quot;, &quot;bar&quot;,
+        &quot;bar&quot;, &quot;bar&quot;, &quot;bar&quot;, &quot;bar&quot;, &quot;bar&quot;,
+        &quot;foo&quot;, &quot;foo&quot;, &quot;foo&quot;
+    ];
+
+    var actual_targets = [], actual_types = [];
+    var test_event = this.step_func(function(evt) {
+        actual_targets.push(evt.currentTarget);
+        actual_types.push(evt.type);
+
+        if (table == evt.currentTarget &amp;&amp; event_type == evt.type) {
+            var e = document.createEvent(&quot;Event&quot;);
+            e.initEvent(&quot;bar&quot;, true, true);
+            target.dispatchEvent(e);
+        }
+    });
+
+    for (var i = 0; i &lt; targets.length; ++i) {
+        targets[i].addEventListener(event_type, test_event, true);
+        targets[i].addEventListener(&quot;bar&quot;, test_event, false);
+    }
+
+    var evt = document.createEvent(&quot;Event&quot;);
+    evt.initEvent(event_type, false, true);
+    target.dispatchEvent(evt);
+
+    assert_array_equals(actual_targets, expected_targets, &quot;actual_targets&quot;);
+    assert_array_equals(actual_types, expected_types, &quot;actual_types&quot;);
+});
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchtargetmovedexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventdispatchtargetmovedexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-target-moved-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/Event-dispatch-target-moved-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-target-moved-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-target-moved-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Event propagation path when an element in it is moved within the DOM 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchtargetmovedhtmlfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventdispatchtargetmovedhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-target-moved.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/Event-dispatch-target-moved.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-target-moved.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-target-moved.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,73 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt; Determined event propagation path - target moved &lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#concept-event-dispatch&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;table id=&quot;table&quot; border=&quot;1&quot; style=&quot;display: none&quot;&gt;
+    &lt;tbody id=&quot;table-body&quot;&gt;
+    &lt;tr id=&quot;table-row&quot;&gt;
+        &lt;td id=&quot;table-cell&quot;&gt;Shady Grove&lt;/td&gt;
+        &lt;td&gt;Aeolian&lt;/td&gt;
+    &lt;/tr&gt;
+    &lt;tr id=&quot;parent&quot;&gt;
+        &lt;td id=&quot;target&quot;&gt;Over the river, Charlie&lt;/td&gt;
+        &lt;td&gt;Dorian&lt;/td&gt;
+    &lt;/tr&gt;
+    &lt;/tbody&gt;
+&lt;/table&gt;
+&lt;script&gt;
+test(function() {
+    var event_type = &quot;foo&quot;;
+    var target = document.getElementById(&quot;target&quot;);
+    var parent = document.getElementById(&quot;parent&quot;);
+    var tbody = document.getElementById(&quot;table-body&quot;);
+    var table = document.getElementById(&quot;table&quot;);
+    var body = document.body;
+    var html = document.documentElement;
+    var targets = [window, document, html, body, table, tbody, parent, target];
+    var expected_targets = targets.concat([target, parent, tbody, table, body, html, document, window]);
+    var phases = [
+        Event.CAPTURING_PHASE,
+        Event.CAPTURING_PHASE,
+        Event.CAPTURING_PHASE,
+        Event.CAPTURING_PHASE,
+        Event.CAPTURING_PHASE,
+        Event.CAPTURING_PHASE,
+        Event.CAPTURING_PHASE,
+        Event.AT_TARGET,
+        Event.AT_TARGET,
+        Event.BUBBLING_PHASE,
+        Event.BUBBLING_PHASE,
+        Event.BUBBLING_PHASE,
+        Event.BUBBLING_PHASE,
+        Event.BUBBLING_PHASE,
+        Event.BUBBLING_PHASE,
+        Event.BUBBLING_PHASE,
+    ];
+
+    var actual_targets = [], actual_phases = [];
+    var test_event = this.step_func(function(evt) {
+        if (parent === target.parentNode) {
+            var table_row = document.getElementById(&quot;table-row&quot;);
+            table_row.appendChild(parent.removeChild(target));
+        }
+
+        actual_targets.push(evt.currentTarget);
+        actual_phases.push(evt.eventPhase);
+    });
+
+    for (var i = 0; i &lt; targets.length; i++) {
+        targets[i].addEventListener(event_type, test_event, true);
+        targets[i].addEventListener(event_type, test_event, false);
+    }
+
+    var evt = document.createEvent(&quot;Event&quot;);
+    evt.initEvent(event_type, true, true);
+    target.dispatchEvent(evt);
+
+    assert_array_equals(actual_targets, expected_targets, &quot;targets&quot;);
+    assert_array_equals(actual_phases, phases, &quot;phases&quot;);
+}, &quot;Event propagation path when an element in it is moved within the DOM&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchtargetremovedexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventdispatchtargetremovedexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-target-removed-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/Event-dispatch-target-removed-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-target-removed-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-target-removed-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Event propagation path when an element in it is removed from the DOM 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventdispatchtargetremovedhtmlfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventdispatchtargetremovedhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-target-removed.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/Event-dispatch-target-removed.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-target-removed.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-dispatch-target-removed.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,72 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Determined event propagation path - target removed&lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#concept-event-dispatch&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;table id=&quot;table&quot; border=&quot;1&quot; style=&quot;display: none&quot;&gt;
+    &lt;tbody id=&quot;table-body&quot;&gt;
+    &lt;tr id=&quot;table-row&quot;&gt;
+        &lt;td id=&quot;table-cell&quot;&gt;Shady Grove&lt;/td&gt;
+        &lt;td&gt;Aeolian&lt;/td&gt;
+    &lt;/tr&gt;
+    &lt;tr id=&quot;parent&quot;&gt;
+        &lt;td id=&quot;target&quot;&gt;Over the river, Charlie&lt;/td&gt;
+        &lt;td&gt;Dorian&lt;/td&gt;
+    &lt;/tr&gt;
+    &lt;/tbody&gt;
+&lt;/table&gt;
+&lt;script&gt;
+test(function() {
+    var event_type = &quot;foo&quot;;
+    var target = document.getElementById(&quot;target&quot;);
+    var parent = document.getElementById(&quot;parent&quot;);
+    var tbody = document.getElementById(&quot;table-body&quot;);
+    var table = document.getElementById(&quot;table&quot;);
+    var body = document.body;
+    var html = document.documentElement;
+    var targets = [window, document, html, body, table, tbody, parent, target];
+    var expected_targets = targets.concat([target, parent, tbody, table, body, html, document, window]);
+    var phases = [
+        Event.CAPTURING_PHASE,
+        Event.CAPTURING_PHASE,
+        Event.CAPTURING_PHASE,
+        Event.CAPTURING_PHASE,
+        Event.CAPTURING_PHASE,
+        Event.CAPTURING_PHASE,
+        Event.CAPTURING_PHASE,
+        Event.AT_TARGET,
+        Event.AT_TARGET,
+        Event.BUBBLING_PHASE,
+        Event.BUBBLING_PHASE,
+        Event.BUBBLING_PHASE,
+        Event.BUBBLING_PHASE,
+        Event.BUBBLING_PHASE,
+        Event.BUBBLING_PHASE,
+        Event.BUBBLING_PHASE,
+    ];
+
+    var actual_targets = [], actual_phases = [];
+    var test_event = this.step_func(function(evt) {
+        if (parent === target.parentNode) {
+            parent.removeChild(target);
+        }
+
+        actual_targets.push(evt.currentTarget);
+        actual_phases.push(evt.eventPhase);
+    });
+
+    for (var i = 0; i &lt; targets.length; i++) {
+        targets[i].addEventListener(event_type, test_event, true);
+        targets[i].addEventListener(event_type, test_event, false);
+    }
+
+    var evt = document.createEvent(&quot;Event&quot;);
+    evt.initEvent(event_type, true, true);
+    target.dispatchEvent(evt);
+
+    assert_array_equals(actual_targets, expected_targets, &quot;targets&quot;);
+    assert_array_equals(actual_phases, phases, &quot;phases&quot;);
+}, &quot;Event propagation path when an element in it is removed from the DOM&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventinitEventexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventinitEventexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-initEvent-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/Event-initEvent-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-initEvent-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-initEvent-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+
+FAIL Properties of initEvent(type, true, true) assert_equals: isTrusted expected (boolean) false but got (undefined) undefined
+FAIL Properties of initEvent(type, true, false) assert_equals: isTrusted expected (boolean) false but got (undefined) undefined
+FAIL Properties of initEvent(type, false, true) assert_equals: isTrusted expected (boolean) false but got (undefined) undefined
+FAIL Properties of initEvent(type, false, false) assert_equals: isTrusted expected (boolean) false but got (undefined) undefined
+PASS Calling initEvent multiple times (getting type). 
+PASS Calling initEvent multiple times (not getting type). 
+PASS Calling initEvent must not have an effect during dispatching. 
+PASS Calling initEvent must unset the stop propagation flag. 
+PASS Calling initEvent during propagation. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventinitEventhtmlfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventinitEventhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-initEvent.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/Event-initEvent.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-initEvent.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-initEvent.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,121 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;Event.initEvent&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Ms2ger&quot; href=&quot;mailto:Ms2ger@gmail.com&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+var booleans = [true, false];
+booleans.forEach(function(bubbles) {
+  booleans.forEach(function(cancelable) {
+    test(function() {
+      var e = document.createEvent(&quot;Event&quot;)
+      e.initEvent(&quot;type&quot;, bubbles, cancelable)
+
+      // Step 3.
+      // Can't test the stop propagation flag and stop immediate propagation flag.
+      assert_equals(e.defaultPrevented, false, &quot;defaultPrevented&quot;)
+      // Step 4.
+      assert_equals(e.isTrusted, false, &quot;isTrusted&quot;)
+      // Step 5.
+      assert_equals(e.target, null, &quot;target&quot;)
+      // Step 6.
+      assert_equals(e.type, &quot;type&quot;, &quot;type&quot;)
+      // Step 7.
+      assert_equals(e.bubbles, bubbles, &quot;bubbles&quot;)
+      // Step 8.
+      assert_equals(e.cancelable, cancelable, &quot;cancelable&quot;)
+    }, &quot;Properties of initEvent(type, &quot; + bubbles + &quot;, &quot; + cancelable + &quot;)&quot;)
+  })
+})
+
+test(function() {
+  var e = document.createEvent(&quot;Event&quot;)
+  e.initEvent(&quot;type 1&quot;, true, false)
+  assert_equals(e.type, &quot;type 1&quot;, &quot;type (first init)&quot;)
+  assert_equals(e.bubbles, true, &quot;bubbles (first init)&quot;)
+  assert_equals(e.cancelable, false, &quot;cancelable (first init)&quot;)
+
+  e.initEvent(&quot;type 2&quot;, false, true)
+  assert_equals(e.type, &quot;type 2&quot;, &quot;type (second init)&quot;)
+  assert_equals(e.bubbles, false, &quot;bubbles (second init)&quot;)
+  assert_equals(e.cancelable, true, &quot;cancelable (second init)&quot;)
+}, &quot;Calling initEvent multiple times (getting type).&quot;)
+
+test(function() {
+  // https://bugzilla.mozilla.org/show_bug.cgi?id=998809
+  var e = document.createEvent(&quot;Event&quot;)
+  e.initEvent(&quot;type 1&quot;, true, false)
+  assert_equals(e.bubbles, true, &quot;bubbles (first init)&quot;)
+  assert_equals(e.cancelable, false, &quot;cancelable (first init)&quot;)
+
+  e.initEvent(&quot;type 2&quot;, false, true)
+  assert_equals(e.type, &quot;type 2&quot;, &quot;type (second init)&quot;)
+  assert_equals(e.bubbles, false, &quot;bubbles (second init)&quot;)
+  assert_equals(e.cancelable, true, &quot;cancelable (second init)&quot;)
+}, &quot;Calling initEvent multiple times (not getting type).&quot;)
+
+// Step 2.
+async_test(function() {
+  // https://www.w3.org/Bugs/Public/show_bug.cgi?id=17715
+
+  var e = document.createEvent(&quot;Event&quot;)
+  e.initEvent(&quot;type&quot;, false, false)
+  assert_equals(e.type, &quot;type&quot;, &quot;type (first init)&quot;)
+  assert_equals(e.bubbles, false, &quot;bubbles (first init)&quot;)
+  assert_equals(e.cancelable, false, &quot;cancelable (first init)&quot;)
+
+  var target = document.createElement(&quot;div&quot;)
+  target.addEventListener(&quot;type&quot;, this.step_func(function() {
+    e.initEvent(&quot;fail&quot;, true, true)
+    assert_equals(e.type, &quot;type&quot;, &quot;type (second init)&quot;)
+    assert_equals(e.bubbles, false, &quot;bubbles (second init)&quot;)
+    assert_equals(e.cancelable, false, &quot;cancelable (second init)&quot;)
+  }), false)
+
+  assert_equals(target.dispatchEvent(e), true, &quot;dispatchEvent must return true&quot;)
+
+  this.done()
+}, &quot;Calling initEvent must not have an effect during dispatching.&quot;)
+
+async_test(function() {
+  var e = document.createEvent(&quot;Event&quot;)
+  e.initEvent(&quot;type&quot;, false, false)
+  e.stopPropagation()
+
+  var target = document.createElement(&quot;div&quot;)
+  target.addEventListener(&quot;type&quot;, this.step_func(function() {
+    assert_unreached(&quot;&quot;)
+  }), false)
+  assert_equals(target.dispatchEvent(e), true, &quot;dispatchEvent must return true&quot;)
+  assert_equals(target.dispatchEvent(e), true, &quot;dispatchEvent must return true&quot;)
+
+  e.initEvent(&quot;type&quot;, false, false)
+  var called = false
+  var target = document.createElement(&quot;div&quot;)
+  target.addEventListener(&quot;type&quot;, this.step_func(function() {
+    called = true
+  }), false)
+  assert_false(called)
+  assert_equals(target.dispatchEvent(e), true, &quot;dispatchEvent must return true&quot;)
+  assert_true(called)
+
+  this.done()
+}, &quot;Calling initEvent must unset the stop propagation flag.&quot;)
+
+async_test(function() {
+  var e = document.createEvent(&quot;Event&quot;)
+  e.initEvent(&quot;type&quot;, false, false)
+
+  var target = document.createElement(&quot;div&quot;)
+  target.addEventListener(&quot;type&quot;, this.step_func(function() {
+    e.initEvent(&quot;type2&quot;, true, true);
+    assert_equals(e.type, &quot;type&quot;, &quot;initEvent type setter should short-circuit&quot;);
+    assert_false(e.bubbles, &quot;initEvent bubbles setter should short-circuit&quot;);
+    assert_false(e.cancelable, &quot;initEvent cancelable setter should short-circuit&quot;);
+  }), false)
+  assert_equals(target.dispatchEvent(e), true, &quot;dispatchEvent must return true&quot;)
+
+  this.done()
+}, &quot;Calling initEvent during propagation.&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventpropagationexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventpropagationexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-propagation-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/Event-propagation-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-propagation-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-propagation-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+
+PASS Newly-created Event 
+PASS After stopPropagation() 
+FAIL Reinitialized after stopPropagation() assert_equals: Propagation flag expected true but got false
+PASS After stopImmediatePropagation() 
+FAIL Reinitialized after stopImmediatePropagation() assert_equals: Propagation flag expected true but got false
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventpropagationhtmlfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventpropagationhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-propagation.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/Event-propagation.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-propagation.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-propagation.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,38 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Event propagation tests&lt;/title&gt;
+&lt;link rel=author title=&quot;Aryeh Gregor&quot; href=ayg@aryeh.name&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+
+function testPropagationFlag(ev, expected, desc) {
+  test(function() {
+    var called = false;
+    var callback = function() { called = true };
+    document.head.addEventListener(&quot;foo&quot;, callback);
+    document.head.dispatchEvent(ev);
+    // Gecko resets the flags after dispatching; it will happily dispatch
+    // the event the second time around.
+    document.head.dispatchEvent(ev);
+    assert_equals(called, expected, &quot;Propagation flag&quot;);
+    document.head.removeEventListener(&quot;foo&quot;, callback);
+  }, desc);
+}
+
+var ev = document.createEvent(&quot;Event&quot;);
+ev.initEvent(&quot;foo&quot;, true, false);
+testPropagationFlag(ev, true, &quot;Newly-created Event&quot;);
+ev.stopPropagation();
+testPropagationFlag(ev, false, &quot;After stopPropagation()&quot;);
+ev.initEvent(&quot;foo&quot;, true, false);
+testPropagationFlag(ev, true, &quot;Reinitialized after stopPropagation()&quot;);
+
+var ev = document.createEvent(&quot;Event&quot;);
+ev.initEvent(&quot;foo&quot;, true, false);
+ev.stopImmediatePropagation();
+testPropagationFlag(ev, false, &quot;After stopImmediatePropagation()&quot;);
+ev.initEvent(&quot;foo&quot;, true, false);
+testPropagationFlag(ev, true, &quot;Reinitialized after stopImmediatePropagation()&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventtypeemptyexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventtypeemptyexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-type-empty-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/Event-type-empty-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-type-empty-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-type-empty-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+PASS initEvent 
+PASS Constructor 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventtypeemptyhtmlfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventtypeemptyhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-type-empty.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/Event-type-empty.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-type-empty.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-type-empty.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;Event.type set to the empty string&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Ms2ger&quot; href=&quot;mailto:Ms2ger@gmail.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#dom-event-type&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+function do_test(t, e) {
+  assert_equals(e.type, &quot;&quot;, &quot;type&quot;);
+  assert_equals(e.bubbles, false, &quot;bubbles&quot;);
+  assert_equals(e.cancelable, false, &quot;cancelable&quot;);
+
+  var target = document.createElement(&quot;div&quot;);
+  var handled = false;
+  target.addEventListener(&quot;&quot;, t.step_func(function(e) {
+    handled = true;
+  }));
+  assert_true(target.dispatchEvent(e));
+  assert_true(handled);
+}
+
+async_test(function() {
+  var e = document.createEvent(&quot;Event&quot;);
+  e.initEvent(&quot;&quot;, false, false);
+  do_test(this, e);
+  this.done();
+}, &quot;initEvent&quot;);
+
+async_test(function() {
+  var e = new Event(&quot;&quot;);
+  do_test(this, e);
+  this.done();
+}, &quot;Constructor&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventtypeexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventtypeexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-type-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/Event-type-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-type-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-type-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+
+PASS Event.type should initially be the empty string 
+PASS Event.type should be initialized by initEvent 
+PASS Event.type should be initialized by the constructor 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventtypehtmlfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventtypehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-type.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/Event-type.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-type.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/Event-type.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;Event.type&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Ms2ger&quot; href=&quot;mailto:Ms2ger@gmail.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#dom-event-type&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  var e = document.createEvent(&quot;Event&quot;)
+  assert_equals(e.type, &quot;&quot;);
+}, &quot;Event.type should initially be the empty string&quot;);
+test(function() {
+  var e = document.createEvent(&quot;Event&quot;)
+  e.initEvent(&quot;foo&quot;, false, false)
+  assert_equals(e.type, &quot;foo&quot;)
+}, &quot;Event.type should be initialized by initEvent&quot;);
+test(function() {
+  var e = new Event(&quot;bar&quot;)
+  assert_equals(e.type, &quot;bar&quot;)
+}, &quot;Event.type should be initialized by the constructor&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventTargetaddEventListenerexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventTargetaddEventListenerexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-addEventListener-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/EventTarget-addEventListener-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-addEventListener-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-addEventListener-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Adding a null event listener should succeed 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventTargetaddEventListenerhtmlfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventTargetaddEventListenerhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-addEventListener.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/EventTarget-addEventListener.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-addEventListener.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-addEventListener.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;EventTarget.addEventListener&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Ms2ger&quot; href=&quot;mailto:Ms2ger@gmail.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#dom-eventtarget-addeventlistener&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+// Step 1.
+test(function() {
+  assert_equals(document.addEventListener(&quot;x&quot;, null, false), undefined);
+  assert_equals(document.addEventListener(&quot;x&quot;, null, true), undefined);
+  assert_equals(document.addEventListener(&quot;x&quot;, null), undefined);
+}, &quot;Adding a null event listener should succeed&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventTargetdispatchEventexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventTargetdispatchEventexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/EventTarget-dispatchEvent-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+CONSOLE MESSAGE: line 60: Error
+
+PASS Calling dispatchEvent(null). 
+PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (CustomEvent). 
+PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (Event). 
+PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (Events). 
+PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (HTMLEvents). 
+PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (KeyboardEvent). 
+FAIL If the event's initialized flag is not set, an InvalidStateError must be thrown (KeyEvents). NotSupportedError: DOM Exception 9
+PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (MessageEvent). 
+PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (MouseEvent). 
+PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (MouseEvents). 
+FAIL If the event's initialized flag is not set, an InvalidStateError must be thrown (TouchEvent). NotSupportedError: DOM Exception 9
+PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (UIEvent). 
+PASS If the event's initialized flag is not set, an InvalidStateError must be thrown (UIEvents). 
+PASS If the event's dispatch flag is set, an InvalidStateError must be thrown. 
+PASS Exceptions from event listeners must not be propagated. 
+FAIL Event listeners added during dispatch should be called assert_array_equals: lengths differ, expected 2 got 0
+PASS Event listeners should be called in order of addition 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventTargetdispatchEventreturnvalueexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventTargetdispatchEventreturnvalueexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent-returnvalue-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/EventTarget-dispatchEvent-returnvalue-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent-returnvalue-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent-returnvalue-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Return value of EventTarget.dispatchEvent. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventTargetdispatchEventreturnvaluehtmlfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventTargetdispatchEventreturnvaluehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent-returnvalue.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/EventTarget-dispatchEvent-returnvalue.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent-returnvalue.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent-returnvalue.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,43 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;EventTarget.dispatchEvent: return value&lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#concept-event-dispatch&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#dom-event-preventdefault&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#dom-event-defaultprevented&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;table id=&quot;table&quot; border=&quot;1&quot; style=&quot;display: none&quot;&gt;
+    &lt;tbody id=&quot;table-body&quot;&gt;
+    &lt;tr id=&quot;table-row&quot;&gt;
+        &lt;td id=&quot;table-cell&quot;&gt;Shady Grove&lt;/td&gt;
+        &lt;td&gt;Aeolian&lt;/td&gt;
+    &lt;/tr&gt;
+    &lt;tr id=&quot;parent&quot;&gt;
+        &lt;td id=&quot;target&quot;&gt;Over the river, Charlie&lt;/td&gt;
+        &lt;td&gt;Dorian&lt;/td&gt;
+    &lt;/tr&gt;
+    &lt;/tbody&gt;
+&lt;/table&gt;
+&lt;script&gt;
+test(function() {
+    var event_type = &quot;foo&quot;;
+    var target = document.getElementById(&quot;target&quot;);
+    var parent = document.getElementById(&quot;parent&quot;);
+    var default_prevented;
+
+    parent.addEventListener(event_type, function(e) {}, true);
+    target.addEventListener(event_type, function(e) {
+        evt.preventDefault();
+        default_prevented = evt.defaultPrevented;
+    }, true);
+    target.addEventListener(event_type, function(e) {}, true);
+
+    var evt = document.createEvent(&quot;Event&quot;);
+    evt.initEvent(event_type, true, true);
+
+    assert_true(parent.dispatchEvent(evt));
+    assert_false(target.dispatchEvent(evt));
+    assert_true(default_prevented);
+}, &quot;Return value of EventTarget.dispatchEvent.&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventTargetdispatchEventhtmlfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventTargetdispatchEventhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/EventTarget-dispatchEvent.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,104 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;EventTarget.dispatchEvent&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Olli Pettay&quot; href=&quot;mailto:Olli.Pettay@gmail.com&quot;&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Ms2ger&quot; href=&quot;mailto:Ms2ger@gmail.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#dom-eventtarget-dispatchevent&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/dom/nodes/Document-createEvent.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+setup({
+  &quot;allow_uncaught_exception&quot;: true,
+})
+
+test(function() {
+  assert_throws(new TypeError(), function() { document.dispatchEvent(null) })
+}, &quot;Calling dispatchEvent(null).&quot;)
+
+aliases.forEach(function(alias) {
+  test(function() {
+    var e = document.createEvent(alias[0])
+    assert_equals(e.type, &quot;&quot;, &quot;Event type should be empty string before initialization&quot;)
+    assert_throws(&quot;InvalidStateError&quot;, function() { document.dispatchEvent(e) })
+  }, &quot;If the event's initialized flag is not set, an InvalidStateError must be thrown (&quot; + alias [0] + &quot;).&quot;)
+})
+
+var dispatch_dispatch = async_test(&quot;If the event's dispatch flag is set, an InvalidStateError must be thrown.&quot;)
+dispatch_dispatch.step(function() {
+  var e = document.createEvent(&quot;Event&quot;)
+  e.initEvent(&quot;type&quot;, false, false)
+
+  var target = document.createElement(&quot;div&quot;)
+  target.addEventListener(&quot;type&quot;, dispatch_dispatch.step_func(function() {
+    assert_throws(&quot;InvalidStateError&quot;, function() {
+      target.dispatchEvent(e)
+    })
+    assert_throws(&quot;InvalidStateError&quot;, function() {
+      document.dispatchEvent(e)
+    })
+  }), false)
+
+  assert_equals(target.dispatchEvent(e), true, &quot;dispatchEvent must return true&quot;)
+
+  dispatch_dispatch.done()
+})
+
+test(function() {
+  // https://www.w3.org/Bugs/Public/show_bug.cgi?id=17713
+  // https://www.w3.org/Bugs/Public/show_bug.cgi?id=17714
+
+  var e = document.createEvent(&quot;Event&quot;)
+  e.initEvent(&quot;type&quot;, false, false)
+
+  var called = []
+
+  var target = document.createElement(&quot;div&quot;)
+  target.addEventListener(&quot;type&quot;, function() {
+    called.push(&quot;First&quot;)
+    throw new Error()
+  }, false)
+
+  target.addEventListener(&quot;type&quot;, function() {
+    called.push(&quot;Second&quot;)
+  }, false)
+
+  assert_equals(target.dispatchEvent(e), true, &quot;dispatchEvent must return true&quot;)
+  assert_array_equals(called, [&quot;First&quot;, &quot;Second&quot;],
+                      &quot;Should have continued to call other event listeners&quot;)
+}, &quot;Exceptions from event listeners must not be propagated.&quot;)
+
+async_test(function() {
+  var results = []
+  var outerb = document.createElement(&quot;b&quot;)
+  var middleb = outerb.appendChild(document.createElement(&quot;b&quot;))
+  var innerb = middleb.appendChild(document.createElement(&quot;b&quot;))
+  outerb.addEventListener(&quot;x&quot;, this.step_func(function() {
+    middleb.addEventListener(&quot;x&quot;, this.step_func(function() {
+      results.push(&quot;middle&quot;)
+    }), true)
+    results.push(&quot;outer&quot;)
+  }), true)
+  innerb.dispatchEvent(new Event(&quot;x&quot;))
+  assert_array_equals(results, [&quot;outer&quot;, &quot;middle&quot;])
+  this.done()
+}, &quot;Event listeners added during dispatch should be called&quot;);
+
+async_test(function() {
+  var results = []
+  var b = document.createElement(&quot;b&quot;)
+  b.addEventListener(&quot;x&quot;, this.step_func(function() {
+    results.push(1)
+  }), true)
+  b.addEventListener(&quot;x&quot;, this.step_func(function() {
+    results.push(2)
+  }), false)
+  b.addEventListener(&quot;x&quot;, this.step_func(function() {
+    results.push(3)
+  }), true)
+  b.dispatchEvent(new Event(&quot;x&quot;))
+  assert_array_equals(results, [1, 2, 3])
+  this.done()
+}, &quot;Event listeners should be called in order of addition&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventTargetremoveEventListenerexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventTargetremoveEventListenerexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-removeEventListener-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/EventTarget-removeEventListener-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-removeEventListener-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-removeEventListener-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS removing a null event listener should succeed 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsEventTargetremoveEventListenerhtmlfromrev189470trunkLayoutTestshttptestsw3cdomeventsEventTargetremoveEventListenerhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-removeEventListener.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/EventTarget-removeEventListener.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-removeEventListener.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/EventTarget-removeEventListener.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;title&gt;EventTarget.removeEventListener&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Ms2ger&quot; href=&quot;mailto:Ms2ger@gmail.com&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#dom-eventtarget-removeeventlistener&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+// Step 1.
+test(function() {
+  assert_equals(document.removeEventListener(&quot;x&quot;, null, false), undefined);
+  assert_equals(document.removeEventListener(&quot;x&quot;, null, true), undefined);
+  assert_equals(document.removeEventListener(&quot;x&quot;, null), undefined);
+}, &quot;removing a null event listener should succeed&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsProgressEventexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomeventsProgressEventexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/ProgressEvent-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/ProgressEvent-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/ProgressEvent-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/ProgressEvent-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+FAIL Default event values. assert_equals: expected (boolean) false but got (undefined) undefined
+FAIL document.createEvent() should not work with ProgressEvent. assert_throws: function &quot;function () {
+    document.createEvent(&quot;ProgressEvent&quot;)
+  }&quot; did not throw
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomeventsProgressEventhtmlfromrev189470trunkLayoutTestshttptestsw3cdomeventsProgressEventhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/ProgressEvent.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/events/ProgressEvent.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/ProgressEvent.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/events/ProgressEvent.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;ProgressEvent constructor&lt;/title&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  var ev = new ProgressEvent(&quot;test&quot;)
+  assert_equals(ev.type, &quot;test&quot;)
+  assert_equals(ev.target, null)
+  assert_equals(ev.currentTarget, null)
+  assert_equals(ev.eventPhase, Event.NONE)
+  assert_equals(ev.bubbles, false)
+  assert_equals(ev.cancelable, false)
+  assert_equals(ev.defaultPrevented, false)
+  assert_equals(ev.isTrusted, false)
+  assert_true(ev.timeStamp &gt; 0)
+  assert_true(&quot;initEvent&quot; in ev)
+}, &quot;Default event values.&quot;)
+test(function() {
+  assert_throws(&quot;NotSupportedError&quot;, function() {
+    document.createEvent(&quot;ProgressEvent&quot;)
+  })
+}, &quot;document.createEvent() should not work with ProgressEvent.&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomhistoricalexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomhistoricalexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/historical-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/historical-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/historical-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/historical-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,60 @@
</span><ins>+
+FAIL Historical DOM features must be removed: CDATASection assert_equals: expected (undefined) undefined but got (object) object &quot;[object CDATASectionConstructor]&quot;
+PASS Historical DOM features must be removed: DOMConfiguration 
+PASS Historical DOM features must be removed: DOMError 
+PASS Historical DOM features must be removed: DOMErrorHandler 
+PASS Historical DOM features must be removed: DOMImplementationList 
+PASS Historical DOM features must be removed: DOMImplementationSource 
+PASS Historical DOM features must be removed: DOMLocator 
+PASS Historical DOM features must be removed: DOMObject 
+PASS Historical DOM features must be removed: DOMUserData 
+FAIL Historical DOM features must be removed: Entity assert_equals: expected (undefined) undefined but got (object) object &quot;[object EntityConstructor]&quot;
+FAIL Historical DOM features must be removed: EntityReference assert_equals: expected (undefined) undefined but got (object) object &quot;[object EntityReferenceConstructor]&quot;
+FAIL Historical DOM features must be removed: EventException assert_equals: expected (undefined) undefined but got (object) object &quot;[object EventExceptionConstructor]&quot;
+PASS Historical DOM features must be removed: NameList 
+PASS Historical DOM features must be removed: Notation 
+PASS Historical DOM features must be removed: TypeInfo 
+PASS Historical DOM features must be removed: UserDataHandler 
+PASS Historical DOM features must be removed: RangeException 
+FAIL Historical DOM features must be removed: createCDATASection assert_equals: expected (undefined) undefined but got (function) function &quot;function createCDATASection() {
+    [native code]
+}&quot;
+FAIL Historical DOM features must be removed: createEntityReference assert_equals: expected (undefined) undefined but got (function) function &quot;function createEntityReference() {
+    [native code]
+}&quot;
+FAIL Historical DOM features must be removed: xmlEncoding assert_equals: expected (undefined) undefined but got (object) null
+FAIL Historical DOM features must be removed: xmlStandalone assert_equals: expected (undefined) undefined but got (boolean) false
+FAIL Historical DOM features must be removed: xmlVersion assert_equals: expected (undefined) undefined but got (object) null
+PASS Historical DOM features must be removed: strictErrorChecking 
+PASS Historical DOM features must be removed: domConfig 
+PASS Historical DOM features must be removed: normalizeDocument 
+PASS Historical DOM features must be removed: renameNode 
+FAIL Historical DOM features must be removed: charset assert_equals: expected (undefined) undefined but got (string) &quot;ISO-8859-1&quot;
+FAIL Historical DOM features must be removed: defaultCharset assert_equals: expected (undefined) undefined but got (string) &quot;ISO-8859-1&quot;
+FAIL Historical DOM features must be removed: height assert_equals: expected (undefined) undefined but got (number) 600
+FAIL Historical DOM features must be removed: width assert_equals: expected (undefined) undefined but got (number) 800
+PASS DOMImplementation.getFeature() must be nuked. 
+PASS Historical DOM features must be removed: schemaTypeInfo 
+PASS Historical DOM features must be removed: setIdAttribute 
+PASS Historical DOM features must be removed: setIdAttributeNS 
+PASS Historical DOM features must be removed: setIdAttributeNode 
+FAIL DocumentType member must be nuked: entities assert_equals: expected (undefined) undefined but got (object) null
+FAIL DocumentType member must be nuked: notations assert_equals: expected (undefined) undefined but got (object) null
+FAIL DocumentType member must be nuked: internalSubset assert_equals: expected (undefined) undefined but got (object) null
+PASS Text member must be nuked: isElementContentWhitespace 
+FAIL Text member must be nuked: replaceWholeText assert_equals: expected (undefined) undefined but got (function) function &quot;function replaceWholeText() {
+    [native code]
+}&quot;
+PASS Node member must be nuked: hasAttributes 
+PASS Node member must be nuked: attributes 
+FAIL Node member must be nuked: namespaceURI assert_equals: expected (undefined) undefined but got (object) null
+FAIL Node member must be nuked: prefix assert_equals: expected (undefined) undefined but got (object) null
+FAIL Node member must be nuked: localName assert_equals: expected (undefined) undefined but got (object) null
+FAIL Node member must be nuked: isSupported assert_equals: expected (undefined) undefined but got (function) function &quot;function isSupported() {
+    [native code]
+}&quot;
+PASS Node member must be nuked: getFeature 
+PASS Node member must be nuked: getUserData 
+PASS Node member must be nuked: setUserData 
+PASS Window member must be nuked: attachEvent 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomhistoricalhtmlfromrev189470trunkLayoutTestshttptestsw3cdomhistoricalhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/historical.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/historical.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/historical.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/historical.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,133 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;Historical DOM features must be removed&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script&gt;
+function isInterfaceNuked(name) {
+  test(function() {
+    assert_equals(window[name], undefined)
+  }, &quot;Historical DOM features must be removed: &quot; + name)
+}
+var nukedInterfaces = [
+  &quot;CDATASection&quot;,
+  &quot;DOMConfiguration&quot;,
+  &quot;DOMError&quot;,
+  &quot;DOMErrorHandler&quot;,
+  &quot;DOMImplementationList&quot;,
+  &quot;DOMImplementationSource&quot;,
+  &quot;DOMLocator&quot;,
+  &quot;DOMObject&quot;,
+  &quot;DOMUserData&quot;,
+  &quot;Entity&quot;,
+  &quot;EntityReference&quot;,
+  &quot;EventException&quot;, // DOM Events
+  &quot;NameList&quot;,
+  &quot;Notation&quot;,
+  &quot;TypeInfo&quot;,
+  &quot;UserDataHandler&quot;,
+  &quot;RangeException&quot; // DOM Range
+]
+nukedInterfaces.forEach(isInterfaceNuked)
+
+function isNukedFromDocument(name) {
+  test(function() {
+    var doc = document.implementation.createDocument(null,null,null)
+    assert_equals(document[name], undefined)
+    assert_equals(doc[name], undefined)
+  }, &quot;Historical DOM features must be removed: &quot; + name)
+}
+var documentNuked = [
+  &quot;createCDATASection&quot;,
+  &quot;createEntityReference&quot;,
+  &quot;xmlEncoding&quot;,
+  &quot;xmlStandalone&quot;,
+  &quot;xmlVersion&quot;,
+  &quot;strictErrorChecking&quot;,
+  &quot;domConfig&quot;,
+  &quot;normalizeDocument&quot;,
+  &quot;renameNode&quot;,
+  &quot;charset&quot;,
+  &quot;defaultCharset&quot;,
+  &quot;height&quot;,
+  &quot;width&quot;
+]
+documentNuked.forEach(isNukedFromDocument)
+
+test(function() {
+  assert_equals(document.implementation[&quot;getFeature&quot;], undefined)
+}, &quot;DOMImplementation.getFeature() must be nuked.&quot;)
+
+function isNukedFromElement(name) {
+  test(function() {
+    var ele = document.createElementNS(&quot;test&quot;, &quot;test&quot;)
+    assert_equals(document.body[name], undefined)
+    assert_equals(ele[name], undefined)
+  }, &quot;Historical DOM features must be removed: &quot; + name)
+}
+var elementNuked = [
+  &quot;schemaTypeInfo&quot;,
+  &quot;setIdAttribute&quot;,
+  &quot;setIdAttributeNS&quot;,
+  &quot;setIdAttributeNode&quot;
+]
+elementNuked.forEach(isNukedFromElement)
+
+function isNukedFromDoctype(name) {
+  test(function() {
+    var doctype = document.implementation.createDocumentType(&quot;test&quot;, &quot;&quot;, &quot;&quot;)
+    assert_equals(doctype[name], undefined)
+  }, &quot;DocumentType member must be nuked: &quot; + name)
+}
+var doctypeNuked = [
+  &quot;entities&quot;,
+  &quot;notations&quot;,
+  &quot;internalSubset&quot;
+]
+doctypeNuked.forEach(isNukedFromDoctype)
+
+function isNukedFromText(name) {
+  test(function() {
+    var text = document.createTextNode(&quot;test&quot;)
+    assert_equals(text[name], undefined)
+  }, &quot;Text member must be nuked: &quot; + name)
+}
+var textNuked = [
+  &quot;isElementContentWhitespace&quot;,
+  &quot;replaceWholeText&quot;
+]
+textNuked.forEach(isNukedFromText)
+
+function isNukedFromNode(name) {
+  test(function() {
+    var doc = document.implementation.createDocument(null,null,null)
+    var doctype = document.implementation.createDocumentType(&quot;test&quot;, &quot;&quot;, &quot;&quot;)
+    var text = document.createTextNode(&quot;test&quot;)
+    assert_equals(doc[name], undefined)
+    assert_equals(doctype[name], undefined)
+    assert_equals(text[name], undefined)
+  }, &quot;Node member must be nuked: &quot; + name)
+}
+var nodeNuked = [
+  &quot;hasAttributes&quot;,
+  &quot;attributes&quot;,
+  &quot;namespaceURI&quot;,
+  &quot;prefix&quot;,
+  &quot;localName&quot;,
+  &quot;isSupported&quot;,
+  &quot;getFeature&quot;,
+  &quot;getUserData&quot;,
+  &quot;setUserData&quot;
+]
+nodeNuked.forEach(isNukedFromNode)
+
+function isNukedFromWindow(name) {
+  test(function() {
+    assert_equals(window[name], undefined)
+  }, &quot;Window member must be nuked: &quot; + name)
+}
+var windowNuked = [
+  &quot;attachEvent&quot;
+]
+windowNuked.forEach(isNukedFromWindow)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdominterfaceobjectsexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdominterfaceobjectsexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interface-objects-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/interface-objects-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interface-objects-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interface-objects-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+
+PASS Interface objects properties should not be Enumerable 
+PASS Should be able to delete Event. 
+PASS Should be able to delete CustomEvent. 
+FAIL Should be able to delete EventTarget. assert_true: Interface should exist. expected true got false
+PASS Should be able to delete Node. 
+PASS Should be able to delete Document. 
+PASS Should be able to delete DOMImplementation. 
+PASS Should be able to delete DocumentFragment. 
+PASS Should be able to delete ProcessingInstruction. 
+PASS Should be able to delete DocumentType. 
+PASS Should be able to delete Element. 
+PASS Should be able to delete Attr. 
+PASS Should be able to delete CharacterData. 
+PASS Should be able to delete Text. 
+PASS Should be able to delete Comment. 
+PASS Should be able to delete NodeIterator. 
+PASS Should be able to delete TreeWalker. 
+PASS Should be able to delete NodeFilter. 
+PASS Should be able to delete NodeList. 
+PASS Should be able to delete HTMLCollection. 
+PASS Should be able to delete DOMStringList. 
+PASS Should be able to delete DOMTokenList. 
+PASS Should be able to delete DOMSettableTokenList. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdominterfaceobjectshtmlfromrev189470trunkLayoutTestshttptestsw3cdominterfaceobjectshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interface-objects.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/interface-objects.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interface-objects.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interface-objects.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,46 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;Interfaces&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+function testInterfaceDeletable(iface) {
+  test(function() {
+    assert_true(!!window[iface], &quot;Interface should exist.&quot;)
+    assert_true(delete window[iface], &quot;The delete operator should return true.&quot;)
+    assert_equals(window[iface], undefined, &quot;Interface should be gone.&quot;)
+  }, &quot;Should be able to delete &quot; + iface + &quot;.&quot;)
+}
+var interfaces = [
+  &quot;Event&quot;,
+  &quot;CustomEvent&quot;,
+  &quot;EventTarget&quot;,
+  &quot;Node&quot;,
+  &quot;Document&quot;,
+  &quot;DOMImplementation&quot;,
+  &quot;DocumentFragment&quot;,
+  &quot;ProcessingInstruction&quot;,
+  &quot;DocumentType&quot;,
+  &quot;Element&quot;,
+  &quot;Attr&quot;,
+  &quot;CharacterData&quot;,
+  &quot;Text&quot;,
+  &quot;Comment&quot;,
+  &quot;NodeIterator&quot;,
+  &quot;TreeWalker&quot;,
+  &quot;NodeFilter&quot;,
+  &quot;NodeList&quot;,
+  &quot;HTMLCollection&quot;,
+  &quot;DOMStringList&quot;,
+  &quot;DOMTokenList&quot;,
+  &quot;DOMSettableTokenList&quot;
+];
+test(function() {
+  for (var p in window) {
+    interfaces.forEach(function(i) {
+      assert_not_equals(p, i)
+    })
+  }
+}, &quot;Interface objects properties should not be Enumerable&quot;)
+interfaces.forEach(testInterfaceDeletable);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdominterfacesexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdominterfacesexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/interfaces-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,1973 @@
</span><ins>+CONSOLE MESSAGE: line 197: callback interface not yet supported
+CONSOLE MESSAGE: line 188: callback not yet supported
+CONSOLE MESSAGE: line 197: callback interface not yet supported
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'type' on a non-Event object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'target' on a non-Event object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'currentTarget' on a non-Event object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'eventPhase' on a non-Event object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'bubbles' on a non-Event object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'cancelable' on a non-Event object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'defaultPrevented' on a non-Event object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'timeStamp' on a non-Event object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'type' on a non-MutationRecord object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'target' on a non-MutationRecord object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'addedNodes' on a non-MutationRecord object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'removedNodes' on a non-MutationRecord object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'previousSibling' on a non-MutationRecord object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'nextSibling' on a non-MutationRecord object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'attributeName' on a non-MutationRecord object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'attributeNamespace' on a non-MutationRecord object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'oldValue' on a non-MutationRecord object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'nodeType' on a non-Node object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'nodeName' on a non-Node object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'baseURI' on a non-Node object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'ownerDocument' on a non-Node object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'parentNode' on a non-Node object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'parentElement' on a non-Node object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'childNodes' on a non-Node object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'firstChild' on a non-Node object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'lastChild' on a non-Node object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'previousSibling' on a non-Node object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'nextSibling' on a non-Node object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'nodeValue' on a non-Node object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'textContent' on a non-Node object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'implementation' on a non-Document object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'URL' on a non-Document object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'documentURI' on a non-Document object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'origin' on a non-Document object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'compatMode' on a non-Document object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'characterSet' on a non-Document object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'inputEncoding' on a non-Document object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'contentType' on a non-Document object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'doctype' on a non-Document object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'documentElement' on a non-Document object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'children' on a non-Document object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'firstElementChild' on a non-Document object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'lastElementChild' on a non-Document object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'childElementCount' on a non-Document object.
+CONSOLE MESSAGE: line 261: Deprecated attempt to access property 'nodeType' on a non-Node object.
+CONSOLE MESSAGE: line 1756: Deprecated attempt to access property 'nodeType' on a non-Node object.
+CONSOLE MESSAGE: line 261: Deprecated attempt to access property 'nodeType' on a non-Node object.
+CONSOLE MESSAGE: line 1756: Deprecated attempt to access property 'nodeType' on a non-Node object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'children' on a non-DocumentFragment object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'firstElementChild' on a non-DocumentFragment object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'lastElementChild' on a non-DocumentFragment object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'childElementCount' on a non-DocumentFragment object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'name' on a non-DocumentType object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'publicId' on a non-DocumentType object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'systemId' on a non-DocumentType object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'namespaceURI' on a non-Node object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'prefix' on a non-Node object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'localName' on a non-Node object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'tagName' on a non-Element object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'id' on a non-Element object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'className' on a non-Element object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'classList' on a non-Element object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'attributes' on a non-Element object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'children' on a non-Element object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'firstElementChild' on a non-Element object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'lastElementChild' on a non-Element object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'childElementCount' on a non-Element object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'previousElementSibling' on a non-Element object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'nextElementSibling' on a non-Element object.
+CONSOLE MESSAGE: line 261: Deprecated attempt to access property 'nodeType' on a non-Node object.
+CONSOLE MESSAGE: line 1756: Deprecated attempt to access property 'nodeType' on a non-Node object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'namespaceURI' on a non-Node object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'prefix' on a non-Node object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'localName' on a non-Node object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'name' on a non-Attr object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'value' on a non-Attr object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'nodeValue' on a non-Node object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'textContent' on a non-Node object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'ownerElement' on a non-Attr object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'specified' on a non-Attr object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'data' on a non-CharacterData object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'length' on a non-CharacterData object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'previousElementSibling' on a non-CharacterData object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'nextElementSibling' on a non-CharacterData object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'wholeText' on a non-Text object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'target' on a non-ProcessingInstruction object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'startContainer' on a non-Range object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'startOffset' on a non-Range object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'endContainer' on a non-Range object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'endOffset' on a non-Range object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'collapsed' on a non-Range object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'commonAncestorContainer' on a non-Range object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'root' on a non-NodeIterator object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'referenceNode' on a non-NodeIterator object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'pointerBeforeReferenceNode' on a non-NodeIterator object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'whatToShow' on a non-NodeIterator object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'filter' on a non-NodeIterator object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'root' on a non-TreeWalker object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'whatToShow' on a non-TreeWalker object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'filter' on a non-TreeWalker object.
+CONSOLE MESSAGE: line 583: Deprecated attempt to access property 'currentNode' on a non-TreeWalker object.
+DOM IDL tests
+
+
+FAIL Event interface: existence and properties of interface object assert_equals: prototype of self's property &quot;Event&quot; is not Function.prototype expected (function) function &quot;function () {
+    [native code]
+}&quot; but got (object) object &quot;[object Object]&quot;
+PASS Event interface object length 
+PASS Event interface: existence and properties of interface prototype object 
+FAIL Event interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_true: Event.prototype.constructor is not writable expected true got false
+FAIL Event interface: attribute type assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Event interface: attribute target assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Event interface: attribute currentTarget assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Event interface: constant NONE on interface object 
+PASS Event interface: constant NONE on interface prototype object 
+PASS Event interface: constant CAPTURING_PHASE on interface object 
+PASS Event interface: constant CAPTURING_PHASE on interface prototype object 
+PASS Event interface: constant AT_TARGET on interface object 
+PASS Event interface: constant AT_TARGET on interface prototype object 
+PASS Event interface: constant BUBBLING_PHASE on interface object 
+PASS Event interface: constant BUBBLING_PHASE on interface prototype object 
+FAIL Event interface: attribute eventPhase assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Event interface: operation stopPropagation() 
+PASS Event interface: operation stopImmediatePropagation() 
+FAIL Event interface: attribute bubbles assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Event interface: attribute cancelable assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Event interface: operation preventDefault() 
+FAIL Event interface: attribute defaultPrevented assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Event interface: attribute timeStamp assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Event interface: operation initEvent(DOMString,boolean,boolean) assert_equals: property has wrong .length expected 3 but got 0
+PASS Event must be primary interface of document.createEvent(&quot;Event&quot;) 
+PASS Stringification of document.createEvent(&quot;Event&quot;) 
+PASS Event interface: document.createEvent(&quot;Event&quot;) must inherit property &quot;type&quot; with the proper type (0) 
+PASS Event interface: document.createEvent(&quot;Event&quot;) must inherit property &quot;target&quot; with the proper type (1) 
+PASS Event interface: document.createEvent(&quot;Event&quot;) must inherit property &quot;currentTarget&quot; with the proper type (2) 
+PASS Event interface: document.createEvent(&quot;Event&quot;) must inherit property &quot;NONE&quot; with the proper type (3) 
+PASS Event interface: document.createEvent(&quot;Event&quot;) must inherit property &quot;CAPTURING_PHASE&quot; with the proper type (4) 
+PASS Event interface: document.createEvent(&quot;Event&quot;) must inherit property &quot;AT_TARGET&quot; with the proper type (5) 
+PASS Event interface: document.createEvent(&quot;Event&quot;) must inherit property &quot;BUBBLING_PHASE&quot; with the proper type (6) 
+PASS Event interface: document.createEvent(&quot;Event&quot;) must inherit property &quot;eventPhase&quot; with the proper type (7) 
+PASS Event interface: document.createEvent(&quot;Event&quot;) must inherit property &quot;stopPropagation&quot; with the proper type (8) 
+PASS Event interface: document.createEvent(&quot;Event&quot;) must inherit property &quot;stopImmediatePropagation&quot; with the proper type (9) 
+PASS Event interface: document.createEvent(&quot;Event&quot;) must inherit property &quot;bubbles&quot; with the proper type (10) 
+PASS Event interface: document.createEvent(&quot;Event&quot;) must inherit property &quot;cancelable&quot; with the proper type (11) 
+PASS Event interface: document.createEvent(&quot;Event&quot;) must inherit property &quot;preventDefault&quot; with the proper type (12) 
+PASS Event interface: document.createEvent(&quot;Event&quot;) must inherit property &quot;defaultPrevented&quot; with the proper type (13) 
+FAIL Event interface: document.createEvent(&quot;Event&quot;) must have own property &quot;isTrusted&quot; assert_own_property: expected property &quot;isTrusted&quot; missing
+PASS Event interface: document.createEvent(&quot;Event&quot;) must inherit property &quot;timeStamp&quot; with the proper type (15) 
+PASS Event interface: document.createEvent(&quot;Event&quot;) must inherit property &quot;initEvent&quot; with the proper type (16) 
+FAIL Event interface: calling initEvent(DOMString,boolean,boolean) on document.createEvent(&quot;Event&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Event must be primary interface of new Event(&quot;foo&quot;) 
+PASS Stringification of new Event(&quot;foo&quot;) 
+PASS Event interface: new Event(&quot;foo&quot;) must inherit property &quot;type&quot; with the proper type (0) 
+PASS Event interface: new Event(&quot;foo&quot;) must inherit property &quot;target&quot; with the proper type (1) 
+PASS Event interface: new Event(&quot;foo&quot;) must inherit property &quot;currentTarget&quot; with the proper type (2) 
+PASS Event interface: new Event(&quot;foo&quot;) must inherit property &quot;NONE&quot; with the proper type (3) 
+PASS Event interface: new Event(&quot;foo&quot;) must inherit property &quot;CAPTURING_PHASE&quot; with the proper type (4) 
+PASS Event interface: new Event(&quot;foo&quot;) must inherit property &quot;AT_TARGET&quot; with the proper type (5) 
+PASS Event interface: new Event(&quot;foo&quot;) must inherit property &quot;BUBBLING_PHASE&quot; with the proper type (6) 
+PASS Event interface: new Event(&quot;foo&quot;) must inherit property &quot;eventPhase&quot; with the proper type (7) 
+PASS Event interface: new Event(&quot;foo&quot;) must inherit property &quot;stopPropagation&quot; with the proper type (8) 
+PASS Event interface: new Event(&quot;foo&quot;) must inherit property &quot;stopImmediatePropagation&quot; with the proper type (9) 
+PASS Event interface: new Event(&quot;foo&quot;) must inherit property &quot;bubbles&quot; with the proper type (10) 
+PASS Event interface: new Event(&quot;foo&quot;) must inherit property &quot;cancelable&quot; with the proper type (11) 
+PASS Event interface: new Event(&quot;foo&quot;) must inherit property &quot;preventDefault&quot; with the proper type (12) 
+PASS Event interface: new Event(&quot;foo&quot;) must inherit property &quot;defaultPrevented&quot; with the proper type (13) 
+FAIL Event interface: new Event(&quot;foo&quot;) must have own property &quot;isTrusted&quot; assert_own_property: expected property &quot;isTrusted&quot; missing
+PASS Event interface: new Event(&quot;foo&quot;) must inherit property &quot;timeStamp&quot; with the proper type (15) 
+PASS Event interface: new Event(&quot;foo&quot;) must inherit property &quot;initEvent&quot; with the proper type (16) 
+FAIL Event interface: calling initEvent(DOMString,boolean,boolean) on new Event(&quot;foo&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL CustomEvent interface: existence and properties of interface object assert_equals: prototype of self's property &quot;CustomEvent&quot; is not Function.prototype expected (function) function &quot;function () {
+    [native code]
+}&quot; but got (object) object &quot;[object Object]&quot;
+PASS CustomEvent interface object length 
+PASS CustomEvent interface: existence and properties of interface prototype object 
+FAIL CustomEvent interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_true: CustomEvent.prototype.constructor is not writable expected true got false
+FAIL CustomEvent interface: attribute detail assert_true: The prototype object must have a property &quot;detail&quot; expected true got false
+FAIL CustomEvent interface: operation initCustomEvent(DOMString,boolean,boolean,any) assert_equals: property has wrong .length expected 4 but got 0
+PASS CustomEvent must be primary interface of new CustomEvent(&quot;foo&quot;) 
+PASS Stringification of new CustomEvent(&quot;foo&quot;) 
+FAIL CustomEvent interface: new CustomEvent(&quot;foo&quot;) must inherit property &quot;detail&quot; with the proper type (0) assert_inherits: property &quot;detail&quot; found on object expected in prototype chain
+PASS CustomEvent interface: new CustomEvent(&quot;foo&quot;) must inherit property &quot;initCustomEvent&quot; with the proper type (1) 
+FAIL CustomEvent interface: calling initCustomEvent(DOMString,boolean,boolean,any) on new CustomEvent(&quot;foo&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Event interface: new CustomEvent(&quot;foo&quot;) must inherit property &quot;type&quot; with the proper type (0) 
+PASS Event interface: new CustomEvent(&quot;foo&quot;) must inherit property &quot;target&quot; with the proper type (1) 
+PASS Event interface: new CustomEvent(&quot;foo&quot;) must inherit property &quot;currentTarget&quot; with the proper type (2) 
+PASS Event interface: new CustomEvent(&quot;foo&quot;) must inherit property &quot;NONE&quot; with the proper type (3) 
+PASS Event interface: new CustomEvent(&quot;foo&quot;) must inherit property &quot;CAPTURING_PHASE&quot; with the proper type (4) 
+PASS Event interface: new CustomEvent(&quot;foo&quot;) must inherit property &quot;AT_TARGET&quot; with the proper type (5) 
+PASS Event interface: new CustomEvent(&quot;foo&quot;) must inherit property &quot;BUBBLING_PHASE&quot; with the proper type (6) 
+PASS Event interface: new CustomEvent(&quot;foo&quot;) must inherit property &quot;eventPhase&quot; with the proper type (7) 
+PASS Event interface: new CustomEvent(&quot;foo&quot;) must inherit property &quot;stopPropagation&quot; with the proper type (8) 
+PASS Event interface: new CustomEvent(&quot;foo&quot;) must inherit property &quot;stopImmediatePropagation&quot; with the proper type (9) 
+PASS Event interface: new CustomEvent(&quot;foo&quot;) must inherit property &quot;bubbles&quot; with the proper type (10) 
+PASS Event interface: new CustomEvent(&quot;foo&quot;) must inherit property &quot;cancelable&quot; with the proper type (11) 
+PASS Event interface: new CustomEvent(&quot;foo&quot;) must inherit property &quot;preventDefault&quot; with the proper type (12) 
+PASS Event interface: new CustomEvent(&quot;foo&quot;) must inherit property &quot;defaultPrevented&quot; with the proper type (13) 
+FAIL Event interface: new CustomEvent(&quot;foo&quot;) must have own property &quot;isTrusted&quot; assert_own_property: expected property &quot;isTrusted&quot; missing
+PASS Event interface: new CustomEvent(&quot;foo&quot;) must inherit property &quot;timeStamp&quot; with the proper type (15) 
+PASS Event interface: new CustomEvent(&quot;foo&quot;) must inherit property &quot;initEvent&quot; with the proper type (16) 
+FAIL Event interface: calling initEvent(DOMString,boolean,boolean) on new CustomEvent(&quot;foo&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL EventTarget interface: existence and properties of interface object assert_own_property: self does not have own property &quot;EventTarget&quot; expected property &quot;EventTarget&quot; missing
+FAIL EventTarget interface object length assert_own_property: self does not have own property &quot;EventTarget&quot; expected property &quot;EventTarget&quot; missing
+FAIL EventTarget interface: existence and properties of interface prototype object assert_own_property: self does not have own property &quot;EventTarget&quot; expected property &quot;EventTarget&quot; missing
+FAIL EventTarget interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_own_property: self does not have own property &quot;EventTarget&quot; expected property &quot;EventTarget&quot; missing
+FAIL EventTarget interface: operation addEventListener(DOMString,EventListener,boolean) assert_own_property: self does not have own property &quot;EventTarget&quot; expected property &quot;EventTarget&quot; missing
+FAIL EventTarget interface: operation removeEventListener(DOMString,EventListener,boolean) assert_own_property: self does not have own property &quot;EventTarget&quot; expected property &quot;EventTarget&quot; missing
+FAIL EventTarget interface: operation dispatchEvent(Event) assert_own_property: self does not have own property &quot;EventTarget&quot; expected property &quot;EventTarget&quot; missing
+FAIL NodeList interface: existence and properties of interface object assert_equals: prototype of self's property &quot;NodeList&quot; is not Function.prototype expected (function) function &quot;function () {
+    [native code]
+}&quot; but got (object) object &quot;[object Object]&quot;
+PASS NodeList interface object length 
+PASS NodeList interface: existence and properties of interface prototype object 
+FAIL NodeList interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_own_property: NodeList.prototype does not have own property &quot;constructor&quot; expected property &quot;constructor&quot; missing
+PASS NodeList interface: operation item(unsigned long) 
+FAIL NodeList interface: attribute length assert_true: The prototype object must have a property &quot;length&quot; expected true got false
+PASS NodeList must be primary interface of document.querySelectorAll(&quot;script&quot;) 
+PASS Stringification of document.querySelectorAll(&quot;script&quot;) 
+PASS NodeList interface: document.querySelectorAll(&quot;script&quot;) must inherit property &quot;item&quot; with the proper type (0) 
+PASS NodeList interface: calling item(unsigned long) on document.querySelectorAll(&quot;script&quot;) with too few arguments must throw TypeError 
+FAIL NodeList interface: document.querySelectorAll(&quot;script&quot;) must inherit property &quot;length&quot; with the proper type (1) assert_inherits: property &quot;length&quot; found on object expected in prototype chain
+FAIL HTMLCollection interface: existence and properties of interface object assert_equals: prototype of self's property &quot;HTMLCollection&quot; is not Function.prototype expected (function) function &quot;function () {
+    [native code]
+}&quot; but got (object) object &quot;[object Object]&quot;
+PASS HTMLCollection interface object length 
+PASS HTMLCollection interface: existence and properties of interface prototype object 
+FAIL HTMLCollection interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_own_property: HTMLCollection.prototype does not have own property &quot;constructor&quot; expected property &quot;constructor&quot; missing
+FAIL HTMLCollection interface: attribute length assert_true: The prototype object must have a property &quot;length&quot; expected true got false
+FAIL HTMLCollection interface: operation item(unsigned long) assert_equals: property has wrong .length expected 1 but got 0
+FAIL HTMLCollection interface: operation namedItem(DOMString) assert_equals: property has wrong .length expected 1 but got 0
+PASS HTMLCollection must be primary interface of document.body.children 
+PASS Stringification of document.body.children 
+FAIL HTMLCollection interface: document.body.children must inherit property &quot;length&quot; with the proper type (0) assert_inherits: property &quot;length&quot; found on object expected in prototype chain
+PASS HTMLCollection interface: document.body.children must inherit property &quot;item&quot; with the proper type (1) 
+FAIL HTMLCollection interface: calling item(unsigned long) on document.body.children with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS HTMLCollection interface: document.body.children must inherit property &quot;namedItem&quot; with the proper type (2) 
+FAIL HTMLCollection interface: calling namedItem(DOMString) on document.body.children with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL MutationObserver interface: existence and properties of interface object assert_equals: prototype of self's property &quot;MutationObserver&quot; is not Function.prototype expected (function) function &quot;function () {
+    [native code]
+}&quot; but got (object) object &quot;[object Object]&quot;
+PASS MutationObserver interface object length 
+PASS MutationObserver interface: existence and properties of interface prototype object 
+FAIL MutationObserver interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_true: MutationObserver.prototype.constructor is not writable expected true got false
+PASS MutationObserver interface: operation observe(Node,MutationObserverInit) 
+PASS MutationObserver interface: operation disconnect() 
+PASS MutationObserver interface: operation takeRecords() 
+FAIL MutationRecord interface: existence and properties of interface object assert_equals: prototype of self's property &quot;MutationRecord&quot; is not Function.prototype expected (function) function &quot;function () {
+    [native code]
+}&quot; but got (object) object &quot;[object Object]&quot;
+PASS MutationRecord interface object length 
+PASS MutationRecord interface: existence and properties of interface prototype object 
+FAIL MutationRecord interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_true: MutationRecord.prototype.constructor is not writable expected true got false
+FAIL MutationRecord interface: attribute type assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL MutationRecord interface: attribute target assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL MutationRecord interface: attribute addedNodes assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL MutationRecord interface: attribute removedNodes assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL MutationRecord interface: attribute previousSibling assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL MutationRecord interface: attribute nextSibling assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL MutationRecord interface: attribute attributeName assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL MutationRecord interface: attribute attributeNamespace assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL MutationRecord interface: attribute oldValue assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Node interface: existence and properties of interface object assert_equals: prototype of self's property &quot;Node&quot; is not Function.prototype expected (function) function &quot;function () {
+    [native code]
+}&quot; but got (object) object &quot;[object Object]&quot;
+PASS Node interface object length 
+FAIL Node interface: existence and properties of interface prototype object assert_own_property: should inherit from EventTarget, but self has no such property expected property &quot;EventTarget&quot; missing
+FAIL Node interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_true: Node.prototype.constructor is not writable expected true got false
+PASS Node interface: constant ELEMENT_NODE on interface object 
+PASS Node interface: constant ELEMENT_NODE on interface prototype object 
+PASS Node interface: constant ATTRIBUTE_NODE on interface object 
+PASS Node interface: constant ATTRIBUTE_NODE on interface prototype object 
+PASS Node interface: constant TEXT_NODE on interface object 
+PASS Node interface: constant TEXT_NODE on interface prototype object 
+PASS Node interface: constant CDATA_SECTION_NODE on interface object 
+PASS Node interface: constant CDATA_SECTION_NODE on interface prototype object 
+PASS Node interface: constant ENTITY_REFERENCE_NODE on interface object 
+PASS Node interface: constant ENTITY_REFERENCE_NODE on interface prototype object 
+PASS Node interface: constant ENTITY_NODE on interface object 
+PASS Node interface: constant ENTITY_NODE on interface prototype object 
+PASS Node interface: constant PROCESSING_INSTRUCTION_NODE on interface object 
+PASS Node interface: constant PROCESSING_INSTRUCTION_NODE on interface prototype object 
+PASS Node interface: constant COMMENT_NODE on interface object 
+PASS Node interface: constant COMMENT_NODE on interface prototype object 
+PASS Node interface: constant DOCUMENT_NODE on interface object 
+PASS Node interface: constant DOCUMENT_NODE on interface prototype object 
+PASS Node interface: constant DOCUMENT_TYPE_NODE on interface object 
+PASS Node interface: constant DOCUMENT_TYPE_NODE on interface prototype object 
+PASS Node interface: constant DOCUMENT_FRAGMENT_NODE on interface object 
+PASS Node interface: constant DOCUMENT_FRAGMENT_NODE on interface prototype object 
+PASS Node interface: constant NOTATION_NODE on interface object 
+PASS Node interface: constant NOTATION_NODE on interface prototype object 
+FAIL Node interface: attribute nodeType assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Node interface: attribute nodeName assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Node interface: attribute baseURI assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Node interface: attribute ownerDocument assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Node interface: attribute parentNode assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Node interface: attribute parentElement assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: operation hasChildNodes() 
+FAIL Node interface: attribute childNodes assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Node interface: attribute firstChild assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Node interface: attribute lastChild assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Node interface: attribute previousSibling assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Node interface: attribute nextSibling assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Node interface: attribute nodeValue assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Node interface: attribute textContent assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: operation normalize() 
+PASS Node interface: operation cloneNode(boolean) 
+FAIL Node interface: operation isEqualNode(Node) assert_equals: property has wrong .length expected 1 but got 0
+PASS Node interface: constant DOCUMENT_POSITION_DISCONNECTED on interface object 
+PASS Node interface: constant DOCUMENT_POSITION_DISCONNECTED on interface prototype object 
+PASS Node interface: constant DOCUMENT_POSITION_PRECEDING on interface object 
+PASS Node interface: constant DOCUMENT_POSITION_PRECEDING on interface prototype object 
+PASS Node interface: constant DOCUMENT_POSITION_FOLLOWING on interface object 
+PASS Node interface: constant DOCUMENT_POSITION_FOLLOWING on interface prototype object 
+PASS Node interface: constant DOCUMENT_POSITION_CONTAINS on interface object 
+PASS Node interface: constant DOCUMENT_POSITION_CONTAINS on interface prototype object 
+PASS Node interface: constant DOCUMENT_POSITION_CONTAINED_BY on interface object 
+PASS Node interface: constant DOCUMENT_POSITION_CONTAINED_BY on interface prototype object 
+PASS Node interface: constant DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC on interface object 
+PASS Node interface: constant DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC on interface prototype object 
+FAIL Node interface: operation compareDocumentPosition(Node) assert_equals: property has wrong .length expected 1 but got 0
+FAIL Node interface: operation contains(Node) assert_equals: property has wrong .length expected 1 but got 0
+FAIL Node interface: operation lookupPrefix(DOMString) assert_equals: property has wrong .length expected 1 but got 0
+FAIL Node interface: operation lookupNamespaceURI(DOMString) assert_equals: property has wrong .length expected 1 but got 0
+FAIL Node interface: operation isDefaultNamespace(DOMString) assert_equals: property has wrong .length expected 1 but got 0
+PASS Node interface: operation insertBefore(Node,Node) 
+PASS Node interface: operation appendChild(Node) 
+PASS Node interface: operation replaceChild(Node,Node) 
+PASS Node interface: operation removeChild(Node) 
+FAIL Document interface: existence and properties of interface object assert_equals: prototype of self's property &quot;Document&quot; is not Function.prototype expected (function) function &quot;function () {
+    [native code]
+}&quot; but got (object) object &quot;[object Object]&quot;
+PASS Document interface object length 
+PASS Document interface: existence and properties of interface prototype object 
+FAIL Document interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_true: Document.prototype.constructor is not writable expected true got false
+FAIL Document interface: attribute implementation assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Document interface: attribute URL assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Document interface: attribute documentURI assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Document interface: attribute origin assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Document interface: attribute compatMode assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Document interface: attribute characterSet assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Document interface: attribute inputEncoding assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Document interface: attribute contentType assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Document interface: attribute doctype assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Document interface: attribute documentElement assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Document interface: operation getElementsByTagName(DOMString) assert_equals: property has wrong .length expected 1 but got 0
+FAIL Document interface: operation getElementsByTagNameNS(DOMString,DOMString) assert_equals: property has wrong .length expected 2 but got 0
+FAIL Document interface: operation getElementsByClassName(DOMString) assert_equals: property has wrong .length expected 1 but got 0
+FAIL Document interface: operation createElement(DOMString) assert_equals: property has wrong .length expected 1 but got 0
+FAIL Document interface: operation createElementNS(DOMString,DOMString) assert_equals: property has wrong .length expected 2 but got 0
+PASS Document interface: operation createDocumentFragment() 
+FAIL Document interface: operation createTextNode(DOMString) assert_equals: property has wrong .length expected 1 but got 0
+FAIL Document interface: operation createComment(DOMString) assert_equals: property has wrong .length expected 1 but got 0
+FAIL Document interface: operation createProcessingInstruction(DOMString,DOMString) assert_equals: property has wrong .length expected 2 but got 0
+FAIL Document interface: operation importNode(Node,boolean) assert_equals: property has wrong .length expected 1 but got 0
+FAIL Document interface: operation adoptNode(Node) assert_equals: property has wrong .length expected 1 but got 0
+FAIL Document interface: operation createAttribute(DOMString) assert_equals: property has wrong .length expected 1 but got 0
+FAIL Document interface: operation createAttributeNS(DOMString,DOMString) assert_equals: property has wrong .length expected 2 but got 0
+FAIL Document interface: operation createEvent(DOMString) assert_equals: property has wrong .length expected 1 but got 0
+PASS Document interface: operation createRange() 
+PASS Document interface: operation createNodeIterator(Node,unsigned long,NodeFilter) 
+PASS Document interface: operation createTreeWalker(Node,unsigned long,NodeFilter) 
+FAIL Document interface: operation getElementById(DOMString) assert_equals: property has wrong .length expected 1 but got 0
+FAIL Document interface: attribute children assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Document interface: attribute firstElementChild assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Document interface: attribute lastElementChild assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Document interface: attribute childElementCount assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Document interface: operation prepend([object Object],[object Object]) 
+PASS Document interface: operation append([object Object],[object Object]) 
+FAIL Document interface: operation query(DOMString) assert_own_property: interface prototype object missing non-static operation expected property &quot;query&quot; missing
+FAIL Document interface: operation queryAll(DOMString) assert_own_property: interface prototype object missing non-static operation expected property &quot;queryAll&quot; missing
+PASS Document interface: operation querySelector(DOMString) 
+PASS Document interface: operation querySelectorAll(DOMString) 
+FAIL XMLDocument interface: existence and properties of interface object assert_equals: prototype of self's property &quot;XMLDocument&quot; is not Function.prototype expected (function) function &quot;function () {
+    [native code]
+}&quot; but got (object) object &quot;[object Object]&quot;
+PASS XMLDocument interface object length 
+FAIL XMLDocument interface: existence and properties of interface prototype object assert_equals: prototype of XMLDocument.prototype is not Document.prototype expected Node object of unknown type but got Node object of unknown type
+FAIL XMLDocument interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_true: XMLDocument.prototype.constructor is not writable expected true got false
+PASS XMLDocument must be primary interface of xmlDoc 
+FAIL Stringification of xmlDoc assert_equals: class string of xmlDoc expected &quot;[object XMLDocument]&quot; but got &quot;[object Document]&quot;
+PASS Document interface: xmlDoc must inherit property &quot;implementation&quot; with the proper type (0) 
+PASS Document interface: xmlDoc must inherit property &quot;URL&quot; with the proper type (1) 
+FAIL Document interface: xmlDoc must inherit property &quot;documentURI&quot; with the proper type (2) assert_equals: expected &quot;string&quot; but got &quot;object&quot;
+PASS Document interface: xmlDoc must inherit property &quot;origin&quot; with the proper type (3) 
+PASS Document interface: xmlDoc must inherit property &quot;compatMode&quot; with the proper type (4) 
+FAIL Document interface: xmlDoc must inherit property &quot;characterSet&quot; with the proper type (5) assert_equals: expected &quot;string&quot; but got &quot;object&quot;
+FAIL Document interface: xmlDoc must inherit property &quot;inputEncoding&quot; with the proper type (6) assert_equals: expected &quot;string&quot; but got &quot;object&quot;
+PASS Document interface: xmlDoc must inherit property &quot;contentType&quot; with the proper type (7) 
+PASS Document interface: xmlDoc must inherit property &quot;doctype&quot; with the proper type (8) 
+PASS Document interface: xmlDoc must inherit property &quot;documentElement&quot; with the proper type (9) 
+PASS Document interface: xmlDoc must inherit property &quot;getElementsByTagName&quot; with the proper type (10) 
+FAIL Document interface: calling getElementsByTagName(DOMString) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Document interface: xmlDoc must inherit property &quot;getElementsByTagNameNS&quot; with the proper type (11) 
+FAIL Document interface: calling getElementsByTagNameNS(DOMString,DOMString) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Document interface: xmlDoc must inherit property &quot;getElementsByClassName&quot; with the proper type (12) 
+FAIL Document interface: calling getElementsByClassName(DOMString) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Document interface: xmlDoc must inherit property &quot;createElement&quot; with the proper type (13) 
+FAIL Document interface: calling createElement(DOMString) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Document interface: xmlDoc must inherit property &quot;createElementNS&quot; with the proper type (14) 
+FAIL Document interface: calling createElementNS(DOMString,DOMString) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Document interface: xmlDoc must inherit property &quot;createDocumentFragment&quot; with the proper type (15) 
+PASS Document interface: xmlDoc must inherit property &quot;createTextNode&quot; with the proper type (16) 
+FAIL Document interface: calling createTextNode(DOMString) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Document interface: xmlDoc must inherit property &quot;createComment&quot; with the proper type (17) 
+FAIL Document interface: calling createComment(DOMString) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Document interface: xmlDoc must inherit property &quot;createProcessingInstruction&quot; with the proper type (18) 
+FAIL Document interface: calling createProcessingInstruction(DOMString,DOMString) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Document interface: xmlDoc must inherit property &quot;importNode&quot; with the proper type (19) 
+FAIL Document interface: calling importNode(Node,boolean) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: NotSupportedError: DOM Exception 9&quot; (&quot;NotSupportedError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Document interface: xmlDoc must inherit property &quot;adoptNode&quot; with the proper type (20) 
+FAIL Document interface: calling adoptNode(Node) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: NotSupportedError: DOM Exception 9&quot; (&quot;NotSupportedError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Document interface: xmlDoc must inherit property &quot;createAttribute&quot; with the proper type (21) 
+FAIL Document interface: calling createAttribute(DOMString) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Document interface: xmlDoc must inherit property &quot;createAttributeNS&quot; with the proper type (22) 
+FAIL Document interface: calling createAttributeNS(DOMString,DOMString) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Document interface: xmlDoc must inherit property &quot;createEvent&quot; with the proper type (23) 
+FAIL Document interface: calling createEvent(DOMString) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: NotSupportedError: DOM Exception 9&quot; (&quot;NotSupportedError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Document interface: xmlDoc must inherit property &quot;createRange&quot; with the proper type (24) 
+PASS Document interface: xmlDoc must inherit property &quot;createNodeIterator&quot; with the proper type (25) 
+PASS Document interface: calling createNodeIterator(Node,unsigned long,NodeFilter) on xmlDoc with too few arguments must throw TypeError 
+PASS Document interface: xmlDoc must inherit property &quot;createTreeWalker&quot; with the proper type (26) 
+PASS Document interface: calling createTreeWalker(Node,unsigned long,NodeFilter) on xmlDoc with too few arguments must throw TypeError 
+PASS Document interface: xmlDoc must inherit property &quot;getElementById&quot; with the proper type (27) 
+FAIL Document interface: calling getElementById(DOMString) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Document interface: xmlDoc must inherit property &quot;children&quot; with the proper type (28) 
+PASS Document interface: xmlDoc must inherit property &quot;firstElementChild&quot; with the proper type (29) 
+PASS Document interface: xmlDoc must inherit property &quot;lastElementChild&quot; with the proper type (30) 
+PASS Document interface: xmlDoc must inherit property &quot;childElementCount&quot; with the proper type (31) 
+PASS Document interface: xmlDoc must inherit property &quot;prepend&quot; with the proper type (32) 
+FAIL Document interface: calling prepend([object Object],[object Object]) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Document interface: xmlDoc must inherit property &quot;append&quot; with the proper type (33) 
+FAIL Document interface: calling append([object Object],[object Object]) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Document interface: xmlDoc must inherit property &quot;query&quot; with the proper type (34) assert_inherits: property &quot;query&quot; not found in prototype chain
+FAIL Document interface: calling query(DOMString) on xmlDoc with too few arguments must throw TypeError assert_inherits: property &quot;query&quot; not found in prototype chain
+FAIL Document interface: xmlDoc must inherit property &quot;queryAll&quot; with the proper type (35) assert_inherits: property &quot;queryAll&quot; not found in prototype chain
+FAIL Document interface: calling queryAll(DOMString) on xmlDoc with too few arguments must throw TypeError assert_inherits: property &quot;queryAll&quot; not found in prototype chain
+PASS Document interface: xmlDoc must inherit property &quot;querySelector&quot; with the proper type (36) 
+PASS Document interface: calling querySelector(DOMString) on xmlDoc with too few arguments must throw TypeError 
+PASS Document interface: xmlDoc must inherit property &quot;querySelectorAll&quot; with the proper type (37) 
+PASS Document interface: calling querySelectorAll(DOMString) on xmlDoc with too few arguments must throw TypeError 
+PASS Node interface: xmlDoc must inherit property &quot;ELEMENT_NODE&quot; with the proper type (0) 
+PASS Node interface: xmlDoc must inherit property &quot;ATTRIBUTE_NODE&quot; with the proper type (1) 
+PASS Node interface: xmlDoc must inherit property &quot;TEXT_NODE&quot; with the proper type (2) 
+PASS Node interface: xmlDoc must inherit property &quot;CDATA_SECTION_NODE&quot; with the proper type (3) 
+PASS Node interface: xmlDoc must inherit property &quot;ENTITY_REFERENCE_NODE&quot; with the proper type (4) 
+PASS Node interface: xmlDoc must inherit property &quot;ENTITY_NODE&quot; with the proper type (5) 
+PASS Node interface: xmlDoc must inherit property &quot;PROCESSING_INSTRUCTION_NODE&quot; with the proper type (6) 
+PASS Node interface: xmlDoc must inherit property &quot;COMMENT_NODE&quot; with the proper type (7) 
+PASS Node interface: xmlDoc must inherit property &quot;DOCUMENT_NODE&quot; with the proper type (8) 
+PASS Node interface: xmlDoc must inherit property &quot;DOCUMENT_TYPE_NODE&quot; with the proper type (9) 
+PASS Node interface: xmlDoc must inherit property &quot;DOCUMENT_FRAGMENT_NODE&quot; with the proper type (10) 
+PASS Node interface: xmlDoc must inherit property &quot;NOTATION_NODE&quot; with the proper type (11) 
+PASS Node interface: xmlDoc must inherit property &quot;nodeType&quot; with the proper type (12) 
+PASS Node interface: xmlDoc must inherit property &quot;nodeName&quot; with the proper type (13) 
+PASS Node interface: xmlDoc must inherit property &quot;baseURI&quot; with the proper type (14) 
+PASS Node interface: xmlDoc must inherit property &quot;ownerDocument&quot; with the proper type (15) 
+PASS Node interface: xmlDoc must inherit property &quot;parentNode&quot; with the proper type (16) 
+PASS Node interface: xmlDoc must inherit property &quot;parentElement&quot; with the proper type (17) 
+PASS Node interface: xmlDoc must inherit property &quot;hasChildNodes&quot; with the proper type (18) 
+PASS Node interface: xmlDoc must inherit property &quot;childNodes&quot; with the proper type (19) 
+PASS Node interface: xmlDoc must inherit property &quot;firstChild&quot; with the proper type (20) 
+PASS Node interface: xmlDoc must inherit property &quot;lastChild&quot; with the proper type (21) 
+PASS Node interface: xmlDoc must inherit property &quot;previousSibling&quot; with the proper type (22) 
+PASS Node interface: xmlDoc must inherit property &quot;nextSibling&quot; with the proper type (23) 
+PASS Node interface: xmlDoc must inherit property &quot;nodeValue&quot; with the proper type (24) 
+PASS Node interface: xmlDoc must inherit property &quot;textContent&quot; with the proper type (25) 
+PASS Node interface: xmlDoc must inherit property &quot;normalize&quot; with the proper type (26) 
+PASS Node interface: xmlDoc must inherit property &quot;cloneNode&quot; with the proper type (27) 
+PASS Node interface: calling cloneNode(boolean) on xmlDoc with too few arguments must throw TypeError 
+PASS Node interface: xmlDoc must inherit property &quot;isEqualNode&quot; with the proper type (28) 
+FAIL Node interface: calling isEqualNode(Node) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: xmlDoc must inherit property &quot;DOCUMENT_POSITION_DISCONNECTED&quot; with the proper type (29) 
+PASS Node interface: xmlDoc must inherit property &quot;DOCUMENT_POSITION_PRECEDING&quot; with the proper type (30) 
+PASS Node interface: xmlDoc must inherit property &quot;DOCUMENT_POSITION_FOLLOWING&quot; with the proper type (31) 
+PASS Node interface: xmlDoc must inherit property &quot;DOCUMENT_POSITION_CONTAINS&quot; with the proper type (32) 
+PASS Node interface: xmlDoc must inherit property &quot;DOCUMENT_POSITION_CONTAINED_BY&quot; with the proper type (33) 
+PASS Node interface: xmlDoc must inherit property &quot;DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC&quot; with the proper type (34) 
+PASS Node interface: xmlDoc must inherit property &quot;compareDocumentPosition&quot; with the proper type (35) 
+FAIL Node interface: calling compareDocumentPosition(Node) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: xmlDoc must inherit property &quot;contains&quot; with the proper type (36) 
+FAIL Node interface: calling contains(Node) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: xmlDoc must inherit property &quot;lookupPrefix&quot; with the proper type (37) 
+FAIL Node interface: calling lookupPrefix(DOMString) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: xmlDoc must inherit property &quot;lookupNamespaceURI&quot; with the proper type (38) 
+FAIL Node interface: calling lookupNamespaceURI(DOMString) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: xmlDoc must inherit property &quot;isDefaultNamespace&quot; with the proper type (39) 
+FAIL Node interface: calling isDefaultNamespace(DOMString) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: xmlDoc must inherit property &quot;insertBefore&quot; with the proper type (40) 
+FAIL Node interface: calling insertBefore(Node,Node) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: NotFoundError: DOM Exception 8&quot; (&quot;NotFoundError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Node interface: xmlDoc must inherit property &quot;appendChild&quot; with the proper type (41) 
+FAIL Node interface: calling appendChild(Node) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: NotFoundError: DOM Exception 8&quot; (&quot;NotFoundError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Node interface: xmlDoc must inherit property &quot;replaceChild&quot; with the proper type (42) 
+FAIL Node interface: calling replaceChild(Node,Node) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: xmlDoc must inherit property &quot;removeChild&quot; with the proper type (43) 
+FAIL Node interface: calling removeChild(Node) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: NotFoundError: DOM Exception 8&quot; (&quot;NotFoundError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS EventTarget interface: xmlDoc must inherit property &quot;addEventListener&quot; with the proper type (0) 
+FAIL EventTarget interface: calling addEventListener(DOMString,EventListener,boolean) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS EventTarget interface: xmlDoc must inherit property &quot;removeEventListener&quot; with the proper type (1) 
+FAIL EventTarget interface: calling removeEventListener(DOMString,EventListener,boolean) on xmlDoc with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS EventTarget interface: xmlDoc must inherit property &quot;dispatchEvent&quot; with the proper type (2) 
+PASS EventTarget interface: calling dispatchEvent(Event) on xmlDoc with too few arguments must throw TypeError 
+FAIL DOMImplementation interface: existence and properties of interface object assert_equals: prototype of self's property &quot;DOMImplementation&quot; is not Function.prototype expected (function) function &quot;function () {
+    [native code]
+}&quot; but got (object) object &quot;[object Object]&quot;
+PASS DOMImplementation interface object length 
+PASS DOMImplementation interface: existence and properties of interface prototype object 
+FAIL DOMImplementation interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_true: DOMImplementation.prototype.constructor is not writable expected true got false
+FAIL DOMImplementation interface: operation createDocumentType(DOMString,DOMString,DOMString) assert_equals: property has wrong .length expected 3 but got 0
+FAIL DOMImplementation interface: operation createDocument(DOMString,DOMString,DocumentType) assert_equals: property has wrong .length expected 2 but got 0
+PASS DOMImplementation interface: operation createHTMLDocument(DOMString) 
+PASS DOMImplementation interface: operation hasFeature() 
+PASS DOMImplementation must be primary interface of document.implementation 
+PASS Stringification of document.implementation 
+PASS DOMImplementation interface: document.implementation must inherit property &quot;createDocumentType&quot; with the proper type (0) 
+FAIL DOMImplementation interface: calling createDocumentType(DOMString,DOMString,DOMString) on document.implementation with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: InvalidCharacterError: DOM Exception 5&quot; (&quot;InvalidCharacterError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS DOMImplementation interface: document.implementation must inherit property &quot;createDocument&quot; with the proper type (1) 
+FAIL DOMImplementation interface: calling createDocument(DOMString,DOMString,DocumentType) on document.implementation with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS DOMImplementation interface: document.implementation must inherit property &quot;createHTMLDocument&quot; with the proper type (2) 
+PASS DOMImplementation interface: calling createHTMLDocument(DOMString) on document.implementation with too few arguments must throw TypeError 
+PASS DOMImplementation interface: document.implementation must inherit property &quot;hasFeature&quot; with the proper type (3) 
+FAIL DocumentFragment interface: existence and properties of interface object assert_equals: prototype of self's property &quot;DocumentFragment&quot; is not Function.prototype expected (function) function &quot;function () {
+    [native code]
+}&quot; but got (object) object &quot;[object Object]&quot;
+PASS DocumentFragment interface object length 
+PASS DocumentFragment interface: existence and properties of interface prototype object 
+FAIL DocumentFragment interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_true: DocumentFragment.prototype.constructor is not writable expected true got false
+FAIL DocumentFragment interface: operation getElementById(DOMString) assert_equals: property has wrong .length expected 1 but got 0
+FAIL DocumentFragment interface: attribute children assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL DocumentFragment interface: attribute firstElementChild assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL DocumentFragment interface: attribute lastElementChild assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL DocumentFragment interface: attribute childElementCount assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS DocumentFragment interface: operation prepend([object Object],[object Object]) 
+PASS DocumentFragment interface: operation append([object Object],[object Object]) 
+FAIL DocumentFragment interface: operation query(DOMString) assert_own_property: interface prototype object missing non-static operation expected property &quot;query&quot; missing
+FAIL DocumentFragment interface: operation queryAll(DOMString) assert_own_property: interface prototype object missing non-static operation expected property &quot;queryAll&quot; missing
+PASS DocumentFragment interface: operation querySelector(DOMString) 
+PASS DocumentFragment interface: operation querySelectorAll(DOMString) 
+PASS DocumentFragment must be primary interface of document.createDocumentFragment() 
+PASS Stringification of document.createDocumentFragment() 
+PASS DocumentFragment interface: document.createDocumentFragment() must inherit property &quot;getElementById&quot; with the proper type (0) 
+FAIL DocumentFragment interface: calling getElementById(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS DocumentFragment interface: document.createDocumentFragment() must inherit property &quot;children&quot; with the proper type (1) 
+PASS DocumentFragment interface: document.createDocumentFragment() must inherit property &quot;firstElementChild&quot; with the proper type (2) 
+PASS DocumentFragment interface: document.createDocumentFragment() must inherit property &quot;lastElementChild&quot; with the proper type (3) 
+PASS DocumentFragment interface: document.createDocumentFragment() must inherit property &quot;childElementCount&quot; with the proper type (4) 
+PASS DocumentFragment interface: document.createDocumentFragment() must inherit property &quot;prepend&quot; with the proper type (5) 
+FAIL DocumentFragment interface: calling prepend([object Object],[object Object]) on document.createDocumentFragment() with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS DocumentFragment interface: document.createDocumentFragment() must inherit property &quot;append&quot; with the proper type (6) 
+FAIL DocumentFragment interface: calling append([object Object],[object Object]) on document.createDocumentFragment() with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL DocumentFragment interface: document.createDocumentFragment() must inherit property &quot;query&quot; with the proper type (7) assert_inherits: property &quot;query&quot; not found in prototype chain
+FAIL DocumentFragment interface: calling query(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError assert_inherits: property &quot;query&quot; not found in prototype chain
+FAIL DocumentFragment interface: document.createDocumentFragment() must inherit property &quot;queryAll&quot; with the proper type (8) assert_inherits: property &quot;queryAll&quot; not found in prototype chain
+FAIL DocumentFragment interface: calling queryAll(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError assert_inherits: property &quot;queryAll&quot; not found in prototype chain
+PASS DocumentFragment interface: document.createDocumentFragment() must inherit property &quot;querySelector&quot; with the proper type (9) 
+PASS DocumentFragment interface: calling querySelector(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError 
+PASS DocumentFragment interface: document.createDocumentFragment() must inherit property &quot;querySelectorAll&quot; with the proper type (10) 
+PASS DocumentFragment interface: calling querySelectorAll(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;ELEMENT_NODE&quot; with the proper type (0) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;ATTRIBUTE_NODE&quot; with the proper type (1) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;TEXT_NODE&quot; with the proper type (2) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;CDATA_SECTION_NODE&quot; with the proper type (3) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;ENTITY_REFERENCE_NODE&quot; with the proper type (4) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;ENTITY_NODE&quot; with the proper type (5) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;PROCESSING_INSTRUCTION_NODE&quot; with the proper type (6) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;COMMENT_NODE&quot; with the proper type (7) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;DOCUMENT_NODE&quot; with the proper type (8) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;DOCUMENT_TYPE_NODE&quot; with the proper type (9) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;DOCUMENT_FRAGMENT_NODE&quot; with the proper type (10) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;NOTATION_NODE&quot; with the proper type (11) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;nodeType&quot; with the proper type (12) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;nodeName&quot; with the proper type (13) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;baseURI&quot; with the proper type (14) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;ownerDocument&quot; with the proper type (15) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;parentNode&quot; with the proper type (16) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;parentElement&quot; with the proper type (17) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;hasChildNodes&quot; with the proper type (18) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;childNodes&quot; with the proper type (19) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;firstChild&quot; with the proper type (20) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;lastChild&quot; with the proper type (21) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;previousSibling&quot; with the proper type (22) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;nextSibling&quot; with the proper type (23) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;nodeValue&quot; with the proper type (24) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;textContent&quot; with the proper type (25) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;normalize&quot; with the proper type (26) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;cloneNode&quot; with the proper type (27) 
+PASS Node interface: calling cloneNode(boolean) on document.createDocumentFragment() with too few arguments must throw TypeError 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;isEqualNode&quot; with the proper type (28) 
+FAIL Node interface: calling isEqualNode(Node) on document.createDocumentFragment() with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;DOCUMENT_POSITION_DISCONNECTED&quot; with the proper type (29) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;DOCUMENT_POSITION_PRECEDING&quot; with the proper type (30) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;DOCUMENT_POSITION_FOLLOWING&quot; with the proper type (31) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;DOCUMENT_POSITION_CONTAINS&quot; with the proper type (32) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;DOCUMENT_POSITION_CONTAINED_BY&quot; with the proper type (33) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC&quot; with the proper type (34) 
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;compareDocumentPosition&quot; with the proper type (35) 
+FAIL Node interface: calling compareDocumentPosition(Node) on document.createDocumentFragment() with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;contains&quot; with the proper type (36) 
+FAIL Node interface: calling contains(Node) on document.createDocumentFragment() with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;lookupPrefix&quot; with the proper type (37) 
+FAIL Node interface: calling lookupPrefix(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;lookupNamespaceURI&quot; with the proper type (38) 
+FAIL Node interface: calling lookupNamespaceURI(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;isDefaultNamespace&quot; with the proper type (39) 
+FAIL Node interface: calling isDefaultNamespace(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;insertBefore&quot; with the proper type (40) 
+FAIL Node interface: calling insertBefore(Node,Node) on document.createDocumentFragment() with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: NotFoundError: DOM Exception 8&quot; (&quot;NotFoundError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;appendChild&quot; with the proper type (41) 
+FAIL Node interface: calling appendChild(Node) on document.createDocumentFragment() with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: NotFoundError: DOM Exception 8&quot; (&quot;NotFoundError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;replaceChild&quot; with the proper type (42) 
+FAIL Node interface: calling replaceChild(Node,Node) on document.createDocumentFragment() with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: document.createDocumentFragment() must inherit property &quot;removeChild&quot; with the proper type (43) 
+FAIL Node interface: calling removeChild(Node) on document.createDocumentFragment() with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: NotFoundError: DOM Exception 8&quot; (&quot;NotFoundError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS EventTarget interface: document.createDocumentFragment() must inherit property &quot;addEventListener&quot; with the proper type (0) 
+FAIL EventTarget interface: calling addEventListener(DOMString,EventListener,boolean) on document.createDocumentFragment() with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS EventTarget interface: document.createDocumentFragment() must inherit property &quot;removeEventListener&quot; with the proper type (1) 
+FAIL EventTarget interface: calling removeEventListener(DOMString,EventListener,boolean) on document.createDocumentFragment() with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS EventTarget interface: document.createDocumentFragment() must inherit property &quot;dispatchEvent&quot; with the proper type (2) 
+PASS EventTarget interface: calling dispatchEvent(Event) on document.createDocumentFragment() with too few arguments must throw TypeError 
+FAIL DocumentType interface: existence and properties of interface object assert_equals: prototype of self's property &quot;DocumentType&quot; is not Function.prototype expected (function) function &quot;function () {
+    [native code]
+}&quot; but got (object) object &quot;[object Object]&quot;
+PASS DocumentType interface object length 
+PASS DocumentType interface: existence and properties of interface prototype object 
+FAIL DocumentType interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_true: DocumentType.prototype.constructor is not writable expected true got false
+FAIL DocumentType interface: attribute name assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL DocumentType interface: attribute publicId assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL DocumentType interface: attribute systemId assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS DocumentType interface: operation before([object Object],[object Object]) 
+PASS DocumentType interface: operation after([object Object],[object Object]) 
+PASS DocumentType interface: operation replaceWith([object Object],[object Object]) 
+PASS DocumentType interface: operation remove() 
+PASS DocumentType must be primary interface of document.doctype 
+PASS Stringification of document.doctype 
+PASS DocumentType interface: document.doctype must inherit property &quot;name&quot; with the proper type (0) 
+FAIL DocumentType interface: document.doctype must inherit property &quot;publicId&quot; with the proper type (1) assert_equals: expected &quot;string&quot; but got &quot;object&quot;
+FAIL DocumentType interface: document.doctype must inherit property &quot;systemId&quot; with the proper type (2) assert_equals: expected &quot;string&quot; but got &quot;object&quot;
+PASS DocumentType interface: document.doctype must inherit property &quot;before&quot; with the proper type (3) 
+FAIL DocumentType interface: calling before([object Object],[object Object]) on document.doctype with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS DocumentType interface: document.doctype must inherit property &quot;after&quot; with the proper type (4) 
+FAIL DocumentType interface: calling after([object Object],[object Object]) on document.doctype with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS DocumentType interface: document.doctype must inherit property &quot;replaceWith&quot; with the proper type (5) 
+FAIL DocumentType interface: calling replaceWith([object Object],[object Object]) on document.doctype with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS DocumentType interface: document.doctype must inherit property &quot;remove&quot; with the proper type (6) 
+PASS Node interface: document.doctype must inherit property &quot;ELEMENT_NODE&quot; with the proper type (0) 
+PASS Node interface: document.doctype must inherit property &quot;ATTRIBUTE_NODE&quot; with the proper type (1) 
+PASS Node interface: document.doctype must inherit property &quot;TEXT_NODE&quot; with the proper type (2) 
+PASS Node interface: document.doctype must inherit property &quot;CDATA_SECTION_NODE&quot; with the proper type (3) 
+PASS Node interface: document.doctype must inherit property &quot;ENTITY_REFERENCE_NODE&quot; with the proper type (4) 
+PASS Node interface: document.doctype must inherit property &quot;ENTITY_NODE&quot; with the proper type (5) 
+PASS Node interface: document.doctype must inherit property &quot;PROCESSING_INSTRUCTION_NODE&quot; with the proper type (6) 
+PASS Node interface: document.doctype must inherit property &quot;COMMENT_NODE&quot; with the proper type (7) 
+PASS Node interface: document.doctype must inherit property &quot;DOCUMENT_NODE&quot; with the proper type (8) 
+PASS Node interface: document.doctype must inherit property &quot;DOCUMENT_TYPE_NODE&quot; with the proper type (9) 
+PASS Node interface: document.doctype must inherit property &quot;DOCUMENT_FRAGMENT_NODE&quot; with the proper type (10) 
+PASS Node interface: document.doctype must inherit property &quot;NOTATION_NODE&quot; with the proper type (11) 
+PASS Node interface: document.doctype must inherit property &quot;nodeType&quot; with the proper type (12) 
+PASS Node interface: document.doctype must inherit property &quot;nodeName&quot; with the proper type (13) 
+PASS Node interface: document.doctype must inherit property &quot;baseURI&quot; with the proper type (14) 
+PASS Node interface: document.doctype must inherit property &quot;ownerDocument&quot; with the proper type (15) 
+PASS Node interface: document.doctype must inherit property &quot;parentNode&quot; with the proper type (16) 
+PASS Node interface: document.doctype must inherit property &quot;parentElement&quot; with the proper type (17) 
+PASS Node interface: document.doctype must inherit property &quot;hasChildNodes&quot; with the proper type (18) 
+PASS Node interface: document.doctype must inherit property &quot;childNodes&quot; with the proper type (19) 
+PASS Node interface: document.doctype must inherit property &quot;firstChild&quot; with the proper type (20) 
+PASS Node interface: document.doctype must inherit property &quot;lastChild&quot; with the proper type (21) 
+PASS Node interface: document.doctype must inherit property &quot;previousSibling&quot; with the proper type (22) 
+PASS Node interface: document.doctype must inherit property &quot;nextSibling&quot; with the proper type (23) 
+PASS Node interface: document.doctype must inherit property &quot;nodeValue&quot; with the proper type (24) 
+PASS Node interface: document.doctype must inherit property &quot;textContent&quot; with the proper type (25) 
+PASS Node interface: document.doctype must inherit property &quot;normalize&quot; with the proper type (26) 
+PASS Node interface: document.doctype must inherit property &quot;cloneNode&quot; with the proper type (27) 
+PASS Node interface: calling cloneNode(boolean) on document.doctype with too few arguments must throw TypeError 
+PASS Node interface: document.doctype must inherit property &quot;isEqualNode&quot; with the proper type (28) 
+FAIL Node interface: calling isEqualNode(Node) on document.doctype with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: document.doctype must inherit property &quot;DOCUMENT_POSITION_DISCONNECTED&quot; with the proper type (29) 
+PASS Node interface: document.doctype must inherit property &quot;DOCUMENT_POSITION_PRECEDING&quot; with the proper type (30) 
+PASS Node interface: document.doctype must inherit property &quot;DOCUMENT_POSITION_FOLLOWING&quot; with the proper type (31) 
+PASS Node interface: document.doctype must inherit property &quot;DOCUMENT_POSITION_CONTAINS&quot; with the proper type (32) 
+PASS Node interface: document.doctype must inherit property &quot;DOCUMENT_POSITION_CONTAINED_BY&quot; with the proper type (33) 
+PASS Node interface: document.doctype must inherit property &quot;DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC&quot; with the proper type (34) 
+PASS Node interface: document.doctype must inherit property &quot;compareDocumentPosition&quot; with the proper type (35) 
+FAIL Node interface: calling compareDocumentPosition(Node) on document.doctype with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: document.doctype must inherit property &quot;contains&quot; with the proper type (36) 
+FAIL Node interface: calling contains(Node) on document.doctype with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: document.doctype must inherit property &quot;lookupPrefix&quot; with the proper type (37) 
+FAIL Node interface: calling lookupPrefix(DOMString) on document.doctype with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: document.doctype must inherit property &quot;lookupNamespaceURI&quot; with the proper type (38) 
+FAIL Node interface: calling lookupNamespaceURI(DOMString) on document.doctype with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: document.doctype must inherit property &quot;isDefaultNamespace&quot; with the proper type (39) 
+FAIL Node interface: calling isDefaultNamespace(DOMString) on document.doctype with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: document.doctype must inherit property &quot;insertBefore&quot; with the proper type (40) 
+FAIL Node interface: calling insertBefore(Node,Node) on document.doctype with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; (&quot;HierarchyRequestError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Node interface: document.doctype must inherit property &quot;appendChild&quot; with the proper type (41) 
+FAIL Node interface: calling appendChild(Node) on document.doctype with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; (&quot;HierarchyRequestError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Node interface: document.doctype must inherit property &quot;replaceChild&quot; with the proper type (42) 
+FAIL Node interface: calling replaceChild(Node,Node) on document.doctype with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; (&quot;HierarchyRequestError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Node interface: document.doctype must inherit property &quot;removeChild&quot; with the proper type (43) 
+FAIL Node interface: calling removeChild(Node) on document.doctype with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: NotFoundError: DOM Exception 8&quot; (&quot;NotFoundError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS EventTarget interface: document.doctype must inherit property &quot;addEventListener&quot; with the proper type (0) 
+FAIL EventTarget interface: calling addEventListener(DOMString,EventListener,boolean) on document.doctype with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS EventTarget interface: document.doctype must inherit property &quot;removeEventListener&quot; with the proper type (1) 
+FAIL EventTarget interface: calling removeEventListener(DOMString,EventListener,boolean) on document.doctype with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS EventTarget interface: document.doctype must inherit property &quot;dispatchEvent&quot; with the proper type (2) 
+PASS EventTarget interface: calling dispatchEvent(Event) on document.doctype with too few arguments must throw TypeError 
+FAIL Element interface: existence and properties of interface object assert_equals: prototype of self's property &quot;Element&quot; is not Function.prototype expected (function) function &quot;function () {
+    [native code]
+}&quot; but got (object) object &quot;[object Object]&quot;
+PASS Element interface object length 
+PASS Element interface: existence and properties of interface prototype object 
+FAIL Element interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_true: Element.prototype.constructor is not writable expected true got false
+FAIL Element interface: attribute namespaceURI assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Element interface: attribute prefix assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Element interface: attribute localName assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Element interface: attribute tagName assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Element interface: attribute id assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Element interface: attribute className assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Element interface: attribute classList assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Element interface: operation hasAttributes() 
+FAIL Element interface: attribute attributes assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Element interface: operation getAttribute(DOMString) assert_equals: property has wrong .length expected 1 but got 0
+FAIL Element interface: operation getAttributeNS(DOMString,DOMString) assert_equals: property has wrong .length expected 2 but got 0
+FAIL Element interface: operation setAttribute(DOMString,DOMString) assert_equals: property has wrong .length expected 2 but got 0
+FAIL Element interface: operation setAttributeNS(DOMString,DOMString,DOMString) assert_equals: property has wrong .length expected 3 but got 0
+FAIL Element interface: operation removeAttribute(DOMString) assert_equals: property has wrong .length expected 1 but got 0
+PASS Element interface: operation removeAttributeNS(DOMString,DOMString) 
+PASS Element interface: operation hasAttribute(DOMString) 
+FAIL Element interface: operation hasAttributeNS(DOMString,DOMString) assert_equals: property has wrong .length expected 2 but got 0
+FAIL Element interface: operation getAttributeNode(DOMString) assert_equals: property has wrong .length expected 1 but got 0
+FAIL Element interface: operation getAttributeNodeNS(DOMString,DOMString) assert_equals: property has wrong .length expected 2 but got 0
+FAIL Element interface: operation setAttributeNode(Attr) assert_equals: property has wrong .length expected 1 but got 0
+FAIL Element interface: operation setAttributeNodeNS(Attr) assert_equals: property has wrong .length expected 1 but got 0
+FAIL Element interface: operation removeAttributeNode(Attr) assert_equals: property has wrong .length expected 1 but got 0
+PASS Element interface: operation closest(DOMString) 
+PASS Element interface: operation matches(DOMString) 
+FAIL Element interface: operation getElementsByTagName(DOMString) assert_equals: property has wrong .length expected 1 but got 0
+FAIL Element interface: operation getElementsByTagNameNS(DOMString,DOMString) assert_equals: property has wrong .length expected 2 but got 0
+FAIL Element interface: operation getElementsByClassName(DOMString) assert_equals: property has wrong .length expected 1 but got 0
+FAIL Element interface: attribute children assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Element interface: attribute firstElementChild assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Element interface: attribute lastElementChild assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Element interface: attribute childElementCount assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Element interface: operation prepend([object Object],[object Object]) 
+PASS Element interface: operation append([object Object],[object Object]) 
+FAIL Element interface: operation query(DOMString) assert_own_property: interface prototype object missing non-static operation expected property &quot;query&quot; missing
+FAIL Element interface: operation queryAll(DOMString) assert_own_property: interface prototype object missing non-static operation expected property &quot;queryAll&quot; missing
+PASS Element interface: operation querySelector(DOMString) 
+PASS Element interface: operation querySelectorAll(DOMString) 
+FAIL Element interface: attribute previousElementSibling assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Element interface: attribute nextElementSibling assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Element interface: operation before([object Object],[object Object]) 
+PASS Element interface: operation after([object Object],[object Object]) 
+PASS Element interface: operation replaceWith([object Object],[object Object]) 
+PASS Element interface: operation remove() 
+PASS Element must be primary interface of element 
+PASS Stringification of element 
+PASS Element interface: element must inherit property &quot;namespaceURI&quot; with the proper type (0) 
+PASS Element interface: element must inherit property &quot;prefix&quot; with the proper type (1) 
+PASS Element interface: element must inherit property &quot;localName&quot; with the proper type (2) 
+PASS Element interface: element must inherit property &quot;tagName&quot; with the proper type (3) 
+PASS Element interface: element must inherit property &quot;id&quot; with the proper type (4) 
+PASS Element interface: element must inherit property &quot;className&quot; with the proper type (5) 
+PASS Element interface: element must inherit property &quot;classList&quot; with the proper type (6) 
+PASS Element interface: element must inherit property &quot;hasAttributes&quot; with the proper type (7) 
+PASS Element interface: element must inherit property &quot;attributes&quot; with the proper type (8) 
+PASS Element interface: element must inherit property &quot;getAttribute&quot; with the proper type (9) 
+FAIL Element interface: calling getAttribute(DOMString) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Element interface: element must inherit property &quot;getAttributeNS&quot; with the proper type (10) 
+FAIL Element interface: calling getAttributeNS(DOMString,DOMString) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Element interface: element must inherit property &quot;setAttribute&quot; with the proper type (11) 
+FAIL Element interface: calling setAttribute(DOMString,DOMString) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Element interface: element must inherit property &quot;setAttributeNS&quot; with the proper type (12) 
+FAIL Element interface: calling setAttributeNS(DOMString,DOMString,DOMString) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Element interface: element must inherit property &quot;removeAttribute&quot; with the proper type (13) 
+FAIL Element interface: calling removeAttribute(DOMString) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Element interface: element must inherit property &quot;removeAttributeNS&quot; with the proper type (14) 
+PASS Element interface: calling removeAttributeNS(DOMString,DOMString) on element with too few arguments must throw TypeError 
+PASS Element interface: element must inherit property &quot;hasAttribute&quot; with the proper type (15) 
+PASS Element interface: calling hasAttribute(DOMString) on element with too few arguments must throw TypeError 
+PASS Element interface: element must inherit property &quot;hasAttributeNS&quot; with the proper type (16) 
+FAIL Element interface: calling hasAttributeNS(DOMString,DOMString) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Element interface: element must inherit property &quot;getAttributeNode&quot; with the proper type (17) 
+FAIL Element interface: calling getAttributeNode(DOMString) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Element interface: element must inherit property &quot;getAttributeNodeNS&quot; with the proper type (18) 
+FAIL Element interface: calling getAttributeNodeNS(DOMString,DOMString) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Element interface: element must inherit property &quot;setAttributeNode&quot; with the proper type (19) 
+FAIL Element interface: calling setAttributeNode(Attr) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: TypeMismatchError: DOM Exception 17&quot; (&quot;TypeMismatchError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Element interface: element must inherit property &quot;setAttributeNodeNS&quot; with the proper type (20) 
+FAIL Element interface: calling setAttributeNodeNS(Attr) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: TypeMismatchError: DOM Exception 17&quot; (&quot;TypeMismatchError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Element interface: element must inherit property &quot;removeAttributeNode&quot; with the proper type (21) 
+FAIL Element interface: calling removeAttributeNode(Attr) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: TypeMismatchError: DOM Exception 17&quot; (&quot;TypeMismatchError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Element interface: element must inherit property &quot;closest&quot; with the proper type (22) 
+PASS Element interface: calling closest(DOMString) on element with too few arguments must throw TypeError 
+PASS Element interface: element must inherit property &quot;matches&quot; with the proper type (23) 
+PASS Element interface: calling matches(DOMString) on element with too few arguments must throw TypeError 
+PASS Element interface: element must inherit property &quot;getElementsByTagName&quot; with the proper type (24) 
+FAIL Element interface: calling getElementsByTagName(DOMString) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Element interface: element must inherit property &quot;getElementsByTagNameNS&quot; with the proper type (25) 
+FAIL Element interface: calling getElementsByTagNameNS(DOMString,DOMString) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Element interface: element must inherit property &quot;getElementsByClassName&quot; with the proper type (26) 
+FAIL Element interface: calling getElementsByClassName(DOMString) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Element interface: element must inherit property &quot;children&quot; with the proper type (27) 
+PASS Element interface: element must inherit property &quot;firstElementChild&quot; with the proper type (28) 
+PASS Element interface: element must inherit property &quot;lastElementChild&quot; with the proper type (29) 
+PASS Element interface: element must inherit property &quot;childElementCount&quot; with the proper type (30) 
+PASS Element interface: element must inherit property &quot;prepend&quot; with the proper type (31) 
+FAIL Element interface: calling prepend([object Object],[object Object]) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Element interface: element must inherit property &quot;append&quot; with the proper type (32) 
+FAIL Element interface: calling append([object Object],[object Object]) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Element interface: element must inherit property &quot;query&quot; with the proper type (33) assert_inherits: property &quot;query&quot; not found in prototype chain
+FAIL Element interface: calling query(DOMString) on element with too few arguments must throw TypeError assert_inherits: property &quot;query&quot; not found in prototype chain
+FAIL Element interface: element must inherit property &quot;queryAll&quot; with the proper type (34) assert_inherits: property &quot;queryAll&quot; not found in prototype chain
+FAIL Element interface: calling queryAll(DOMString) on element with too few arguments must throw TypeError assert_inherits: property &quot;queryAll&quot; not found in prototype chain
+PASS Element interface: element must inherit property &quot;querySelector&quot; with the proper type (35) 
+PASS Element interface: calling querySelector(DOMString) on element with too few arguments must throw TypeError 
+PASS Element interface: element must inherit property &quot;querySelectorAll&quot; with the proper type (36) 
+PASS Element interface: calling querySelectorAll(DOMString) on element with too few arguments must throw TypeError 
+PASS Element interface: element must inherit property &quot;previousElementSibling&quot; with the proper type (37) 
+PASS Element interface: element must inherit property &quot;nextElementSibling&quot; with the proper type (38) 
+PASS Element interface: element must inherit property &quot;before&quot; with the proper type (39) 
+FAIL Element interface: calling before([object Object],[object Object]) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Element interface: element must inherit property &quot;after&quot; with the proper type (40) 
+FAIL Element interface: calling after([object Object],[object Object]) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Element interface: element must inherit property &quot;replaceWith&quot; with the proper type (41) 
+FAIL Element interface: calling replaceWith([object Object],[object Object]) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Element interface: element must inherit property &quot;remove&quot; with the proper type (42) 
+PASS Node interface: element must inherit property &quot;ELEMENT_NODE&quot; with the proper type (0) 
+PASS Node interface: element must inherit property &quot;ATTRIBUTE_NODE&quot; with the proper type (1) 
+PASS Node interface: element must inherit property &quot;TEXT_NODE&quot; with the proper type (2) 
+PASS Node interface: element must inherit property &quot;CDATA_SECTION_NODE&quot; with the proper type (3) 
+PASS Node interface: element must inherit property &quot;ENTITY_REFERENCE_NODE&quot; with the proper type (4) 
+PASS Node interface: element must inherit property &quot;ENTITY_NODE&quot; with the proper type (5) 
+PASS Node interface: element must inherit property &quot;PROCESSING_INSTRUCTION_NODE&quot; with the proper type (6) 
+PASS Node interface: element must inherit property &quot;COMMENT_NODE&quot; with the proper type (7) 
+PASS Node interface: element must inherit property &quot;DOCUMENT_NODE&quot; with the proper type (8) 
+PASS Node interface: element must inherit property &quot;DOCUMENT_TYPE_NODE&quot; with the proper type (9) 
+PASS Node interface: element must inherit property &quot;DOCUMENT_FRAGMENT_NODE&quot; with the proper type (10) 
+PASS Node interface: element must inherit property &quot;NOTATION_NODE&quot; with the proper type (11) 
+PASS Node interface: element must inherit property &quot;nodeType&quot; with the proper type (12) 
+PASS Node interface: element must inherit property &quot;nodeName&quot; with the proper type (13) 
+PASS Node interface: element must inherit property &quot;baseURI&quot; with the proper type (14) 
+PASS Node interface: element must inherit property &quot;ownerDocument&quot; with the proper type (15) 
+PASS Node interface: element must inherit property &quot;parentNode&quot; with the proper type (16) 
+PASS Node interface: element must inherit property &quot;parentElement&quot; with the proper type (17) 
+PASS Node interface: element must inherit property &quot;hasChildNodes&quot; with the proper type (18) 
+PASS Node interface: element must inherit property &quot;childNodes&quot; with the proper type (19) 
+PASS Node interface: element must inherit property &quot;firstChild&quot; with the proper type (20) 
+PASS Node interface: element must inherit property &quot;lastChild&quot; with the proper type (21) 
+PASS Node interface: element must inherit property &quot;previousSibling&quot; with the proper type (22) 
+PASS Node interface: element must inherit property &quot;nextSibling&quot; with the proper type (23) 
+PASS Node interface: element must inherit property &quot;nodeValue&quot; with the proper type (24) 
+PASS Node interface: element must inherit property &quot;textContent&quot; with the proper type (25) 
+PASS Node interface: element must inherit property &quot;normalize&quot; with the proper type (26) 
+PASS Node interface: element must inherit property &quot;cloneNode&quot; with the proper type (27) 
+PASS Node interface: calling cloneNode(boolean) on element with too few arguments must throw TypeError 
+PASS Node interface: element must inherit property &quot;isEqualNode&quot; with the proper type (28) 
+FAIL Node interface: calling isEqualNode(Node) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: element must inherit property &quot;DOCUMENT_POSITION_DISCONNECTED&quot; with the proper type (29) 
+PASS Node interface: element must inherit property &quot;DOCUMENT_POSITION_PRECEDING&quot; with the proper type (30) 
+PASS Node interface: element must inherit property &quot;DOCUMENT_POSITION_FOLLOWING&quot; with the proper type (31) 
+PASS Node interface: element must inherit property &quot;DOCUMENT_POSITION_CONTAINS&quot; with the proper type (32) 
+PASS Node interface: element must inherit property &quot;DOCUMENT_POSITION_CONTAINED_BY&quot; with the proper type (33) 
+PASS Node interface: element must inherit property &quot;DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC&quot; with the proper type (34) 
+PASS Node interface: element must inherit property &quot;compareDocumentPosition&quot; with the proper type (35) 
+FAIL Node interface: calling compareDocumentPosition(Node) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: element must inherit property &quot;contains&quot; with the proper type (36) 
+FAIL Node interface: calling contains(Node) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: element must inherit property &quot;lookupPrefix&quot; with the proper type (37) 
+FAIL Node interface: calling lookupPrefix(DOMString) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: element must inherit property &quot;lookupNamespaceURI&quot; with the proper type (38) 
+FAIL Node interface: calling lookupNamespaceURI(DOMString) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: element must inherit property &quot;isDefaultNamespace&quot; with the proper type (39) 
+FAIL Node interface: calling isDefaultNamespace(DOMString) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: element must inherit property &quot;insertBefore&quot; with the proper type (40) 
+FAIL Node interface: calling insertBefore(Node,Node) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: NotFoundError: DOM Exception 8&quot; (&quot;NotFoundError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Node interface: element must inherit property &quot;appendChild&quot; with the proper type (41) 
+FAIL Node interface: calling appendChild(Node) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: NotFoundError: DOM Exception 8&quot; (&quot;NotFoundError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Node interface: element must inherit property &quot;replaceChild&quot; with the proper type (42) 
+FAIL Node interface: calling replaceChild(Node,Node) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: element must inherit property &quot;removeChild&quot; with the proper type (43) 
+FAIL Node interface: calling removeChild(Node) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: NotFoundError: DOM Exception 8&quot; (&quot;NotFoundError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS EventTarget interface: element must inherit property &quot;addEventListener&quot; with the proper type (0) 
+FAIL EventTarget interface: calling addEventListener(DOMString,EventListener,boolean) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS EventTarget interface: element must inherit property &quot;removeEventListener&quot; with the proper type (1) 
+FAIL EventTarget interface: calling removeEventListener(DOMString,EventListener,boolean) on element with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS EventTarget interface: element must inherit property &quot;dispatchEvent&quot; with the proper type (2) 
+PASS EventTarget interface: calling dispatchEvent(Event) on element with too few arguments must throw TypeError 
+FAIL NamedNodeMap interface: existence and properties of interface object assert_equals: prototype of self's property &quot;NamedNodeMap&quot; is not Function.prototype expected (function) function &quot;function () {
+    [native code]
+}&quot; but got (object) object &quot;[object Object]&quot;
+PASS NamedNodeMap interface object length 
+PASS NamedNodeMap interface: existence and properties of interface prototype object 
+FAIL NamedNodeMap interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_own_property: NamedNodeMap.prototype does not have own property &quot;constructor&quot; expected property &quot;constructor&quot; missing
+FAIL NamedNodeMap interface: attribute length assert_true: The prototype object must have a property &quot;length&quot; expected true got false
+FAIL NamedNodeMap interface: operation item(unsigned long) assert_equals: property has wrong .length expected 1 but got 0
+FAIL NamedNodeMap interface: operation getNamedItem(DOMString) assert_equals: property has wrong .length expected 1 but got 0
+FAIL NamedNodeMap interface: operation getNamedItemNS(DOMString,DOMString) assert_equals: property has wrong .length expected 2 but got 0
+FAIL NamedNodeMap interface: operation setNamedItem(Attr) assert_equals: property has wrong .length expected 1 but got 0
+FAIL NamedNodeMap interface: operation setNamedItemNS(Attr) assert_equals: property has wrong .length expected 1 but got 0
+FAIL NamedNodeMap interface: operation removeNamedItem(DOMString) assert_equals: property has wrong .length expected 1 but got 0
+FAIL NamedNodeMap interface: operation removeNamedItemNS(DOMString,DOMString) assert_equals: property has wrong .length expected 2 but got 0
+FAIL Attr interface: existence and properties of interface object assert_equals: prototype of self's property &quot;Attr&quot; is not Function.prototype expected (function) function &quot;function () {
+    [native code]
+}&quot; but got (object) object &quot;[object Object]&quot;
+PASS Attr interface object length 
+FAIL Attr interface: existence and properties of interface prototype object assert_equals: prototype of Attr.prototype is not Object.prototype expected object &quot;[object Object]&quot; but got Node object of unknown type
+FAIL Attr interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_true: Attr.prototype.constructor is not writable expected true got false
+FAIL Attr interface: attribute namespaceURI assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Attr interface: attribute prefix assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Attr interface: attribute localName assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Attr interface: attribute name assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Attr interface: attribute value assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Attr interface: attribute nodeValue assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Attr interface: attribute textContent assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Attr interface: attribute ownerElement assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Attr interface: attribute specified assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Attr must be primary interface of document.querySelector(&quot;[id]&quot;).attributes[0] 
+PASS Stringification of document.querySelector(&quot;[id]&quot;).attributes[0] 
+PASS Attr interface: document.querySelector(&quot;[id]&quot;).attributes[0] must inherit property &quot;namespaceURI&quot; with the proper type (0) 
+PASS Attr interface: document.querySelector(&quot;[id]&quot;).attributes[0] must inherit property &quot;prefix&quot; with the proper type (1) 
+PASS Attr interface: document.querySelector(&quot;[id]&quot;).attributes[0] must inherit property &quot;localName&quot; with the proper type (2) 
+PASS Attr interface: document.querySelector(&quot;[id]&quot;).attributes[0] must inherit property &quot;name&quot; with the proper type (3) 
+PASS Attr interface: document.querySelector(&quot;[id]&quot;).attributes[0] must inherit property &quot;value&quot; with the proper type (4) 
+PASS Attr interface: document.querySelector(&quot;[id]&quot;).attributes[0] must inherit property &quot;nodeValue&quot; with the proper type (5) 
+PASS Attr interface: document.querySelector(&quot;[id]&quot;).attributes[0] must inherit property &quot;textContent&quot; with the proper type (6) 
+PASS Attr interface: document.querySelector(&quot;[id]&quot;).attributes[0] must inherit property &quot;ownerElement&quot; with the proper type (7) 
+PASS Attr interface: document.querySelector(&quot;[id]&quot;).attributes[0] must inherit property &quot;specified&quot; with the proper type (8) 
+FAIL CharacterData interface: existence and properties of interface object assert_equals: prototype of self's property &quot;CharacterData&quot; is not Function.prototype expected (function) function &quot;function () {
+    [native code]
+}&quot; but got (object) object &quot;[object Object]&quot;
+PASS CharacterData interface object length 
+PASS CharacterData interface: existence and properties of interface prototype object 
+FAIL CharacterData interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_true: CharacterData.prototype.constructor is not writable expected true got false
+FAIL CharacterData interface: attribute data assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL CharacterData interface: attribute length assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL CharacterData interface: operation substringData(unsigned long,unsigned long) assert_equals: property has wrong .length expected 2 but got 0
+FAIL CharacterData interface: operation appendData(DOMString) assert_equals: property has wrong .length expected 1 but got 0
+FAIL CharacterData interface: operation insertData(unsigned long,DOMString) assert_equals: property has wrong .length expected 2 but got 0
+FAIL CharacterData interface: operation deleteData(unsigned long,unsigned long) assert_equals: property has wrong .length expected 2 but got 0
+FAIL CharacterData interface: operation replaceData(unsigned long,unsigned long,DOMString) assert_equals: property has wrong .length expected 3 but got 0
+FAIL CharacterData interface: attribute previousElementSibling assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL CharacterData interface: attribute nextElementSibling assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS CharacterData interface: operation before([object Object],[object Object]) 
+PASS CharacterData interface: operation after([object Object],[object Object]) 
+PASS CharacterData interface: operation replaceWith([object Object],[object Object]) 
+PASS CharacterData interface: operation remove() 
+FAIL Text interface: existence and properties of interface object assert_equals: prototype of self's property &quot;Text&quot; is not Function.prototype expected (function) function &quot;function () {
+    [native code]
+}&quot; but got (object) object &quot;[object Object]&quot;
+PASS Text interface object length 
+PASS Text interface: existence and properties of interface prototype object 
+FAIL Text interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_true: Text.prototype.constructor is not writable expected true got false
+PASS Text interface: operation splitText(unsigned long) 
+FAIL Text interface: attribute wholeText assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Text must be primary interface of document.createTextNode(&quot;abc&quot;) 
+PASS Stringification of document.createTextNode(&quot;abc&quot;) 
+PASS Text interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;splitText&quot; with the proper type (0) 
+PASS Text interface: calling splitText(unsigned long) on document.createTextNode(&quot;abc&quot;) with too few arguments must throw TypeError 
+PASS Text interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;wholeText&quot; with the proper type (1) 
+PASS CharacterData interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;data&quot; with the proper type (0) 
+PASS CharacterData interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;length&quot; with the proper type (1) 
+PASS CharacterData interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;substringData&quot; with the proper type (2) 
+FAIL CharacterData interface: calling substringData(unsigned long,unsigned long) on document.createTextNode(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS CharacterData interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;appendData&quot; with the proper type (3) 
+FAIL CharacterData interface: calling appendData(DOMString) on document.createTextNode(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS CharacterData interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;insertData&quot; with the proper type (4) 
+FAIL CharacterData interface: calling insertData(unsigned long,DOMString) on document.createTextNode(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS CharacterData interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;deleteData&quot; with the proper type (5) 
+FAIL CharacterData interface: calling deleteData(unsigned long,unsigned long) on document.createTextNode(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS CharacterData interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;replaceData&quot; with the proper type (6) 
+FAIL CharacterData interface: calling replaceData(unsigned long,unsigned long,DOMString) on document.createTextNode(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS CharacterData interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;previousElementSibling&quot; with the proper type (7) 
+PASS CharacterData interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;nextElementSibling&quot; with the proper type (8) 
+PASS CharacterData interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;before&quot; with the proper type (9) 
+FAIL CharacterData interface: calling before([object Object],[object Object]) on document.createTextNode(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS CharacterData interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;after&quot; with the proper type (10) 
+FAIL CharacterData interface: calling after([object Object],[object Object]) on document.createTextNode(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS CharacterData interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;replaceWith&quot; with the proper type (11) 
+FAIL CharacterData interface: calling replaceWith([object Object],[object Object]) on document.createTextNode(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS CharacterData interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;remove&quot; with the proper type (12) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;ELEMENT_NODE&quot; with the proper type (0) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;ATTRIBUTE_NODE&quot; with the proper type (1) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;TEXT_NODE&quot; with the proper type (2) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;CDATA_SECTION_NODE&quot; with the proper type (3) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;ENTITY_REFERENCE_NODE&quot; with the proper type (4) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;ENTITY_NODE&quot; with the proper type (5) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;PROCESSING_INSTRUCTION_NODE&quot; with the proper type (6) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;COMMENT_NODE&quot; with the proper type (7) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;DOCUMENT_NODE&quot; with the proper type (8) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;DOCUMENT_TYPE_NODE&quot; with the proper type (9) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;DOCUMENT_FRAGMENT_NODE&quot; with the proper type (10) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;NOTATION_NODE&quot; with the proper type (11) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;nodeType&quot; with the proper type (12) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;nodeName&quot; with the proper type (13) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;baseURI&quot; with the proper type (14) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;ownerDocument&quot; with the proper type (15) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;parentNode&quot; with the proper type (16) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;parentElement&quot; with the proper type (17) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;hasChildNodes&quot; with the proper type (18) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;childNodes&quot; with the proper type (19) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;firstChild&quot; with the proper type (20) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;lastChild&quot; with the proper type (21) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;previousSibling&quot; with the proper type (22) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;nextSibling&quot; with the proper type (23) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;nodeValue&quot; with the proper type (24) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;textContent&quot; with the proper type (25) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;normalize&quot; with the proper type (26) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;cloneNode&quot; with the proper type (27) 
+PASS Node interface: calling cloneNode(boolean) on document.createTextNode(&quot;abc&quot;) with too few arguments must throw TypeError 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;isEqualNode&quot; with the proper type (28) 
+FAIL Node interface: calling isEqualNode(Node) on document.createTextNode(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;DOCUMENT_POSITION_DISCONNECTED&quot; with the proper type (29) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;DOCUMENT_POSITION_PRECEDING&quot; with the proper type (30) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;DOCUMENT_POSITION_FOLLOWING&quot; with the proper type (31) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;DOCUMENT_POSITION_CONTAINS&quot; with the proper type (32) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;DOCUMENT_POSITION_CONTAINED_BY&quot; with the proper type (33) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC&quot; with the proper type (34) 
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;compareDocumentPosition&quot; with the proper type (35) 
+FAIL Node interface: calling compareDocumentPosition(Node) on document.createTextNode(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;contains&quot; with the proper type (36) 
+FAIL Node interface: calling contains(Node) on document.createTextNode(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;lookupPrefix&quot; with the proper type (37) 
+FAIL Node interface: calling lookupPrefix(DOMString) on document.createTextNode(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;lookupNamespaceURI&quot; with the proper type (38) 
+FAIL Node interface: calling lookupNamespaceURI(DOMString) on document.createTextNode(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;isDefaultNamespace&quot; with the proper type (39) 
+FAIL Node interface: calling isDefaultNamespace(DOMString) on document.createTextNode(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;insertBefore&quot; with the proper type (40) 
+FAIL Node interface: calling insertBefore(Node,Node) on document.createTextNode(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; (&quot;HierarchyRequestError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;appendChild&quot; with the proper type (41) 
+FAIL Node interface: calling appendChild(Node) on document.createTextNode(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; (&quot;HierarchyRequestError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;replaceChild&quot; with the proper type (42) 
+FAIL Node interface: calling replaceChild(Node,Node) on document.createTextNode(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; (&quot;HierarchyRequestError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Node interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;removeChild&quot; with the proper type (43) 
+FAIL Node interface: calling removeChild(Node) on document.createTextNode(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: NotFoundError: DOM Exception 8&quot; (&quot;NotFoundError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS EventTarget interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;addEventListener&quot; with the proper type (0) 
+FAIL EventTarget interface: calling addEventListener(DOMString,EventListener,boolean) on document.createTextNode(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS EventTarget interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;removeEventListener&quot; with the proper type (1) 
+FAIL EventTarget interface: calling removeEventListener(DOMString,EventListener,boolean) on document.createTextNode(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS EventTarget interface: document.createTextNode(&quot;abc&quot;) must inherit property &quot;dispatchEvent&quot; with the proper type (2) 
+PASS EventTarget interface: calling dispatchEvent(Event) on document.createTextNode(&quot;abc&quot;) with too few arguments must throw TypeError 
+FAIL ProcessingInstruction interface: existence and properties of interface object assert_equals: prototype of self's property &quot;ProcessingInstruction&quot; is not Function.prototype expected (function) function &quot;function () {
+    [native code]
+}&quot; but got (object) object &quot;[object Object]&quot;
+PASS ProcessingInstruction interface object length 
+PASS ProcessingInstruction interface: existence and properties of interface prototype object 
+FAIL ProcessingInstruction interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_true: ProcessingInstruction.prototype.constructor is not writable expected true got false
+FAIL ProcessingInstruction interface: attribute target assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS ProcessingInstruction must be primary interface of xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) 
+PASS Stringification of xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) 
+PASS ProcessingInstruction interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;target&quot; with the proper type (0) 
+PASS CharacterData interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;data&quot; with the proper type (0) 
+PASS CharacterData interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;length&quot; with the proper type (1) 
+PASS CharacterData interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;substringData&quot; with the proper type (2) 
+FAIL CharacterData interface: calling substringData(unsigned long,unsigned long) on xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS CharacterData interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;appendData&quot; with the proper type (3) 
+FAIL CharacterData interface: calling appendData(DOMString) on xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS CharacterData interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;insertData&quot; with the proper type (4) 
+FAIL CharacterData interface: calling insertData(unsigned long,DOMString) on xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS CharacterData interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;deleteData&quot; with the proper type (5) 
+FAIL CharacterData interface: calling deleteData(unsigned long,unsigned long) on xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS CharacterData interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;replaceData&quot; with the proper type (6) 
+FAIL CharacterData interface: calling replaceData(unsigned long,unsigned long,DOMString) on xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS CharacterData interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;previousElementSibling&quot; with the proper type (7) 
+PASS CharacterData interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;nextElementSibling&quot; with the proper type (8) 
+PASS CharacterData interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;before&quot; with the proper type (9) 
+FAIL CharacterData interface: calling before([object Object],[object Object]) on xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS CharacterData interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;after&quot; with the proper type (10) 
+FAIL CharacterData interface: calling after([object Object],[object Object]) on xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS CharacterData interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;replaceWith&quot; with the proper type (11) 
+FAIL CharacterData interface: calling replaceWith([object Object],[object Object]) on xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS CharacterData interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;remove&quot; with the proper type (12) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;ELEMENT_NODE&quot; with the proper type (0) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;ATTRIBUTE_NODE&quot; with the proper type (1) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;TEXT_NODE&quot; with the proper type (2) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;CDATA_SECTION_NODE&quot; with the proper type (3) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;ENTITY_REFERENCE_NODE&quot; with the proper type (4) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;ENTITY_NODE&quot; with the proper type (5) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;PROCESSING_INSTRUCTION_NODE&quot; with the proper type (6) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;COMMENT_NODE&quot; with the proper type (7) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;DOCUMENT_NODE&quot; with the proper type (8) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;DOCUMENT_TYPE_NODE&quot; with the proper type (9) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;DOCUMENT_FRAGMENT_NODE&quot; with the proper type (10) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;NOTATION_NODE&quot; with the proper type (11) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;nodeType&quot; with the proper type (12) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;nodeName&quot; with the proper type (13) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;baseURI&quot; with the proper type (14) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;ownerDocument&quot; with the proper type (15) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;parentNode&quot; with the proper type (16) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;parentElement&quot; with the proper type (17) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;hasChildNodes&quot; with the proper type (18) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;childNodes&quot; with the proper type (19) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;firstChild&quot; with the proper type (20) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;lastChild&quot; with the proper type (21) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;previousSibling&quot; with the proper type (22) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;nextSibling&quot; with the proper type (23) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;nodeValue&quot; with the proper type (24) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;textContent&quot; with the proper type (25) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;normalize&quot; with the proper type (26) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;cloneNode&quot; with the proper type (27) 
+PASS Node interface: calling cloneNode(boolean) on xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) with too few arguments must throw TypeError 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;isEqualNode&quot; with the proper type (28) 
+FAIL Node interface: calling isEqualNode(Node) on xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;DOCUMENT_POSITION_DISCONNECTED&quot; with the proper type (29) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;DOCUMENT_POSITION_PRECEDING&quot; with the proper type (30) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;DOCUMENT_POSITION_FOLLOWING&quot; with the proper type (31) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;DOCUMENT_POSITION_CONTAINS&quot; with the proper type (32) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;DOCUMENT_POSITION_CONTAINED_BY&quot; with the proper type (33) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC&quot; with the proper type (34) 
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;compareDocumentPosition&quot; with the proper type (35) 
+FAIL Node interface: calling compareDocumentPosition(Node) on xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;contains&quot; with the proper type (36) 
+FAIL Node interface: calling contains(Node) on xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;lookupPrefix&quot; with the proper type (37) 
+FAIL Node interface: calling lookupPrefix(DOMString) on xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;lookupNamespaceURI&quot; with the proper type (38) 
+FAIL Node interface: calling lookupNamespaceURI(DOMString) on xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;isDefaultNamespace&quot; with the proper type (39) 
+FAIL Node interface: calling isDefaultNamespace(DOMString) on xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;insertBefore&quot; with the proper type (40) 
+FAIL Node interface: calling insertBefore(Node,Node) on xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; (&quot;HierarchyRequestError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;appendChild&quot; with the proper type (41) 
+FAIL Node interface: calling appendChild(Node) on xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; (&quot;HierarchyRequestError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;replaceChild&quot; with the proper type (42) 
+FAIL Node interface: calling replaceChild(Node,Node) on xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; (&quot;HierarchyRequestError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Node interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;removeChild&quot; with the proper type (43) 
+FAIL Node interface: calling removeChild(Node) on xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: NotFoundError: DOM Exception 8&quot; (&quot;NotFoundError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS EventTarget interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;addEventListener&quot; with the proper type (0) 
+FAIL EventTarget interface: calling addEventListener(DOMString,EventListener,boolean) on xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS EventTarget interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;removeEventListener&quot; with the proper type (1) 
+FAIL EventTarget interface: calling removeEventListener(DOMString,EventListener,boolean) on xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS EventTarget interface: xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) must inherit property &quot;dispatchEvent&quot; with the proper type (2) 
+PASS EventTarget interface: calling dispatchEvent(Event) on xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;) with too few arguments must throw TypeError 
+FAIL Comment interface: existence and properties of interface object assert_equals: prototype of self's property &quot;Comment&quot; is not Function.prototype expected (function) function &quot;function () {
+    [native code]
+}&quot; but got (object) object &quot;[object Object]&quot;
+PASS Comment interface object length 
+PASS Comment interface: existence and properties of interface prototype object 
+FAIL Comment interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_true: Comment.prototype.constructor is not writable expected true got false
+PASS Comment must be primary interface of document.createComment(&quot;abc&quot;) 
+PASS Stringification of document.createComment(&quot;abc&quot;) 
+PASS CharacterData interface: document.createComment(&quot;abc&quot;) must inherit property &quot;data&quot; with the proper type (0) 
+PASS CharacterData interface: document.createComment(&quot;abc&quot;) must inherit property &quot;length&quot; with the proper type (1) 
+PASS CharacterData interface: document.createComment(&quot;abc&quot;) must inherit property &quot;substringData&quot; with the proper type (2) 
+FAIL CharacterData interface: calling substringData(unsigned long,unsigned long) on document.createComment(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS CharacterData interface: document.createComment(&quot;abc&quot;) must inherit property &quot;appendData&quot; with the proper type (3) 
+FAIL CharacterData interface: calling appendData(DOMString) on document.createComment(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS CharacterData interface: document.createComment(&quot;abc&quot;) must inherit property &quot;insertData&quot; with the proper type (4) 
+FAIL CharacterData interface: calling insertData(unsigned long,DOMString) on document.createComment(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS CharacterData interface: document.createComment(&quot;abc&quot;) must inherit property &quot;deleteData&quot; with the proper type (5) 
+FAIL CharacterData interface: calling deleteData(unsigned long,unsigned long) on document.createComment(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS CharacterData interface: document.createComment(&quot;abc&quot;) must inherit property &quot;replaceData&quot; with the proper type (6) 
+FAIL CharacterData interface: calling replaceData(unsigned long,unsigned long,DOMString) on document.createComment(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS CharacterData interface: document.createComment(&quot;abc&quot;) must inherit property &quot;previousElementSibling&quot; with the proper type (7) 
+PASS CharacterData interface: document.createComment(&quot;abc&quot;) must inherit property &quot;nextElementSibling&quot; with the proper type (8) 
+PASS CharacterData interface: document.createComment(&quot;abc&quot;) must inherit property &quot;before&quot; with the proper type (9) 
+FAIL CharacterData interface: calling before([object Object],[object Object]) on document.createComment(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS CharacterData interface: document.createComment(&quot;abc&quot;) must inherit property &quot;after&quot; with the proper type (10) 
+FAIL CharacterData interface: calling after([object Object],[object Object]) on document.createComment(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS CharacterData interface: document.createComment(&quot;abc&quot;) must inherit property &quot;replaceWith&quot; with the proper type (11) 
+FAIL CharacterData interface: calling replaceWith([object Object],[object Object]) on document.createComment(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS CharacterData interface: document.createComment(&quot;abc&quot;) must inherit property &quot;remove&quot; with the proper type (12) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;ELEMENT_NODE&quot; with the proper type (0) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;ATTRIBUTE_NODE&quot; with the proper type (1) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;TEXT_NODE&quot; with the proper type (2) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;CDATA_SECTION_NODE&quot; with the proper type (3) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;ENTITY_REFERENCE_NODE&quot; with the proper type (4) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;ENTITY_NODE&quot; with the proper type (5) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;PROCESSING_INSTRUCTION_NODE&quot; with the proper type (6) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;COMMENT_NODE&quot; with the proper type (7) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;DOCUMENT_NODE&quot; with the proper type (8) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;DOCUMENT_TYPE_NODE&quot; with the proper type (9) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;DOCUMENT_FRAGMENT_NODE&quot; with the proper type (10) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;NOTATION_NODE&quot; with the proper type (11) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;nodeType&quot; with the proper type (12) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;nodeName&quot; with the proper type (13) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;baseURI&quot; with the proper type (14) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;ownerDocument&quot; with the proper type (15) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;parentNode&quot; with the proper type (16) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;parentElement&quot; with the proper type (17) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;hasChildNodes&quot; with the proper type (18) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;childNodes&quot; with the proper type (19) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;firstChild&quot; with the proper type (20) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;lastChild&quot; with the proper type (21) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;previousSibling&quot; with the proper type (22) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;nextSibling&quot; with the proper type (23) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;nodeValue&quot; with the proper type (24) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;textContent&quot; with the proper type (25) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;normalize&quot; with the proper type (26) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;cloneNode&quot; with the proper type (27) 
+PASS Node interface: calling cloneNode(boolean) on document.createComment(&quot;abc&quot;) with too few arguments must throw TypeError 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;isEqualNode&quot; with the proper type (28) 
+FAIL Node interface: calling isEqualNode(Node) on document.createComment(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;DOCUMENT_POSITION_DISCONNECTED&quot; with the proper type (29) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;DOCUMENT_POSITION_PRECEDING&quot; with the proper type (30) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;DOCUMENT_POSITION_FOLLOWING&quot; with the proper type (31) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;DOCUMENT_POSITION_CONTAINS&quot; with the proper type (32) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;DOCUMENT_POSITION_CONTAINED_BY&quot; with the proper type (33) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC&quot; with the proper type (34) 
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;compareDocumentPosition&quot; with the proper type (35) 
+FAIL Node interface: calling compareDocumentPosition(Node) on document.createComment(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;contains&quot; with the proper type (36) 
+FAIL Node interface: calling contains(Node) on document.createComment(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;lookupPrefix&quot; with the proper type (37) 
+FAIL Node interface: calling lookupPrefix(DOMString) on document.createComment(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;lookupNamespaceURI&quot; with the proper type (38) 
+FAIL Node interface: calling lookupNamespaceURI(DOMString) on document.createComment(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;isDefaultNamespace&quot; with the proper type (39) 
+FAIL Node interface: calling isDefaultNamespace(DOMString) on document.createComment(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;insertBefore&quot; with the proper type (40) 
+FAIL Node interface: calling insertBefore(Node,Node) on document.createComment(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; (&quot;HierarchyRequestError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;appendChild&quot; with the proper type (41) 
+FAIL Node interface: calling appendChild(Node) on document.createComment(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; (&quot;HierarchyRequestError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;replaceChild&quot; with the proper type (42) 
+FAIL Node interface: calling replaceChild(Node,Node) on document.createComment(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; (&quot;HierarchyRequestError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Node interface: document.createComment(&quot;abc&quot;) must inherit property &quot;removeChild&quot; with the proper type (43) 
+FAIL Node interface: calling removeChild(Node) on document.createComment(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: NotFoundError: DOM Exception 8&quot; (&quot;NotFoundError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS EventTarget interface: document.createComment(&quot;abc&quot;) must inherit property &quot;addEventListener&quot; with the proper type (0) 
+FAIL EventTarget interface: calling addEventListener(DOMString,EventListener,boolean) on document.createComment(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS EventTarget interface: document.createComment(&quot;abc&quot;) must inherit property &quot;removeEventListener&quot; with the proper type (1) 
+FAIL EventTarget interface: calling removeEventListener(DOMString,EventListener,boolean) on document.createComment(&quot;abc&quot;) with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS EventTarget interface: document.createComment(&quot;abc&quot;) must inherit property &quot;dispatchEvent&quot; with the proper type (2) 
+PASS EventTarget interface: calling dispatchEvent(Event) on document.createComment(&quot;abc&quot;) with too few arguments must throw TypeError 
+FAIL Range interface: existence and properties of interface object assert_equals: prototype of self's property &quot;Range&quot; is not Function.prototype expected (function) function &quot;function () {
+    [native code]
+}&quot; but got (object) object &quot;[object Object]&quot;
+PASS Range interface object length 
+PASS Range interface: existence and properties of interface prototype object 
+FAIL Range interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_true: Range.prototype.constructor is not writable expected true got false
+FAIL Range interface: attribute startContainer assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Range interface: attribute startOffset assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Range interface: attribute endContainer assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Range interface: attribute endOffset assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Range interface: attribute collapsed assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Range interface: attribute commonAncestorContainer assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL Range interface: operation setStart(Node,unsigned long) assert_equals: property has wrong .length expected 2 but got 1
+FAIL Range interface: operation setEnd(Node,unsigned long) assert_equals: property has wrong .length expected 2 but got 1
+PASS Range interface: operation setStartBefore(Node) 
+PASS Range interface: operation setStartAfter(Node) 
+PASS Range interface: operation setEndBefore(Node) 
+PASS Range interface: operation setEndAfter(Node) 
+PASS Range interface: operation collapse(boolean) 
+PASS Range interface: operation selectNode(Node) 
+PASS Range interface: operation selectNodeContents(Node) 
+PASS Range interface: constant START_TO_START on interface object 
+PASS Range interface: constant START_TO_START on interface prototype object 
+PASS Range interface: constant START_TO_END on interface object 
+PASS Range interface: constant START_TO_END on interface prototype object 
+PASS Range interface: constant END_TO_END on interface object 
+PASS Range interface: constant END_TO_END on interface prototype object 
+PASS Range interface: constant END_TO_START on interface object 
+PASS Range interface: constant END_TO_START on interface prototype object 
+FAIL Range interface: operation compareBoundaryPoints(unsigned short,Range) assert_equals: property has wrong .length expected 2 but got 0
+PASS Range interface: operation deleteContents() 
+PASS Range interface: operation extractContents() 
+PASS Range interface: operation cloneContents() 
+PASS Range interface: operation insertNode(Node) 
+PASS Range interface: operation surroundContents(Node) 
+PASS Range interface: operation cloneRange() 
+PASS Range interface: operation detach() 
+FAIL Range interface: operation isPointInRange(Node,unsigned long) assert_equals: property has wrong .length expected 2 but got 1
+FAIL Range interface: operation comparePoint(Node,unsigned long) assert_equals: property has wrong .length expected 2 but got 1
+PASS Range interface: operation intersectsNode(Node) 
+PASS Range interface: stringifier 
+PASS Range must be primary interface of document.createRange() 
+PASS Stringification of document.createRange() 
+PASS Range interface: document.createRange() must inherit property &quot;startContainer&quot; with the proper type (0) 
+PASS Range interface: document.createRange() must inherit property &quot;startOffset&quot; with the proper type (1) 
+PASS Range interface: document.createRange() must inherit property &quot;endContainer&quot; with the proper type (2) 
+PASS Range interface: document.createRange() must inherit property &quot;endOffset&quot; with the proper type (3) 
+PASS Range interface: document.createRange() must inherit property &quot;collapsed&quot; with the proper type (4) 
+PASS Range interface: document.createRange() must inherit property &quot;commonAncestorContainer&quot; with the proper type (5) 
+PASS Range interface: document.createRange() must inherit property &quot;setStart&quot; with the proper type (6) 
+FAIL Range interface: calling setStart(Node,unsigned long) on document.createRange() with too few arguments must throw TypeError assert_throws: Called with 1 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Range interface: document.createRange() must inherit property &quot;setEnd&quot; with the proper type (7) 
+FAIL Range interface: calling setEnd(Node,unsigned long) on document.createRange() with too few arguments must throw TypeError assert_throws: Called with 1 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Range interface: document.createRange() must inherit property &quot;setStartBefore&quot; with the proper type (8) 
+PASS Range interface: calling setStartBefore(Node) on document.createRange() with too few arguments must throw TypeError 
+PASS Range interface: document.createRange() must inherit property &quot;setStartAfter&quot; with the proper type (9) 
+PASS Range interface: calling setStartAfter(Node) on document.createRange() with too few arguments must throw TypeError 
+PASS Range interface: document.createRange() must inherit property &quot;setEndBefore&quot; with the proper type (10) 
+PASS Range interface: calling setEndBefore(Node) on document.createRange() with too few arguments must throw TypeError 
+PASS Range interface: document.createRange() must inherit property &quot;setEndAfter&quot; with the proper type (11) 
+PASS Range interface: calling setEndAfter(Node) on document.createRange() with too few arguments must throw TypeError 
+PASS Range interface: document.createRange() must inherit property &quot;collapse&quot; with the proper type (12) 
+PASS Range interface: calling collapse(boolean) on document.createRange() with too few arguments must throw TypeError 
+PASS Range interface: document.createRange() must inherit property &quot;selectNode&quot; with the proper type (13) 
+PASS Range interface: calling selectNode(Node) on document.createRange() with too few arguments must throw TypeError 
+PASS Range interface: document.createRange() must inherit property &quot;selectNodeContents&quot; with the proper type (14) 
+PASS Range interface: calling selectNodeContents(Node) on document.createRange() with too few arguments must throw TypeError 
+PASS Range interface: document.createRange() must inherit property &quot;START_TO_START&quot; with the proper type (15) 
+PASS Range interface: document.createRange() must inherit property &quot;START_TO_END&quot; with the proper type (16) 
+PASS Range interface: document.createRange() must inherit property &quot;END_TO_END&quot; with the proper type (17) 
+PASS Range interface: document.createRange() must inherit property &quot;END_TO_START&quot; with the proper type (18) 
+PASS Range interface: document.createRange() must inherit property &quot;compareBoundaryPoints&quot; with the proper type (19) 
+PASS Range interface: calling compareBoundaryPoints(unsigned short,Range) on document.createRange() with too few arguments must throw TypeError 
+PASS Range interface: document.createRange() must inherit property &quot;deleteContents&quot; with the proper type (20) 
+PASS Range interface: document.createRange() must inherit property &quot;extractContents&quot; with the proper type (21) 
+PASS Range interface: document.createRange() must inherit property &quot;cloneContents&quot; with the proper type (22) 
+PASS Range interface: document.createRange() must inherit property &quot;insertNode&quot; with the proper type (23) 
+PASS Range interface: calling insertNode(Node) on document.createRange() with too few arguments must throw TypeError 
+PASS Range interface: document.createRange() must inherit property &quot;surroundContents&quot; with the proper type (24) 
+PASS Range interface: calling surroundContents(Node) on document.createRange() with too few arguments must throw TypeError 
+PASS Range interface: document.createRange() must inherit property &quot;cloneRange&quot; with the proper type (25) 
+PASS Range interface: document.createRange() must inherit property &quot;detach&quot; with the proper type (26) 
+PASS Range interface: document.createRange() must inherit property &quot;isPointInRange&quot; with the proper type (27) 
+FAIL Range interface: calling isPointInRange(Node,unsigned long) on document.createRange() with too few arguments must throw TypeError assert_throws: Called with 1 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Range interface: document.createRange() must inherit property &quot;comparePoint&quot; with the proper type (28) 
+FAIL Range interface: calling comparePoint(Node,unsigned long) on document.createRange() with too few arguments must throw TypeError assert_throws: Called with 1 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: WrongDocumentError: DOM Exception 4&quot; (&quot;WrongDocumentError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Range interface: document.createRange() must inherit property &quot;intersectsNode&quot; with the proper type (29) 
+PASS Range interface: calling intersectsNode(Node) on document.createRange() with too few arguments must throw TypeError 
+PASS Range must be primary interface of detachedRange 
+PASS Stringification of detachedRange 
+PASS Range interface: detachedRange must inherit property &quot;startContainer&quot; with the proper type (0) 
+PASS Range interface: detachedRange must inherit property &quot;startOffset&quot; with the proper type (1) 
+PASS Range interface: detachedRange must inherit property &quot;endContainer&quot; with the proper type (2) 
+PASS Range interface: detachedRange must inherit property &quot;endOffset&quot; with the proper type (3) 
+PASS Range interface: detachedRange must inherit property &quot;collapsed&quot; with the proper type (4) 
+PASS Range interface: detachedRange must inherit property &quot;commonAncestorContainer&quot; with the proper type (5) 
+PASS Range interface: detachedRange must inherit property &quot;setStart&quot; with the proper type (6) 
+FAIL Range interface: calling setStart(Node,unsigned long) on detachedRange with too few arguments must throw TypeError assert_throws: Called with 1 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Range interface: detachedRange must inherit property &quot;setEnd&quot; with the proper type (7) 
+FAIL Range interface: calling setEnd(Node,unsigned long) on detachedRange with too few arguments must throw TypeError assert_throws: Called with 1 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Range interface: detachedRange must inherit property &quot;setStartBefore&quot; with the proper type (8) 
+PASS Range interface: calling setStartBefore(Node) on detachedRange with too few arguments must throw TypeError 
+PASS Range interface: detachedRange must inherit property &quot;setStartAfter&quot; with the proper type (9) 
+PASS Range interface: calling setStartAfter(Node) on detachedRange with too few arguments must throw TypeError 
+PASS Range interface: detachedRange must inherit property &quot;setEndBefore&quot; with the proper type (10) 
+PASS Range interface: calling setEndBefore(Node) on detachedRange with too few arguments must throw TypeError 
+PASS Range interface: detachedRange must inherit property &quot;setEndAfter&quot; with the proper type (11) 
+PASS Range interface: calling setEndAfter(Node) on detachedRange with too few arguments must throw TypeError 
+PASS Range interface: detachedRange must inherit property &quot;collapse&quot; with the proper type (12) 
+PASS Range interface: calling collapse(boolean) on detachedRange with too few arguments must throw TypeError 
+PASS Range interface: detachedRange must inherit property &quot;selectNode&quot; with the proper type (13) 
+PASS Range interface: calling selectNode(Node) on detachedRange with too few arguments must throw TypeError 
+PASS Range interface: detachedRange must inherit property &quot;selectNodeContents&quot; with the proper type (14) 
+PASS Range interface: calling selectNodeContents(Node) on detachedRange with too few arguments must throw TypeError 
+PASS Range interface: detachedRange must inherit property &quot;START_TO_START&quot; with the proper type (15) 
+PASS Range interface: detachedRange must inherit property &quot;START_TO_END&quot; with the proper type (16) 
+PASS Range interface: detachedRange must inherit property &quot;END_TO_END&quot; with the proper type (17) 
+PASS Range interface: detachedRange must inherit property &quot;END_TO_START&quot; with the proper type (18) 
+PASS Range interface: detachedRange must inherit property &quot;compareBoundaryPoints&quot; with the proper type (19) 
+PASS Range interface: calling compareBoundaryPoints(unsigned short,Range) on detachedRange with too few arguments must throw TypeError 
+PASS Range interface: detachedRange must inherit property &quot;deleteContents&quot; with the proper type (20) 
+PASS Range interface: detachedRange must inherit property &quot;extractContents&quot; with the proper type (21) 
+PASS Range interface: detachedRange must inherit property &quot;cloneContents&quot; with the proper type (22) 
+PASS Range interface: detachedRange must inherit property &quot;insertNode&quot; with the proper type (23) 
+PASS Range interface: calling insertNode(Node) on detachedRange with too few arguments must throw TypeError 
+PASS Range interface: detachedRange must inherit property &quot;surroundContents&quot; with the proper type (24) 
+PASS Range interface: calling surroundContents(Node) on detachedRange with too few arguments must throw TypeError 
+PASS Range interface: detachedRange must inherit property &quot;cloneRange&quot; with the proper type (25) 
+PASS Range interface: detachedRange must inherit property &quot;detach&quot; with the proper type (26) 
+PASS Range interface: detachedRange must inherit property &quot;isPointInRange&quot; with the proper type (27) 
+FAIL Range interface: calling isPointInRange(Node,unsigned long) on detachedRange with too few arguments must throw TypeError assert_throws: Called with 1 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS Range interface: detachedRange must inherit property &quot;comparePoint&quot; with the proper type (28) 
+FAIL Range interface: calling comparePoint(Node,unsigned long) on detachedRange with too few arguments must throw TypeError assert_throws: Called with 1 arguments function &quot;function () {
+    [native code]
+}&quot; threw object &quot;Error: WrongDocumentError: DOM Exception 4&quot; (&quot;WrongDocumentError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Range interface: detachedRange must inherit property &quot;intersectsNode&quot; with the proper type (29) 
+PASS Range interface: calling intersectsNode(Node) on detachedRange with too few arguments must throw TypeError 
+FAIL NodeIterator interface: existence and properties of interface object assert_equals: prototype of self's property &quot;NodeIterator&quot; is not Function.prototype expected (function) function &quot;function () {
+    [native code]
+}&quot; but got (object) object &quot;[object Object]&quot;
+PASS NodeIterator interface object length 
+PASS NodeIterator interface: existence and properties of interface prototype object 
+FAIL NodeIterator interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_true: NodeIterator.prototype.constructor is not writable expected true got false
+FAIL NodeIterator interface: attribute root assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL NodeIterator interface: attribute referenceNode assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL NodeIterator interface: attribute pointerBeforeReferenceNode assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL NodeIterator interface: attribute whatToShow assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL NodeIterator interface: attribute filter assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS NodeIterator interface: operation nextNode() 
+PASS NodeIterator interface: operation previousNode() 
+PASS NodeIterator interface: operation detach() 
+PASS NodeIterator must be primary interface of document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) 
+PASS Stringification of document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) 
+PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property &quot;root&quot; with the proper type (0) 
+PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property &quot;referenceNode&quot; with the proper type (1) 
+PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property &quot;pointerBeforeReferenceNode&quot; with the proper type (2) 
+PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property &quot;whatToShow&quot; with the proper type (3) 
+PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property &quot;filter&quot; with the proper type (4) 
+PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property &quot;nextNode&quot; with the proper type (5) 
+PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property &quot;previousNode&quot; with the proper type (6) 
+PASS NodeIterator interface: document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property &quot;detach&quot; with the proper type (7) 
+FAIL TreeWalker interface: existence and properties of interface object assert_equals: prototype of self's property &quot;TreeWalker&quot; is not Function.prototype expected (function) function &quot;function () {
+    [native code]
+}&quot; but got (object) object &quot;[object Object]&quot;
+PASS TreeWalker interface object length 
+PASS TreeWalker interface: existence and properties of interface prototype object 
+FAIL TreeWalker interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_true: TreeWalker.prototype.constructor is not writable expected true got false
+FAIL TreeWalker interface: attribute root assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL TreeWalker interface: attribute whatToShow assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL TreeWalker interface: attribute filter assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+FAIL TreeWalker interface: attribute currentNode assert_throws: getting property on prototype object must throw TypeError function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS TreeWalker interface: operation parentNode() 
+PASS TreeWalker interface: operation firstChild() 
+PASS TreeWalker interface: operation lastChild() 
+PASS TreeWalker interface: operation previousSibling() 
+PASS TreeWalker interface: operation nextSibling() 
+PASS TreeWalker interface: operation previousNode() 
+PASS TreeWalker interface: operation nextNode() 
+PASS TreeWalker must be primary interface of document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) 
+PASS Stringification of document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) 
+PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property &quot;root&quot; with the proper type (0) 
+PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property &quot;whatToShow&quot; with the proper type (1) 
+PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property &quot;filter&quot; with the proper type (2) 
+PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property &quot;currentNode&quot; with the proper type (3) 
+PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property &quot;parentNode&quot; with the proper type (4) 
+PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property &quot;firstChild&quot; with the proper type (5) 
+PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property &quot;lastChild&quot; with the proper type (6) 
+PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property &quot;previousSibling&quot; with the proper type (7) 
+PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property &quot;nextSibling&quot; with the proper type (8) 
+PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property &quot;previousNode&quot; with the proper type (9) 
+PASS TreeWalker interface: document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false) must inherit property &quot;nextNode&quot; with the proper type (10) 
+FAIL DOMTokenList interface: existence and properties of interface object assert_equals: prototype of self's property &quot;DOMTokenList&quot; is not Function.prototype expected (function) function &quot;function () {
+    [native code]
+}&quot; but got (object) object &quot;[object Object]&quot;
+PASS DOMTokenList interface object length 
+PASS DOMTokenList interface: existence and properties of interface prototype object 
+FAIL DOMTokenList interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_own_property: DOMTokenList.prototype does not have own property &quot;constructor&quot; expected property &quot;constructor&quot; missing
+FAIL DOMTokenList interface: attribute length assert_true: The prototype object must have a property &quot;length&quot; expected true got false
+PASS DOMTokenList interface: operation item(unsigned long) 
+PASS DOMTokenList interface: operation contains(DOMString) 
+PASS DOMTokenList interface: operation add(DOMString) 
+PASS DOMTokenList interface: operation remove(DOMString) 
+PASS DOMTokenList interface: operation toggle(DOMString,boolean) 
+FAIL DOMTokenList interface: stringifier assert_true: property is not enumerable expected true got false
+PASS DOMTokenList must be primary interface of document.body.classList 
+PASS Stringification of document.body.classList 
+FAIL DOMTokenList interface: document.body.classList must inherit property &quot;length&quot; with the proper type (0) assert_inherits: property &quot;length&quot; found on object expected in prototype chain
+PASS DOMTokenList interface: document.body.classList must inherit property &quot;item&quot; with the proper type (1) 
+PASS DOMTokenList interface: calling item(unsigned long) on document.body.classList with too few arguments must throw TypeError 
+PASS DOMTokenList interface: document.body.classList must inherit property &quot;contains&quot; with the proper type (2) 
+PASS DOMTokenList interface: calling contains(DOMString) on document.body.classList with too few arguments must throw TypeError 
+PASS DOMTokenList interface: document.body.classList must inherit property &quot;add&quot; with the proper type (3) 
+FAIL DOMTokenList interface: calling add(DOMString) on document.body.classList with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS DOMTokenList interface: document.body.classList must inherit property &quot;remove&quot; with the proper type (4) 
+FAIL DOMTokenList interface: calling remove(DOMString) on document.body.classList with too few arguments must throw TypeError assert_throws: Called with 0 arguments function &quot;function () {
+    [native code]
+}&quot; did not throw
+PASS DOMTokenList interface: document.body.classList must inherit property &quot;toggle&quot; with the proper type (5) 
+PASS DOMTokenList interface: calling toggle(DOMString,boolean) on document.body.classList with too few arguments must throw TypeError 
+FAIL DOMSettableTokenList interface: existence and properties of interface object assert_equals: prototype of self's property &quot;DOMSettableTokenList&quot; is not Function.prototype expected (function) function &quot;function () {
+    [native code]
+}&quot; but got (object) object &quot;[object Object]&quot;
+PASS DOMSettableTokenList interface object length 
+PASS DOMSettableTokenList interface: existence and properties of interface prototype object 
+FAIL DOMSettableTokenList interface: existence and properties of interface prototype object's &quot;constructor&quot; property assert_own_property: DOMSettableTokenList.prototype does not have own property &quot;constructor&quot; expected property &quot;constructor&quot; missing
+FAIL DOMSettableTokenList interface: attribute value assert_true: The prototype object must have a property &quot;value&quot; expected true got false
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdominterfaceshtmlfromrev189470trunkLayoutTestshttptestsw3cdominterfaceshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/interfaces.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/interfaces.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,504 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;DOM IDL tests&lt;/title&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;script src=/resources/webidl2/lib/webidl2.js&gt;&lt;/script&gt;
+&lt;script src=/resources/idlharness.js&gt;&lt;/script&gt;
+
+&lt;h1&gt;DOM IDL tests&lt;/h1&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+
+&lt;script type=text/plain&gt;
+[Constructor(DOMString type, optional EventInit eventInitDict)/*,
+ Exposed=(Window,Worker)*/]
+interface Event {
+  readonly attribute DOMString type;
+  readonly attribute EventTarget? target;
+  readonly attribute EventTarget? currentTarget;
+
+  const unsigned short NONE = 0;
+  const unsigned short CAPTURING_PHASE = 1;
+  const unsigned short AT_TARGET = 2;
+  const unsigned short BUBBLING_PHASE = 3;
+  readonly attribute unsigned short eventPhase;
+
+  void stopPropagation();
+  void stopImmediatePropagation();
+
+  readonly attribute boolean bubbles;
+  readonly attribute boolean cancelable;
+  void preventDefault();
+  readonly attribute boolean defaultPrevented;
+
+  [Unforgeable] readonly attribute boolean isTrusted;
+  readonly attribute DOMTimeStamp timeStamp;
+
+  void initEvent(DOMString type, boolean bubbles, boolean cancelable);
+};
+
+dictionary EventInit {
+  boolean bubbles = false;
+  boolean cancelable = false;
+};
+
+[Constructor(DOMString type, optional CustomEventInit eventInitDict)/*,
+ Exposed=(Window,Worker)*/]
+interface CustomEvent : Event {
+  readonly attribute any detail;
+
+  void initCustomEvent(DOMString type, boolean bubbles, boolean cancelable, any detail);
+};
+
+dictionary CustomEventInit : EventInit {
+  any detail = null;
+};
+
+//[Exposed=(Window,Worker)]
+interface EventTarget {
+  void addEventListener(DOMString type, EventListener? callback, optional boolean capture = false);
+  void removeEventListener(DOMString type, EventListener? callback, optional boolean capture = false);
+  boolean dispatchEvent(Event event);
+};
+
+callback interface EventListener {
+  void handleEvent(Event event);
+};
+
+[NoInterfaceObject]
+interface NonElementParentNode {
+  Element? getElementById(DOMString elementId);
+};
+Document implements NonElementParentNode;
+DocumentFragment implements NonElementParentNode;
+
+[NoInterfaceObject]
+interface ParentNode {
+  [SameObject] readonly attribute HTMLCollection children;
+  readonly attribute Element? firstElementChild;
+  readonly attribute Element? lastElementChild;
+  readonly attribute unsigned long childElementCount;
+
+  [Unscopeable] void prepend((Node or DOMString)... nodes);
+  [Unscopeable] void append((Node or DOMString)... nodes);
+
+  [Unscopeable] Element? query(DOMString relativeSelectors);
+  [NewObject, Unscopeable] Elements queryAll(DOMString relativeSelectors);
+  Element? querySelector(DOMString selectors);
+  [NewObject] NodeList querySelectorAll(DOMString selectors);
+};
+Document implements ParentNode;
+DocumentFragment implements ParentNode;
+Element implements ParentNode;
+
+[NoInterfaceObject]
+interface NonDocumentTypeChildNode {
+  readonly attribute Element? previousElementSibling;
+  readonly attribute Element? nextElementSibling;
+};
+Element implements NonDocumentTypeChildNode;
+CharacterData implements NonDocumentTypeChildNode;
+
+[NoInterfaceObject]
+interface ChildNode {
+  [Unscopeable] void before((Node or DOMString)... nodes);
+  [Unscopeable] void after((Node or DOMString)... nodes);
+  [Unscopeable] void replaceWith((Node or DOMString)... nodes);
+  [Unscopeable] void remove();
+};
+DocumentType implements ChildNode;
+Element implements ChildNode;
+CharacterData implements ChildNode;
+
+// XXX unrecognized tokens &quot;class&quot;, &quot;extends&quot;
+// https://www.w3.org/Bugs/Public/show_bug.cgi?id=20020
+// https://www.w3.org/Bugs/Public/show_bug.cgi?id=23225
+//class Elements extends Array {
+//  Element? query(DOMString relativeSelectors);
+//  Elements queryAll(DOMString relativeSelectors);
+//};
+
+interface NodeList {
+  getter Node? item(unsigned long index);
+  readonly attribute unsigned long length;
+//  iterable&lt;Node&gt;;
+};
+
+interface HTMLCollection {
+  readonly attribute unsigned long length;
+  getter Element? item(unsigned long index);
+  getter Element? namedItem(DOMString name);
+};
+
+[Constructor(MutationCallback callback)]
+interface MutationObserver {
+  void observe(Node target, MutationObserverInit options);
+  void disconnect();
+  sequence&lt;MutationRecord&gt; takeRecords();
+};
+
+callback MutationCallback = void (sequence&lt;MutationRecord&gt; mutations, MutationObserver observer);
+
+dictionary MutationObserverInit {
+  boolean childList = false;
+  boolean attributes;
+  boolean characterData;
+  boolean subtree = false;
+  boolean attributeOldValue;
+  boolean characterDataOldValue;
+  sequence&lt;DOMString&gt; attributeFilter;
+};
+
+interface MutationRecord {
+  readonly attribute DOMString type;
+  readonly attribute Node target;
+  [SameObject] readonly attribute NodeList addedNodes;
+  [SameObject] readonly attribute NodeList removedNodes;
+  readonly attribute Node? previousSibling;
+  readonly attribute Node? nextSibling;
+  readonly attribute DOMString? attributeName;
+  readonly attribute DOMString? attributeNamespace;
+  readonly attribute DOMString? oldValue;
+};
+
+interface Node : EventTarget {
+  const unsigned short ELEMENT_NODE = 1;
+  const unsigned short ATTRIBUTE_NODE = 2; // historical
+  const unsigned short TEXT_NODE = 3;
+  const unsigned short CDATA_SECTION_NODE = 4; // historical
+  const unsigned short ENTITY_REFERENCE_NODE = 5; // historical
+  const unsigned short ENTITY_NODE = 6; // historical
+  const unsigned short PROCESSING_INSTRUCTION_NODE = 7;
+  const unsigned short COMMENT_NODE = 8;
+  const unsigned short DOCUMENT_NODE = 9;
+  const unsigned short DOCUMENT_TYPE_NODE = 10;
+  const unsigned short DOCUMENT_FRAGMENT_NODE = 11;
+  const unsigned short NOTATION_NODE = 12; // historical
+  readonly attribute unsigned short nodeType;
+  readonly attribute DOMString nodeName;
+
+  readonly attribute DOMString? baseURI;
+
+  readonly attribute Document? ownerDocument;
+  readonly attribute Node? parentNode;
+  readonly attribute Element? parentElement;
+  boolean hasChildNodes();
+  [SameObject] readonly attribute NodeList childNodes;
+  readonly attribute Node? firstChild;
+  readonly attribute Node? lastChild;
+  readonly attribute Node? previousSibling;
+  readonly attribute Node? nextSibling;
+
+           attribute DOMString? nodeValue;
+           attribute DOMString? textContent;
+  void normalize();
+
+  [NewObject] Node cloneNode(optional boolean deep = false);
+  boolean isEqualNode(Node? node);
+
+  const unsigned short DOCUMENT_POSITION_DISCONNECTED = 0x01;
+  const unsigned short DOCUMENT_POSITION_PRECEDING = 0x02;
+  const unsigned short DOCUMENT_POSITION_FOLLOWING = 0x04;
+  const unsigned short DOCUMENT_POSITION_CONTAINS = 0x08;
+  const unsigned short DOCUMENT_POSITION_CONTAINED_BY = 0x10;
+  const unsigned short DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20;
+  unsigned short compareDocumentPosition(Node other);
+  boolean contains(Node? other);
+
+  DOMString? lookupPrefix(DOMString? namespace);
+  DOMString? lookupNamespaceURI(DOMString? prefix);
+  boolean isDefaultNamespace(DOMString? namespace);
+
+  Node insertBefore(Node node, Node? child);
+  Node appendChild(Node node);
+  Node replaceChild(Node node, Node child);
+  Node removeChild(Node child);
+};
+
+[Constructor]
+interface Document : Node {
+  [SameObject] readonly attribute DOMImplementation implementation;
+  readonly attribute DOMString URL;
+  readonly attribute DOMString documentURI;
+  readonly attribute DOMString origin;
+  readonly attribute DOMString compatMode;
+  readonly attribute DOMString characterSet;
+  readonly attribute DOMString inputEncoding; // legacy alias of .characterSet
+  readonly attribute DOMString contentType;
+
+  readonly attribute DocumentType? doctype;
+  readonly attribute Element? documentElement;
+  HTMLCollection getElementsByTagName(DOMString localName);
+  HTMLCollection getElementsByTagNameNS(DOMString? namespace, DOMString localName);
+  HTMLCollection getElementsByClassName(DOMString classNames);
+
+  [NewObject] Element createElement(DOMString localName);
+  [NewObject] Element createElementNS(DOMString? namespace, DOMString qualifiedName);
+  [NewObject] DocumentFragment createDocumentFragment();
+  [NewObject] Text createTextNode(DOMString data);
+  [NewObject] Comment createComment(DOMString data);
+  [NewObject] ProcessingInstruction createProcessingInstruction(DOMString target, DOMString data);
+
+  [NewObject] Node importNode(Node node, optional boolean deep = false);
+  Node adoptNode(Node node);
+
+  [NewObject] Attr createAttribute(DOMString localName);
+  [NewObject] Attr createAttributeNS(DOMString? namespace, DOMString name);
+
+  [NewObject] Event createEvent(DOMString interface);
+
+  [NewObject] Range createRange();
+
+  // NodeFilter.SHOW_ALL = 0xFFFFFFFF
+  [NewObject] NodeIterator createNodeIterator(Node root, optional unsigned long whatToShow = 0xFFFFFFFF, optional NodeFilter? filter = null);
+  [NewObject] TreeWalker createTreeWalker(Node root, optional unsigned long whatToShow = 0xFFFFFFFF, optional NodeFilter? filter = null);
+};
+
+interface XMLDocument : Document {};
+
+interface DOMImplementation {
+  [NewObject] DocumentType createDocumentType(DOMString qualifiedName, DOMString publicId, DOMString systemId);
+  [NewObject] XMLDocument createDocument(DOMString? namespace, [TreatNullAs=EmptyString] DOMString qualifiedName, optional DocumentType? doctype = null);
+  [NewObject] Document createHTMLDocument(optional DOMString title);
+
+  boolean hasFeature(); // useless; always returns true
+};
+
+[Constructor]
+interface DocumentFragment : Node {
+};
+
+interface DocumentType : Node {
+  readonly attribute DOMString name;
+  readonly attribute DOMString publicId;
+  readonly attribute DOMString systemId;
+};
+
+interface Element : Node {
+  readonly attribute DOMString? namespaceURI;
+  readonly attribute DOMString? prefix;
+  readonly attribute DOMString localName;
+  readonly attribute DOMString tagName;
+
+           attribute DOMString id;
+           attribute DOMString className;
+  [SameObject] readonly attribute DOMTokenList classList;
+
+  boolean hasAttributes();
+  [SameObject] readonly attribute NamedNodeMap attributes;
+  DOMString? getAttribute(DOMString name);
+  DOMString? getAttributeNS(DOMString? namespace, DOMString localName);
+  void setAttribute(DOMString name, DOMString value);
+  void setAttributeNS(DOMString? namespace, DOMString name, DOMString value);
+  void removeAttribute(DOMString name);
+  void removeAttributeNS(DOMString? namespace, DOMString localName);
+  boolean hasAttribute(DOMString name);
+  boolean hasAttributeNS(DOMString? namespace, DOMString localName);
+
+  Attr? getAttributeNode(DOMString name);
+  Attr? getAttributeNodeNS(DOMString? namespace, DOMString localName);
+  Attr? setAttributeNode(Attr attr);
+  Attr? setAttributeNodeNS(Attr attr);
+  Attr removeAttributeNode(Attr attr);
+
+  Element? closest(DOMString selectors);
+  boolean matches(DOMString selectors);
+
+  HTMLCollection getElementsByTagName(DOMString localName);
+  HTMLCollection getElementsByTagNameNS(DOMString? namespace, DOMString localName);
+  HTMLCollection getElementsByClassName(DOMString classNames);
+};
+
+interface NamedNodeMap {
+  readonly attribute unsigned long length;
+  getter Attr? item(unsigned long index);
+  getter Attr? getNamedItem(DOMString name);
+  Attr? getNamedItemNS(DOMString? namespace, DOMString localName);
+  Attr? setNamedItem(Attr attr);
+  Attr? setNamedItemNS(Attr attr);
+  Attr removeNamedItem(DOMString name);
+  Attr removeNamedItemNS(DOMString? namespace, DOMString localName);
+};
+
+interface Attr {
+  readonly attribute DOMString? namespaceURI;
+  readonly attribute DOMString? prefix;
+  readonly attribute DOMString localName;
+  readonly attribute DOMString name;
+           attribute DOMString value;
+           attribute DOMString nodeValue; // legacy alias of .value
+           attribute DOMString textContent; // legacy alias of .value
+
+  readonly attribute Element? ownerElement;
+
+  readonly attribute boolean specified; // useless; always returns true
+};
+
+interface CharacterData : Node {
+  [TreatNullAs=EmptyString] attribute DOMString data;
+  readonly attribute unsigned long length;
+  DOMString substringData(unsigned long offset, unsigned long count);
+  void appendData(DOMString data);
+  void insertData(unsigned long offset, DOMString data);
+  void deleteData(unsigned long offset, unsigned long count);
+  void replaceData(unsigned long offset, unsigned long count, DOMString data);
+};
+
+[Constructor(optional DOMString data = &quot;&quot;)]
+interface Text : CharacterData {
+  [NewObject] Text splitText(unsigned long offset);
+  readonly attribute DOMString wholeText;
+};
+
+interface ProcessingInstruction : CharacterData {
+  readonly attribute DOMString target;
+};
+
+[Constructor(optional DOMString data = &quot;&quot;)]
+interface Comment : CharacterData {
+};
+
+[Constructor]
+interface Range {
+  readonly attribute Node startContainer;
+  readonly attribute unsigned long startOffset;
+  readonly attribute Node endContainer;
+  readonly attribute unsigned long endOffset;
+  readonly attribute boolean collapsed;
+  readonly attribute Node commonAncestorContainer;
+
+  void setStart(Node node, unsigned long offset);
+  void setEnd(Node node, unsigned long offset);
+  void setStartBefore(Node node);
+  void setStartAfter(Node node);
+  void setEndBefore(Node node);
+  void setEndAfter(Node node);
+  void collapse(optional boolean toStart = false);
+  void selectNode(Node node);
+  void selectNodeContents(Node node);
+
+  const unsigned short START_TO_START = 0;
+  const unsigned short START_TO_END = 1;
+  const unsigned short END_TO_END = 2;
+  const unsigned short END_TO_START = 3;
+  short compareBoundaryPoints(unsigned short how, Range sourceRange);
+
+  void deleteContents();
+  [NewObject] DocumentFragment extractContents();
+  [NewObject] DocumentFragment cloneContents();
+  void insertNode(Node node);
+  void surroundContents(Node newParent);
+
+  [NewObject] Range cloneRange();
+  void detach();
+
+  boolean isPointInRange(Node node, unsigned long offset);
+  short comparePoint(Node node, unsigned long offset);
+
+  boolean intersectsNode(Node node);
+
+  stringifier;
+};
+
+interface NodeIterator {
+  [SameObject] readonly attribute Node root;
+  readonly attribute Node referenceNode;
+  readonly attribute boolean pointerBeforeReferenceNode;
+  readonly attribute unsigned long whatToShow;
+  readonly attribute NodeFilter? filter;
+
+  Node? nextNode();
+  Node? previousNode();
+
+  void detach();
+};
+
+interface TreeWalker {
+  [SameObject] readonly attribute Node root;
+  readonly attribute unsigned long whatToShow;
+  readonly attribute NodeFilter? filter;
+           attribute Node currentNode;
+
+  Node? parentNode();
+  Node? firstChild();
+  Node? lastChild();
+  Node? previousSibling();
+  Node? nextSibling();
+  Node? previousNode();
+  Node? nextNode();
+};
+
+callback interface NodeFilter {
+  // Constants for acceptNode()
+  const unsigned short FILTER_ACCEPT = 1;
+  const unsigned short FILTER_REJECT = 2;
+  const unsigned short FILTER_SKIP = 3;
+
+  // Constants for whatToShow
+  const unsigned long SHOW_ALL = 0xFFFFFFFF;
+  const unsigned long SHOW_ELEMENT = 0x1;
+  const unsigned long SHOW_ATTRIBUTE = 0x2; // historical
+  const unsigned long SHOW_TEXT = 0x4;
+  const unsigned long SHOW_CDATA_SECTION = 0x8; // historical
+  const unsigned long SHOW_ENTITY_REFERENCE = 0x10; // historical
+  const unsigned long SHOW_ENTITY = 0x20; // historical
+  const unsigned long SHOW_PROCESSING_INSTRUCTION = 0x40;
+  const unsigned long SHOW_COMMENT = 0x80;
+  const unsigned long SHOW_DOCUMENT = 0x100;
+  const unsigned long SHOW_DOCUMENT_TYPE = 0x200;
+  const unsigned long SHOW_DOCUMENT_FRAGMENT = 0x400;
+  const unsigned long SHOW_NOTATION = 0x800; // historical
+
+  unsigned short acceptNode(Node node);
+};
+
+interface DOMTokenList {
+  readonly attribute unsigned long length;
+  getter DOMString? item(unsigned long index);
+  boolean contains(DOMString token);
+  void add(DOMString... tokens);
+  void remove(DOMString... tokens);
+  boolean toggle(DOMString token, optional boolean force);
+  stringifier;
+//  iterable&lt;DOMString&gt;;
+};
+
+interface DOMSettableTokenList : DOMTokenList {
+            attribute DOMString value;
+};
+&lt;/script&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+var xmlDoc, detachedRange, element;
+var idlArray;
+setup(function() {
+  xmlDoc = document.implementation.createDocument(null, &quot;&quot;, null);
+  detachedRange = document.createRange();
+  detachedRange.detach();
+  element = xmlDoc.createElementNS(null, &quot;test&quot;);
+  element.setAttribute(&quot;bar&quot;, &quot;baz&quot;);
+
+  idlArray = new IdlArray();
+  idlArray.add_idls(document.querySelector(&quot;script[type=text\\/plain]&quot;).textContent);
+  idlArray.add_objects({
+    Event: ['document.createEvent(&quot;Event&quot;)', 'new Event(&quot;foo&quot;)'],
+    CustomEvent: ['new CustomEvent(&quot;foo&quot;)'],
+    XMLDocument: ['xmlDoc'],
+    DOMImplementation: ['document.implementation'],
+    DocumentFragment: ['document.createDocumentFragment()'],
+    DocumentType: ['document.doctype'],
+    Element: ['element'],
+    Attr: ['document.querySelector(&quot;[id]&quot;).attributes[0]'],
+    Text: ['document.createTextNode(&quot;abc&quot;)'],
+    ProcessingInstruction: ['xmlDoc.createProcessingInstruction(&quot;abc&quot;, &quot;def&quot;)'],
+    Comment: ['document.createComment(&quot;abc&quot;)'],
+    Range: ['document.createRange()', 'detachedRange'],
+    NodeIterator: ['document.createNodeIterator(document.body, NodeFilter.SHOW_ALL, null, false)'],
+    TreeWalker: ['document.createTreeWalker(document.body, NodeFilter.SHOW_ALL, null, false)'],
+    NodeList: ['document.querySelectorAll(&quot;script&quot;)'],
+    HTMLCollection: ['document.body.children'],
+    DOMTokenList: ['document.body.classList'],
+  });
+});
+idlArray.test();
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomlistsDOMTokenListstringifierexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomlistsDOMTokenListstringifierexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/DOMTokenList-stringifier-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/lists/DOMTokenList-stringifier-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/DOMTokenList-stringifier-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/DOMTokenList-stringifier-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL DOMTokenList stringifier assert_equals: String(classList) should compress whitespace expected &quot;a b&quot; but got &quot;   a  a b&quot;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomlistsDOMTokenListstringifierhtmlfromrev189470trunkLayoutTestshttptestsw3cdomlistsDOMTokenListstringifierhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/DOMTokenList-stringifier.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/lists/DOMTokenList-stringifier.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/DOMTokenList-stringifier.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/lists/DOMTokenList-stringifier.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;DOMTokenList stringifier&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-domtokenlist-stringifier&quot;&gt;
+&lt;link rel=author title=Ms2ger href=&quot;mailto:Ms2ger@gmail.com&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;span class=&quot;   a  a b&quot;&gt;&lt;/span&gt;
+&lt;script&gt;
+test(function() {
+  var span = document.querySelector(&quot;span&quot;);
+  assert_equals(span.getAttribute(&quot;class&quot;), &quot;   a  a b&quot;,
+                &quot;getAttribute should return the literal value&quot;);
+  assert_equals(span.className, &quot;   a  a b&quot;,
+                &quot;className should return the literal value&quot;);
+  assert_equals(String(span.classList), &quot;a b&quot;,
+                &quot;String(classList) should compress whitespace&quot;);
+  assert_equals(span.classList.toString(), &quot;a b&quot;,
+                &quot;classList.toString() should compress whitespace&quot;);
+  assert_class_string(span.classList, &quot;DOMTokenList&quot;);
+});
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDataappendDataexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesCharacterDataappendDataexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-appendData-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/CharacterData-appendData-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-appendData-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-appendData-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+
+PASS Text.appendData('bar') 
+PASS Text.appendData('') 
+PASS Text.appendData(non-ASCII) 
+PASS Text.appendData(null) 
+PASS Text.appendData(undefined) 
+PASS Text.appendData('', 'bar') 
+FAIL Text.appendData() assert_throws: function &quot;function () { node.appendData() }&quot; did not throw
+PASS Comment.appendData('bar') 
+PASS Comment.appendData('') 
+PASS Comment.appendData(non-ASCII) 
+PASS Comment.appendData(null) 
+PASS Comment.appendData(undefined) 
+PASS Comment.appendData('', 'bar') 
+FAIL Comment.appendData() assert_throws: function &quot;function () { node.appendData() }&quot; did not throw
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDataappendDatahtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesCharacterDataappendDatahtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-appendData.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/CharacterData-appendData.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-appendData.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-appendData.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,70 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;CharacterData.appendData&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-characterdata-appenddata&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-characterdata-data&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+function testNode(create, type) {
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.appendData(&quot;bar&quot;)
+    assert_equals(node.data, &quot;testbar&quot;)
+  }, type + &quot;.appendData('bar')&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.appendData(&quot;&quot;)
+    assert_equals(node.data, &quot;test&quot;)
+  }, type + &quot;.appendData('')&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+    node.appendData(&quot;, append more 資料,測試資料&quot;);
+    assert_equals(node.data, &quot;test, append more 資料,測試資料&quot;);
+    assert_equals(node.length, 25);
+  }, type + &quot;.appendData(non-ASCII)&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.appendData(null)
+    assert_equals(node.data, &quot;testnull&quot;)
+  }, type + &quot;.appendData(null)&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.appendData(undefined)
+    assert_equals(node.data, &quot;testundefined&quot;)
+  }, type + &quot;.appendData(undefined)&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.appendData(&quot;&quot;, &quot;bar&quot;)
+    assert_equals(node.data, &quot;test&quot;)
+  }, type + &quot;.appendData('', 'bar')&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    assert_throws(new TypeError(), function() { node.appendData() });
+    assert_equals(node.data, &quot;test&quot;)
+  }, type + &quot;.appendData()&quot;)
+}
+
+testNode(function() { return document.createTextNode(&quot;test&quot;) }, &quot;Text&quot;)
+testNode(function() { return document.createComment(&quot;test&quot;) }, &quot;Comment&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDatadataexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesCharacterDatadataexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-data-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/CharacterData-data-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-data-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-data-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+
+PASS Text.data initial value 
+PASS Text.data = null 
+PASS Text.data = undefined 
+PASS Text.data = 0 
+PASS Text.data = '' 
+PASS Text.data = '--' 
+PASS Text.data = '資料' 
+PASS Text.data = '🌠 test 🌠 TEST' 
+PASS Comment.data initial value 
+PASS Comment.data = null 
+PASS Comment.data = undefined 
+PASS Comment.data = 0 
+PASS Comment.data = '' 
+PASS Comment.data = '--' 
+PASS Comment.data = '資料' 
+PASS Comment.data = '🌠 test 🌠 TEST' 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDatadatahtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesCharacterDatadatahtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-data.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/CharacterData-data.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-data.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-data.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,82 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;CharacterData.data&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-characterdata-data&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+function testNode(create, type) {
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+    assert_equals(node.length, 4)
+  }, type + &quot;.data initial value&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.data = null;
+    assert_equals(node.data, &quot;&quot;)
+    assert_equals(node.length, 0)
+  }, type + &quot;.data = null&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.data = undefined;
+    assert_equals(node.data, &quot;undefined&quot;)
+    assert_equals(node.length, 9)
+  }, type + &quot;.data = undefined&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.data = 0;
+    assert_equals(node.data, &quot;0&quot;)
+    assert_equals(node.length, 1)
+  }, type + &quot;.data = 0&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.data = &quot;&quot;;
+    assert_equals(node.data, &quot;&quot;)
+    assert_equals(node.length, 0)
+  }, type + &quot;.data = ''&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.data = &quot;--&quot;;
+    assert_equals(node.data, &quot;--&quot;)
+    assert_equals(node.length, 2)
+  }, type + &quot;.data = '--'&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.data = &quot;資料&quot;;
+    assert_equals(node.data, &quot;資料&quot;)
+    assert_equals(node.length, 2)
+  }, type + &quot;.data = '資料'&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.data = &quot;🌠 test 🌠 TEST&quot;;
+    assert_equals(node.data, &quot;🌠 test 🌠 TEST&quot;)
+    assert_equals(node.length, 15)  // Counting UTF-16 code units
+  }, type + &quot;.data = '🌠 test 🌠 TEST'&quot;)
+}
+
+testNode(function() { return document.createTextNode(&quot;test&quot;) }, &quot;Text&quot;)
+testNode(function() { return document.createComment(&quot;test&quot;) }, &quot;Comment&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDatadeleteDataexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesCharacterDatadeleteDataexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-deleteData-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/CharacterData-deleteData-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-deleteData-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-deleteData-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+
+PASS Text.deleteData() out of bounds 
+PASS Text.deleteData() at the start 
+PASS Text.deleteData() at the end 
+PASS Text.deleteData() in the middle 
+PASS Text.deleteData() with zero count 
+FAIL Text.deleteData() with small negative count IndexSizeError: DOM Exception 1
+PASS Text.deleteData() with large negative count 
+PASS Text.deleteData() with non-ascii data 
+PASS Text.deleteData() with non-BMP data 
+PASS Comment.deleteData() out of bounds 
+PASS Comment.deleteData() at the start 
+PASS Comment.deleteData() at the end 
+PASS Comment.deleteData() in the middle 
+PASS Comment.deleteData() with zero count 
+FAIL Comment.deleteData() with small negative count IndexSizeError: DOM Exception 1
+PASS Comment.deleteData() with large negative count 
+PASS Comment.deleteData() with non-ascii data 
+PASS Comment.deleteData() with non-BMP data 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDatadeleteDatahtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesCharacterDatadeleteDatahtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-deleteData.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/CharacterData-deleteData.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-deleteData.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-deleteData.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,95 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;CharacterData.deleteData&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-characterdata-deletedata&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-characterdata-data&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+function testNode(create, type) {
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    assert_throws(&quot;INDEX_SIZE_ERR&quot;, function() { node.deleteData(5, 10) })
+    assert_throws(&quot;INDEX_SIZE_ERR&quot;, function() { node.deleteData(5, 0) })
+    assert_throws(&quot;INDEX_SIZE_ERR&quot;, function() { node.deleteData(-1, 10) })
+    assert_throws(&quot;INDEX_SIZE_ERR&quot;, function() { node.deleteData(-1, 0) })
+  }, type + &quot;.deleteData() out of bounds&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.deleteData(0, 2)
+    assert_equals(node.data, &quot;st&quot;)
+  }, type + &quot;.deleteData() at the start&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.deleteData(2, 10)
+    assert_equals(node.data, &quot;te&quot;)
+  }, type + &quot;.deleteData() at the end&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.deleteData(1, 1)
+    assert_equals(node.data, &quot;tst&quot;)
+  }, type + &quot;.deleteData() in the middle&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.deleteData(2, 0)
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.deleteData(0, 0)
+    assert_equals(node.data, &quot;test&quot;)
+  }, type + &quot;.deleteData() with zero count&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.deleteData(2, -1)
+    assert_equals(node.data, &quot;te&quot;)
+  }, type + &quot;.deleteData() with small negative count&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.deleteData(1, -0x100000000 + 2)
+    assert_equals(node.data, &quot;tt&quot;)
+  }, type + &quot;.deleteData() with large negative count&quot;)
+
+  test(function() {
+    var node = create()
+    node.data = &quot;This is the character data test, append more 資料,更多測試資料&quot;;
+
+    node.deleteData(40, 5);
+    assert_equals(node.data, &quot;This is the character data test, append 資料,更多測試資料&quot;);
+    node.deleteData(45, 2);
+    assert_equals(node.data, &quot;This is the character data test, append 資料,更多資料&quot;);
+  }, type + &quot;.deleteData() with non-ascii data&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.data = &quot;🌠 test 🌠 TEST&quot;
+
+    node.deleteData(5, 8);  // Counting UTF-16 code units
+    assert_equals(node.data, &quot;🌠 teST&quot;);
+  }, type + &quot;.deleteData() with non-BMP data&quot;)
+}
+
+testNode(function() { return document.createTextNode(&quot;test&quot;) }, &quot;Text&quot;)
+testNode(function() { return document.createComment(&quot;test&quot;) }, &quot;Comment&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDatainsertDataexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesCharacterDatainsertDataexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-insertData-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/CharacterData-insertData-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-insertData-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-insertData-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+
+PASS Text.insertData() out of bounds 
+PASS Text.insertData() negative out of bounds 
+PASS Text.insertData() negative in bounds 
+PASS Text.insertData('') 
+PASS Text.insertData() at the start 
+PASS Text.insertData() in the middle 
+PASS Text.insertData() at the end 
+PASS Text.insertData() with non-ascii data 
+PASS Text.insertData() with non-BMP data 
+PASS Comment.insertData() out of bounds 
+PASS Comment.insertData() negative out of bounds 
+PASS Comment.insertData() negative in bounds 
+PASS Comment.insertData('') 
+PASS Comment.insertData() at the start 
+PASS Comment.insertData() in the middle 
+PASS Comment.insertData() at the end 
+PASS Comment.insertData() with non-ascii data 
+PASS Comment.insertData() with non-BMP data 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDatainsertDatahtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesCharacterDatainsertDatahtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-insertData.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/CharacterData-insertData.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-insertData.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-insertData.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,90 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;CharacterData.insertData&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-characterdata-insertdata&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-characterdata-data&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+function testNode(create, type) {
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    assert_throws(&quot;INDEX_SIZE_ERR&quot;, function() { node.insertData(5, &quot;x&quot;) })
+    assert_throws(&quot;INDEX_SIZE_ERR&quot;, function() { node.insertData(5, &quot;&quot;) })
+  }, type + &quot;.insertData() out of bounds&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    assert_throws(&quot;INDEX_SIZE_ERR&quot;, function() { node.insertData(-1, &quot;x&quot;) })
+    assert_throws(&quot;INDEX_SIZE_ERR&quot;, function() { node.insertData(-0x100000000 + 5, &quot;x&quot;) })
+  }, type + &quot;.insertData() negative out of bounds&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.insertData(-0x100000000 + 2, &quot;X&quot;)
+    assert_equals(node.data, &quot;teXst&quot;)
+  }, type + &quot;.insertData() negative in bounds&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.insertData(0, &quot;&quot;)
+    assert_equals(node.data, &quot;test&quot;)
+  }, type + &quot;.insertData('')&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.insertData(0, &quot;X&quot;)
+    assert_equals(node.data, &quot;Xtest&quot;)
+  }, type + &quot;.insertData() at the start&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.insertData(2, &quot;X&quot;)
+    assert_equals(node.data, &quot;teXst&quot;)
+  }, type + &quot;.insertData() in the middle&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.insertData(4, &quot;ing&quot;)
+    assert_equals(node.data, &quot;testing&quot;)
+  }, type + &quot;.insertData() at the end&quot;)
+
+  test(function() {
+    var node = create()
+    node.data = &quot;This is the character data, append more 資料,測試資料&quot;;
+
+    node.insertData(26, &quot; test&quot;);
+    assert_equals(node.data, &quot;This is the character data test, append more 資料,測試資料&quot;);
+    node.insertData(48, &quot;更多&quot;);
+    assert_equals(node.data, &quot;This is the character data test, append more 資料,更多測試資料&quot;);
+  }, type + &quot;.insertData() with non-ascii data&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.data = &quot;🌠 test 🌠 TEST&quot;
+
+    node.insertData(5, &quot;--&quot;);  // Counting UTF-16 code units
+    assert_equals(node.data, &quot;🌠 te--st 🌠 TEST&quot;);
+  }, type + &quot;.insertData() with non-BMP data&quot;)
+}
+
+testNode(function() { return document.createTextNode(&quot;test&quot;) }, &quot;Text&quot;)
+testNode(function() { return document.createComment(&quot;test&quot;) }, &quot;Comment&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDataremoveexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesCharacterDataremoveexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-remove-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/CharacterData-remove-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-remove-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-remove-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+
+PASS text should support remove() 
+PASS remove() should work if text doesn't have a parent 
+PASS remove() should work if text does have a parent 
+PASS remove() should work if text does have a parent and siblings 
+PASS comment should support remove() 
+PASS remove() should work if comment doesn't have a parent 
+PASS remove() should work if comment does have a parent 
+PASS remove() should work if comment does have a parent and siblings 
+PASS PI should support remove() 
+PASS remove() should work if PI doesn't have a parent 
+PASS remove() should work if PI does have a parent 
+PASS remove() should work if PI does have a parent and siblings 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDataremovehtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesCharacterDataremovehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-remove.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/CharacterData-remove.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-remove.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-remove.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;CharacterData.remove&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-childnode-remove&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;ChildNode-remove.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script&gt;
+var text, text_parent,
+    comment, comment_parent,
+    pi, pi_parent;
+setup(function() {
+  text = document.createTextNode(&quot;text&quot;);
+  text_parent = document.createElement(&quot;div&quot;);
+  comment = document.createComment(&quot;comment&quot;);
+  comment_parent = document.createElement(&quot;div&quot;);
+  pi = document.createProcessingInstruction(&quot;foo&quot;, &quot;bar&quot;);
+  pi_parent = document.createElement(&quot;div&quot;);
+});
+testRemove(text, text_parent, &quot;text&quot;);
+testRemove(comment, comment_parent, &quot;comment&quot;);
+testRemove(pi, pi_parent, &quot;PI&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDatareplaceDataexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesCharacterDatareplaceDataexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-replaceData-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/CharacterData-replaceData-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-replaceData-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-replaceData-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,36 @@
</span><ins>+
+PASS Text.replaceData() with invalid offset 
+PASS Text.replaceData() with clamped count 
+FAIL Text.replaceData() with negative clamped count IndexSizeError: DOM Exception 1
+PASS Text.replaceData() before the start 
+PASS Text.replaceData() at the start (shorter) 
+PASS Text.replaceData() at the start (equal length) 
+PASS Text.replaceData() at the start (longer) 
+PASS Text.replaceData() in the middle (shorter) 
+PASS Text.replaceData() in the middle (equal length) 
+PASS Text.replaceData() in the middle (longer) 
+PASS Text.replaceData() at the end (shorter) 
+PASS Text.replaceData() at the end (same length) 
+PASS Text.replaceData() at the end (longer) 
+PASS Text.replaceData() the whole string 
+PASS Text.replaceData() with the empty string 
+PASS Text.replaceData() with non-ASCII data 
+PASS Text.replaceData() with non-BMP data 
+PASS Comment.replaceData() with invalid offset 
+PASS Comment.replaceData() with clamped count 
+FAIL Comment.replaceData() with negative clamped count IndexSizeError: DOM Exception 1
+PASS Comment.replaceData() before the start 
+PASS Comment.replaceData() at the start (shorter) 
+PASS Comment.replaceData() at the start (equal length) 
+PASS Comment.replaceData() at the start (longer) 
+PASS Comment.replaceData() in the middle (shorter) 
+PASS Comment.replaceData() in the middle (equal length) 
+PASS Comment.replaceData() in the middle (longer) 
+PASS Comment.replaceData() at the end (shorter) 
+PASS Comment.replaceData() at the end (same length) 
+PASS Comment.replaceData() at the end (longer) 
+PASS Comment.replaceData() the whole string 
+PASS Comment.replaceData() with the empty string 
+PASS Comment.replaceData() with non-ASCII data 
+PASS Comment.replaceData() with non-BMP data 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDatareplaceDatahtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesCharacterDatareplaceDatahtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-replaceData.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/CharacterData-replaceData.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-replaceData.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-replaceData.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,163 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;CharacterData.replaceData&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-characterdata-replacedata&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-characterdata-data&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+function testNode(create, type) {
+  // Step 2.
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    assert_throws(&quot;IndexSizeError&quot;, function() { node.replaceData(5, 1, &quot;x&quot;) })
+    assert_throws(&quot;IndexSizeError&quot;, function() { node.replaceData(5, 0, &quot;&quot;) })
+    assert_throws(&quot;IndexSizeError&quot;, function() { node.replaceData(-1, 1, &quot;x&quot;) })
+    assert_throws(&quot;IndexSizeError&quot;, function() { node.replaceData(-1, 0, &quot;&quot;) })
+    assert_equals(node.data, &quot;test&quot;)
+  }, type + &quot;.replaceData() with invalid offset&quot;)
+
+  // Step 3.
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.replaceData(2, 10, &quot;yo&quot;)
+    assert_equals(node.data, &quot;teyo&quot;)
+  }, type + &quot;.replaceData() with clamped count&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.replaceData(2, -1, &quot;yo&quot;)
+    assert_equals(node.data, &quot;teyo&quot;)
+  }, type + &quot;.replaceData() with negative clamped count&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.replaceData(0, 0, &quot;yo&quot;)
+    assert_equals(node.data, &quot;yotest&quot;)
+  }, type + &quot;.replaceData() before the start&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.replaceData(0, 2, &quot;y&quot;)
+    assert_equals(node.data, &quot;yst&quot;)
+  }, type + &quot;.replaceData() at the start (shorter)&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.replaceData(0, 2, &quot;yo&quot;)
+    assert_equals(node.data, &quot;yost&quot;)
+  }, type + &quot;.replaceData() at the start (equal length)&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.replaceData(0, 2, &quot;yoa&quot;)
+    assert_equals(node.data, &quot;yoast&quot;)
+  }, type + &quot;.replaceData() at the start (longer)&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.replaceData(1, 2, &quot;o&quot;)
+    assert_equals(node.data, &quot;tot&quot;)
+  }, type + &quot;.replaceData() in the middle (shorter)&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.replaceData(1, 2, &quot;yo&quot;)
+    assert_equals(node.data, &quot;tyot&quot;)
+  }, type + &quot;.replaceData() in the middle (equal length)&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.replaceData(1, 1, &quot;waddup&quot;)
+    assert_equals(node.data, &quot;twaddupst&quot;)
+    node.replaceData(1, 1, &quot;yup&quot;)
+    assert_equals(node.data, &quot;tyupaddupst&quot;)
+  }, type + &quot;.replaceData() in the middle (longer)&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.replaceData(1, 20, &quot;yo&quot;)
+    assert_equals(node.data, &quot;tyo&quot;)
+  }, type + &quot;.replaceData() at the end (shorter)&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.replaceData(2, 20, &quot;yo&quot;)
+    assert_equals(node.data, &quot;teyo&quot;)
+  }, type + &quot;.replaceData() at the end (same length)&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.replaceData(4, 20, &quot;yo&quot;)
+    assert_equals(node.data, &quot;testyo&quot;)
+  }, type + &quot;.replaceData() at the end (longer)&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.replaceData(0, 4, &quot;quux&quot;)
+    assert_equals(node.data, &quot;quux&quot;)
+  }, type + &quot;.replaceData() the whole string&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.replaceData(0, 4, &quot;&quot;)
+    assert_equals(node.data, &quot;&quot;)
+  }, type + &quot;.replaceData() with the empty string&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.data = &quot;This is the character data test, append 資料,更多資料&quot;;
+
+    node.replaceData(33, 6, &quot;other&quot;);
+    assert_equals(node.data, &quot;This is the character data test, other 資料,更多資料&quot;);
+    node.replaceData(44, 2, &quot;文字&quot;);
+    assert_equals(node.data, &quot;This is the character data test, other 資料,更多文字&quot;);
+  }, type + &quot;.replaceData() with non-ASCII data&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.data = &quot;🌠 test 🌠 TEST&quot;
+
+    node.replaceData(5, 8, &quot;--&quot;);  // Counting UTF-16 code units
+    assert_equals(node.data, &quot;🌠 te--ST&quot;);
+  }, type + &quot;.replaceData() with non-BMP data&quot;)
+}
+
+testNode(function() { return document.createTextNode(&quot;test&quot;) }, &quot;Text&quot;)
+testNode(function() { return document.createComment(&quot;test&quot;) }, &quot;Comment&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDatasubstringDataexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesCharacterDatasubstringDataexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-substringData-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/CharacterData-substringData-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-substringData-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-substringData-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+
+FAIL Text.substringData() with too few arguments assert_throws: function &quot;function () { node.substringData() }&quot; did not throw
+PASS Text.substringData() with too many arguments 
+PASS Text.substringData() with invalid offset 
+PASS Text.substringData() with in-bounds offset 
+PASS Text.substringData() with zero count 
+PASS Text.substringData() with very large offset 
+PASS Text.substringData() with negative offset 
+PASS Text.substringData() with string offset 
+PASS Text.substringData() with in-bounds count 
+PASS Text.substringData() with large count 
+PASS Text.substringData() with very large count 
+FAIL Text.substringData() with negative count IndexSizeError: DOM Exception 1
+PASS Text.substringData() with non-ASCII data 
+PASS Text.substringData() with non-BMP data 
+FAIL Comment.substringData() with too few arguments assert_throws: function &quot;function () { node.substringData() }&quot; did not throw
+PASS Comment.substringData() with too many arguments 
+PASS Comment.substringData() with invalid offset 
+PASS Comment.substringData() with in-bounds offset 
+PASS Comment.substringData() with zero count 
+PASS Comment.substringData() with very large offset 
+PASS Comment.substringData() with negative offset 
+PASS Comment.substringData() with string offset 
+PASS Comment.substringData() with in-bounds count 
+PASS Comment.substringData() with large count 
+PASS Comment.substringData() with very large count 
+FAIL Comment.substringData() with negative count IndexSizeError: DOM Exception 1
+PASS Comment.substringData() with non-ASCII data 
+PASS Comment.substringData() with non-BMP data 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDatasubstringDatahtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesCharacterDatasubstringDatahtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-substringData.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/CharacterData-substringData.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-substringData.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-substringData.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,137 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;CharacterData.substringData&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-characterdata-substringdata&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-characterdata-data&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+function testNode(create, type) {
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    assert_throws(new TypeError(), function() { node.substringData() })
+    assert_throws(new TypeError(), function() { node.substringData(0) })
+  }, type + &quot;.substringData() with too few arguments&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    assert_equals(node.substringData(0, 1, &quot;test&quot;), &quot;t&quot;)
+  }, type + &quot;.substringData() with too many arguments&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    assert_throws(&quot;IndexSizeError&quot;, function() { node.substringData(5, 0) })
+    assert_throws(&quot;IndexSizeError&quot;, function() { node.substringData(6, 0) })
+    assert_throws(&quot;IndexSizeError&quot;, function() { node.substringData(-1, 0) })
+  }, type + &quot;.substringData() with invalid offset&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    assert_equals(node.substringData(0, 1), &quot;t&quot;)
+    assert_equals(node.substringData(1, 1), &quot;e&quot;)
+    assert_equals(node.substringData(2, 1), &quot;s&quot;)
+    assert_equals(node.substringData(3, 1), &quot;t&quot;)
+    assert_equals(node.substringData(4, 1), &quot;&quot;)
+  }, type + &quot;.substringData() with in-bounds offset&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    assert_equals(node.substringData(0, 0), &quot;&quot;)
+    assert_equals(node.substringData(1, 0), &quot;&quot;)
+    assert_equals(node.substringData(2, 0), &quot;&quot;)
+    assert_equals(node.substringData(3, 0), &quot;&quot;)
+    assert_equals(node.substringData(4, 0), &quot;&quot;)
+  }, type + &quot;.substringData() with zero count&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    assert_equals(node.substringData(0x100000000 + 0, 1), &quot;t&quot;)
+    assert_equals(node.substringData(0x100000000 + 1, 1), &quot;e&quot;)
+    assert_equals(node.substringData(0x100000000 + 2, 1), &quot;s&quot;)
+    assert_equals(node.substringData(0x100000000 + 3, 1), &quot;t&quot;)
+    assert_equals(node.substringData(0x100000000 + 4, 1), &quot;&quot;)
+  }, type + &quot;.substringData() with very large offset&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    assert_equals(node.substringData(-0x100000000 + 2, 1), &quot;s&quot;)
+  }, type + &quot;.substringData() with negative offset&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    assert_equals(node.substringData(&quot;test&quot;, 3), &quot;tes&quot;)
+  }, type + &quot;.substringData() with string offset&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    assert_equals(node.substringData(0, 1), &quot;t&quot;)
+    assert_equals(node.substringData(0, 2), &quot;te&quot;)
+    assert_equals(node.substringData(0, 3), &quot;tes&quot;)
+    assert_equals(node.substringData(0, 4), &quot;test&quot;)
+  }, type + &quot;.substringData() with in-bounds count&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    assert_equals(node.substringData(0, 5), &quot;test&quot;)
+    assert_equals(node.substringData(2, 20), &quot;st&quot;)
+  }, type + &quot;.substringData() with large count&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    assert_equals(node.substringData(2, 0x100000000 + 1), &quot;s&quot;)
+  }, type + &quot;.substringData() with very large count&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    assert_equals(node.substringData(0, -1), &quot;test&quot;)
+    assert_equals(node.substringData(0, -0x100000000 + 2), &quot;te&quot;)
+  }, type + &quot;.substringData() with negative count&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.data = &quot;This is the character data test, other 資料,更多文字&quot;
+
+    assert_equals(node.substringData(12, 4), &quot;char&quot;)
+    assert_equals(node.substringData(39, 2), &quot;資料&quot;)
+  }, type + &quot;.substringData() with non-ASCII data&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.data = &quot;🌠 test 🌠 TEST&quot;
+
+    assert_equals(node.substringData(5, 8), &quot;st 🌠 TE&quot;)  // Counting UTF-16 code units
+  }, type + &quot;.substringData() with non-BMP data&quot;)
+}
+
+testNode(function() { return document.createTextNode(&quot;test&quot;) }, &quot;Text&quot;)
+testNode(function() { return document.createComment(&quot;test&quot;) }, &quot;Comment&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDatasurrogatesexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-surrogates-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-surrogates-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-surrogates-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+
+PASS Text.substringData() splitting surrogate pairs 
+PASS Text.replaceData() splitting and creating surrogate pairs 
+PASS Text.deleteData() splitting and creating surrogate pairs 
+PASS Text.insertData() splitting and creating surrogate pairs 
+PASS Comment.substringData() splitting surrogate pairs 
+PASS Comment.replaceData() splitting and creating surrogate pairs 
+PASS Comment.deleteData() splitting and creating surrogate pairs 
+PASS Comment.insertData() splitting and creating surrogate pairs 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCharacterDatasurrogateshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-surrogates.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-surrogates.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/CharacterData-surrogates.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,74 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Splitting and joining surrogate pairs in CharacterData methods&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-characterdata-substringdata&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-characterdata-replacedata&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-characterdata-insertdata&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-characterdata-deletedata&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-characterdata-data&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+function testNode(create, type) {
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.data = &quot;🌠 test 🌠 TEST&quot;
+
+    assert_equals(node.substringData(1, 8), &quot;\uDF20 test \uD83C&quot;)
+  }, type + &quot;.substringData() splitting surrogate pairs&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.data = &quot;🌠 test 🌠 TEST&quot;
+
+    node.replaceData(1, 4, &quot;--&quot;);
+    assert_equals(node.data, &quot;\uD83C--st 🌠 TEST&quot;);
+
+    node.replaceData(1, 2, &quot;\uDF1F &quot;);
+    assert_equals(node.data, &quot;🌟 st 🌠 TEST&quot;);
+
+    node.replaceData(5, 2, &quot;---&quot;);
+    assert_equals(node.data, &quot;🌟 st---\uDF20 TEST&quot;);
+
+    node.replaceData(6, 2, &quot; \uD83D&quot;);
+    assert_equals(node.data, &quot;🌟 st- 🜠 TEST&quot;);
+  }, type + &quot;.replaceData() splitting and creating surrogate pairs&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.data = &quot;🌠 test 🌠 TEST&quot;
+
+    node.deleteData(1, 4);
+    assert_equals(node.data, &quot;\uD83Cst 🌠 TEST&quot;);
+
+    node.deleteData(1, 4);
+    assert_equals(node.data, &quot;🌠 TEST&quot;);
+  }, type + &quot;.deleteData() splitting and creating surrogate pairs&quot;)
+
+  test(function() {
+    var node = create()
+    assert_equals(node.data, &quot;test&quot;)
+
+    node.data = &quot;🌠 test 🌠 TEST&quot;
+
+    node.insertData(1, &quot;--&quot;);
+    assert_equals(node.data, &quot;\uD83C--\uDF20 test 🌠 TEST&quot;);
+
+    node.insertData(1, &quot;\uDF1F &quot;);
+    assert_equals(node.data, &quot;🌟 --\uDF20 test 🌠 TEST&quot;);
+
+    node.insertData(5, &quot; \uD83D&quot;);
+    assert_equals(node.data, &quot;🌟 -- 🜠 test 🌠 TEST&quot;);
+  }, type + &quot;.insertData() splitting and creating surrogate pairs&quot;)
+}
+
+testNode(function() { return document.createTextNode(&quot;test&quot;) }, &quot;Text&quot;)
+testNode(function() { return document.createComment(&quot;test&quot;) }, &quot;Comment&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesChildNodeafterexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesChildNodeafterexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ChildNode-after-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/ChildNode-after-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ChildNode-after-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ChildNode-after-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+
+PASS Comment.after() without any argument. 
+PASS Comment.after() with null as an argument. 
+PASS Comment.after() with undefined as an argument. 
+PASS Comment.after() with the empty string as an argument. 
+PASS Comment.after() with only text as an argument. 
+PASS Comment.after() with only one element as an argument. 
+PASS Comment.after() with one element and text as arguments. 
+PASS Comment.after() with context object itself as the argument. 
+PASS Comment.after() with context object itself and node as the arguments, switching positions. 
+PASS Comment.after() with all siblings of child as arguments. 
+PASS Comment.before() with some siblings of child as arguments; no changes in tree; viable sibling is first child. 
+PASS Comment.after() with some siblings of child as arguments; no changes in tree. 
+PASS Comment.after() when pre-insert behaves like append. 
+PASS Comment.after() with one sibling of child and text as arguments. 
+PASS Comment.after() on a child without any parent. 
+PASS Element.after() without any argument. 
+PASS Element.after() with null as an argument. 
+PASS Element.after() with undefined as an argument. 
+PASS Element.after() with the empty string as an argument. 
+PASS Element.after() with only text as an argument. 
+PASS Element.after() with only one element as an argument. 
+PASS Element.after() with one element and text as arguments. 
+PASS Element.after() with context object itself as the argument. 
+PASS Element.after() with context object itself and node as the arguments, switching positions. 
+PASS Element.after() with all siblings of child as arguments. 
+PASS Element.before() with some siblings of child as arguments; no changes in tree; viable sibling is first child. 
+PASS Element.after() with some siblings of child as arguments; no changes in tree. 
+PASS Element.after() when pre-insert behaves like append. 
+PASS Element.after() with one sibling of child and text as arguments. 
+PASS Element.after() on a child without any parent. 
+PASS Text.after() without any argument. 
+PASS Text.after() with null as an argument. 
+PASS Text.after() with undefined as an argument. 
+PASS Text.after() with the empty string as an argument. 
+PASS Text.after() with only text as an argument. 
+PASS Text.after() with only one element as an argument. 
+PASS Text.after() with one element and text as arguments. 
+PASS Text.after() with context object itself as the argument. 
+PASS Text.after() with context object itself and node as the arguments, switching positions. 
+PASS Text.after() with all siblings of child as arguments. 
+PASS Text.before() with some siblings of child as arguments; no changes in tree; viable sibling is first child. 
+PASS Text.after() with some siblings of child as arguments; no changes in tree. 
+PASS Text.after() when pre-insert behaves like append. 
+PASS Text.after() with one sibling of child and text as arguments. 
+PASS Text.after() on a child without any parent. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesChildNodeafterhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesChildNodeafterhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ChildNode-after.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/ChildNode-after.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ChildNode-after.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ChildNode-after.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,166 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;ChildNode.after&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-childnode-after&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+function test_after(child, nodeName, innerHTML) {
+
+    test(function() {
+        var parent = document.createElement('div');
+        parent.appendChild(child);
+        child.after();
+        assert_equals(parent.innerHTML, innerHTML);
+    }, nodeName + '.after() without any argument.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        parent.appendChild(child);
+        child.after(null);
+        var expected = innerHTML + 'null';
+        assert_equals(parent.innerHTML, expected);
+    }, nodeName + '.after() with null as an argument.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        parent.appendChild(child);
+        child.after(undefined);
+        var expected = innerHTML + 'undefined';
+        assert_equals(parent.innerHTML, expected);
+    }, nodeName + '.after() with undefined as an argument.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        parent.appendChild(child);
+        child.after('');
+        assert_equals(parent.lastChild.data, '');
+    }, nodeName + '.after() with the empty string as an argument.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        parent.appendChild(child);
+        child.after('text');
+        var expected = innerHTML + 'text';
+        assert_equals(parent.innerHTML, expected);
+    }, nodeName + '.after() with only text as an argument.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        var x = document.createElement('x');
+        parent.appendChild(child);
+        child.after(x);
+        var expected = innerHTML + '&lt;x&gt;&lt;/x&gt;';
+        assert_equals(parent.innerHTML, expected);
+    }, nodeName + '.after() with only one element as an argument.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        var x = document.createElement('x');
+        parent.appendChild(child);
+        child.after(x, 'text');
+        var expected = innerHTML + '&lt;x&gt;&lt;/x&gt;text';
+        assert_equals(parent.innerHTML, expected);
+    }, nodeName + '.after() with one element and text as arguments.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        parent.appendChild(child);
+        child.after('text', child);
+        var expected = 'text' + innerHTML;
+        assert_equals(parent.innerHTML, expected);
+    }, nodeName + '.after() with context object itself as the argument.');
+
+    test(function() {
+        var parent = document.createElement('div')
+        var x = document.createElement('x');
+        parent.appendChild(x);
+        parent.appendChild(child);
+        child.after(child, x);
+        var expected = innerHTML + '&lt;x&gt;&lt;/x&gt;';
+        assert_equals(parent.innerHTML, expected);
+    }, nodeName + '.after() with context object itself and node as the arguments, switching positions.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        var x = document.createElement('x');
+        var y = document.createElement('y');
+        var z = document.createElement('z');
+        parent.appendChild(y);
+        parent.appendChild(child);
+        parent.appendChild(x);
+        child.after(x, y, z);
+        var expected = innerHTML + '&lt;x&gt;&lt;/x&gt;&lt;y&gt;&lt;/y&gt;&lt;z&gt;&lt;/z&gt;';
+        assert_equals(parent.innerHTML, expected);
+    }, nodeName + '.after() with all siblings of child as arguments.');
+
+    test(function() {
+        var parent = document.createElement('div')
+        var x = document.createElement('x');
+        var y = document.createElement('y');
+        var z = document.createElement('z');
+        parent.appendChild(child);
+        parent.appendChild(x);
+        parent.appendChild(y);
+        parent.appendChild(z);
+        child.after(x, y);
+        var expected = innerHTML + '&lt;x&gt;&lt;/x&gt;&lt;y&gt;&lt;/y&gt;&lt;z&gt;&lt;/z&gt;';
+        assert_equals(parent.innerHTML, expected);
+    }, nodeName + '.before() with some siblings of child as arguments; no changes in tree; viable sibling is first child.');
+
+    test(function() {
+        var parent = document.createElement('div')
+        var v = document.createElement('v');
+        var x = document.createElement('x');
+        var y = document.createElement('y');
+        var z = document.createElement('z');
+        parent.appendChild(child);
+        parent.appendChild(v);
+        parent.appendChild(x);
+        parent.appendChild(y);
+        parent.appendChild(z);
+        child.after(v, x);
+        var expected = innerHTML + '&lt;v&gt;&lt;/v&gt;&lt;x&gt;&lt;/x&gt;&lt;y&gt;&lt;/y&gt;&lt;z&gt;&lt;/z&gt;';
+        assert_equals(parent.innerHTML, expected);
+    }, nodeName + '.after() with some siblings of child as arguments; no changes in tree.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        var x = document.createElement('x');
+        var y = document.createElement('y');
+        parent.appendChild(child);
+        parent.appendChild(x);
+        parent.appendChild(y);
+        child.after(y, x);
+        var expected = innerHTML + '&lt;y&gt;&lt;/y&gt;&lt;x&gt;&lt;/x&gt;';
+        assert_equals(parent.innerHTML, expected);
+    }, nodeName + '.after() when pre-insert behaves like append.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        var x = document.createElement('x');
+        var y = document.createElement('y');
+        parent.appendChild(child);
+        parent.appendChild(x);
+        parent.appendChild(document.createTextNode('1'));
+        parent.appendChild(y);
+        child.after(x, '2');
+        var expected = innerHTML + '&lt;x&gt;&lt;/x&gt;21&lt;y&gt;&lt;/y&gt;';
+        assert_equals(parent.innerHTML, expected);
+    }, nodeName + '.after() with one sibling of child and text as arguments.');
+
+    test(function() {
+        var x = document.createElement('x');
+        var y = document.createElement('y');
+        x.after(y);
+        assert_equals(x.nextSibling, null);
+    }, nodeName + '.after() on a child without any parent.');
+}
+
+test_after(document.createComment('test'), 'Comment', '&lt;!--test--&gt;');
+test_after(document.createElement('test'), 'Element', '&lt;test&gt;&lt;/test&gt;');
+test_after(document.createTextNode('test'), 'Text', 'test');
+
+&lt;/script&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesChildNodebeforeexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesChildNodebeforeexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ChildNode-before-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/ChildNode-before-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ChildNode-before-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ChildNode-before-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+
+PASS Comment.before() without any argument. 
+PASS Comment.before() with null as an argument. 
+PASS Comment.before() with undefined as an argument. 
+PASS Comment.before() with the empty string as an argument. 
+PASS Comment.before() with only text as an argument. 
+PASS Comment.before() with only one element as an argument. 
+PASS Comment.before() with one element and text as arguments. 
+PASS Comment.before() with context object itself as the argument. 
+PASS Comment.before() with context object itself and node as the arguments, switching positions. 
+PASS Comment.before() with all siblings of child as arguments. 
+PASS Comment.before() with some siblings of child as arguments; no changes in tree; viable sibling is first child. 
+PASS Comment.before() with some siblings of child as arguments; no changes in tree. 
+PASS Comment.before() when pre-insert behaves like prepend. 
+PASS Comment.before() with one sibling of child and text as arguments. 
+PASS Comment.before() on a child without any parent. 
+PASS Element.before() without any argument. 
+PASS Element.before() with null as an argument. 
+PASS Element.before() with undefined as an argument. 
+PASS Element.before() with the empty string as an argument. 
+PASS Element.before() with only text as an argument. 
+PASS Element.before() with only one element as an argument. 
+PASS Element.before() with one element and text as arguments. 
+PASS Element.before() with context object itself as the argument. 
+PASS Element.before() with context object itself and node as the arguments, switching positions. 
+PASS Element.before() with all siblings of child as arguments. 
+PASS Element.before() with some siblings of child as arguments; no changes in tree; viable sibling is first child. 
+PASS Element.before() with some siblings of child as arguments; no changes in tree. 
+PASS Element.before() when pre-insert behaves like prepend. 
+PASS Element.before() with one sibling of child and text as arguments. 
+PASS Element.before() on a child without any parent. 
+PASS Text.before() without any argument. 
+PASS Text.before() with null as an argument. 
+PASS Text.before() with undefined as an argument. 
+PASS Text.before() with the empty string as an argument. 
+PASS Text.before() with only text as an argument. 
+PASS Text.before() with only one element as an argument. 
+PASS Text.before() with one element and text as arguments. 
+PASS Text.before() with context object itself as the argument. 
+PASS Text.before() with context object itself and node as the arguments, switching positions. 
+PASS Text.before() with all siblings of child as arguments. 
+PASS Text.before() with some siblings of child as arguments; no changes in tree; viable sibling is first child. 
+PASS Text.before() with some siblings of child as arguments; no changes in tree. 
+PASS Text.before() when pre-insert behaves like prepend. 
+PASS Text.before() with one sibling of child and text as arguments. 
+PASS Text.before() on a child without any parent. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesChildNodebeforehtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesChildNodebeforehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ChildNode-before.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/ChildNode-before.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ChildNode-before.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ChildNode-before.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,166 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;ChildNode.before&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-childnode-before&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+function test_before(child, nodeName, innerHTML) {
+
+    test(function() {
+        var parent = document.createElement('div');
+        parent.appendChild(child);
+        child.before();
+        assert_equals(parent.innerHTML, innerHTML);
+    }, nodeName + '.before() without any argument.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        parent.appendChild(child);
+        child.before(null);
+        var expected = 'null' + innerHTML;
+        assert_equals(parent.innerHTML, expected);
+    }, nodeName + '.before() with null as an argument.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        parent.appendChild(child);
+        child.before(undefined);
+        var expected = 'undefined' + innerHTML;
+        assert_equals(parent.innerHTML, expected);
+    }, nodeName + '.before() with undefined as an argument.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        parent.appendChild(child);
+        child.before('');
+        assert_equals(parent.firstChild.data, '');
+    }, nodeName + '.before() with the empty string as an argument.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        parent.appendChild(child);
+        child.before('text');
+        var expected = 'text' + innerHTML;
+        assert_equals(parent.innerHTML, expected);
+    }, nodeName + '.before() with only text as an argument.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        var x = document.createElement('x');
+        parent.appendChild(child);
+        child.before(x);
+        var expected = '&lt;x&gt;&lt;/x&gt;' + innerHTML;
+        assert_equals(parent.innerHTML, expected);
+    }, nodeName + '.before() with only one element as an argument.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        var x = document.createElement('x');
+        parent.appendChild(child);
+        child.before(x, 'text');
+        var expected = '&lt;x&gt;&lt;/x&gt;text' + innerHTML;
+        assert_equals(parent.innerHTML, expected);
+    }, nodeName + '.before() with one element and text as arguments.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        parent.appendChild(child);
+        child.before('text', child);
+        var expected = 'text' + innerHTML;
+        assert_equals(parent.innerHTML, expected);
+    }, nodeName + '.before() with context object itself as the argument.');
+
+    test(function() {
+        var parent = document.createElement('div')
+        var x = document.createElement('x');
+        parent.appendChild(child);
+        parent.appendChild(x);
+        child.before(x, child);
+        var expected = '&lt;x&gt;&lt;/x&gt;' + innerHTML;
+        assert_equals(parent.innerHTML, expected);
+    }, nodeName + '.before() with context object itself and node as the arguments, switching positions.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        var x = document.createElement('x');
+        var y = document.createElement('y');
+        var z = document.createElement('z');
+        parent.appendChild(y);
+        parent.appendChild(child);
+        parent.appendChild(x);
+        child.before(x, y, z);
+        var expected = '&lt;x&gt;&lt;/x&gt;&lt;y&gt;&lt;/y&gt;&lt;z&gt;&lt;/z&gt;' + innerHTML;
+        assert_equals(parent.innerHTML, expected);
+    }, nodeName + '.before() with all siblings of child as arguments.');
+
+    test(function() {
+        var parent = document.createElement('div')
+        var x = document.createElement('x');
+        var y = document.createElement('y');
+        var z = document.createElement('z');
+        parent.appendChild(x);
+        parent.appendChild(y);
+        parent.appendChild(z);
+        parent.appendChild(child);
+        child.before(y, z);
+        var expected = '&lt;x&gt;&lt;/x&gt;&lt;y&gt;&lt;/y&gt;&lt;z&gt;&lt;/z&gt;' + innerHTML;
+        assert_equals(parent.innerHTML, expected);
+    }, nodeName + '.before() with some siblings of child as arguments; no changes in tree; viable sibling is first child.');
+
+    test(function() {
+        var parent = document.createElement('div')
+        var v = document.createElement('v');
+        var x = document.createElement('x');
+        var y = document.createElement('y');
+        var z = document.createElement('z');
+        parent.appendChild(v);
+        parent.appendChild(x);
+        parent.appendChild(y);
+        parent.appendChild(z);
+        parent.appendChild(child);
+        child.before(y, z);
+        var expected = '&lt;v&gt;&lt;/v&gt;&lt;x&gt;&lt;/x&gt;&lt;y&gt;&lt;/y&gt;&lt;z&gt;&lt;/z&gt;' + innerHTML;
+        assert_equals(parent.innerHTML, expected);
+    }, nodeName + '.before() with some siblings of child as arguments; no changes in tree.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        var x = document.createElement('x');
+        var y = document.createElement('y');
+        parent.appendChild(x);
+        parent.appendChild(y);
+        parent.appendChild(child);
+        child.before(y, x);
+        var expected = '&lt;y&gt;&lt;/y&gt;&lt;x&gt;&lt;/x&gt;' + innerHTML;
+        assert_equals(parent.innerHTML, expected);
+    }, nodeName + '.before() when pre-insert behaves like prepend.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        var x = document.createElement('x');
+        parent.appendChild(x);
+        parent.appendChild(document.createTextNode('1'));
+        var y = document.createElement('y');
+        parent.appendChild(y);
+        parent.appendChild(child);
+        child.before(x, '2');
+        var expected = '1&lt;y&gt;&lt;/y&gt;&lt;x&gt;&lt;/x&gt;2' + innerHTML;
+        assert_equals(parent.innerHTML, expected);
+    }, nodeName + '.before() with one sibling of child and text as arguments.');
+
+    test(function() {
+        var x = document.createElement('x');
+        var y = document.createElement('y');
+        x.before(y);
+        assert_equals(x.previousSibling, null);
+    }, nodeName + '.before() on a child without any parent.');
+}
+
+test_before(document.createComment('test'), 'Comment', '&lt;!--test--&gt;');
+test_before(document.createElement('test'), 'Element', '&lt;test&gt;&lt;/test&gt;');
+test_before(document.createTextNode('test'), 'Text', 'test');
+
+&lt;/script&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesChildNoderemovejsfromrev189470trunkLayoutTestshttptestsw3cdomnodesChildNoderemovejs"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ChildNode-remove.js (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/ChildNode-remove.js) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ChildNode-remove.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ChildNode-remove.js        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+function testRemove(node, parent, type) {
+  test(function() {
+    assert_true(&quot;remove&quot; in node);
+    assert_equals(typeof node.remove, &quot;function&quot;);
+    assert_equals(node.remove.length, 0);
+  }, type + &quot; should support remove()&quot;);
+  test(function() {
+    assert_equals(node.parentNode, null, &quot;Node should not have a parent&quot;);
+    assert_equals(node.remove(), undefined);
+    assert_equals(node.parentNode, null, &quot;Removed new node should not have a parent&quot;);
+  }, &quot;remove() should work if &quot; + type + &quot; doesn't have a parent&quot;);
+  test(function() {
+    assert_equals(node.parentNode, null, &quot;Node should not have a parent&quot;);
+    parent.appendChild(node);
+    assert_equals(node.parentNode, parent, &quot;Appended node should have a parent&quot;);
+    assert_equals(node.remove(), undefined);
+    assert_equals(node.parentNode, null, &quot;Removed node should not have a parent&quot;);
+    assert_array_equals(parent.childNodes, [], &quot;Parent should not have children&quot;);
+  }, &quot;remove() should work if &quot; + type + &quot; does have a parent&quot;);
+  test(function() {
+    assert_equals(node.parentNode, null, &quot;Node should not have a parent&quot;);
+    var before = parent.appendChild(document.createComment(&quot;before&quot;));
+    parent.appendChild(node);
+    var after = parent.appendChild(document.createComment(&quot;after&quot;));
+    assert_equals(node.parentNode, parent, &quot;Appended node should have a parent&quot;);
+    assert_equals(node.remove(), undefined);
+    assert_equals(node.parentNode, null, &quot;Removed node should not have a parent&quot;);
+    assert_array_equals(parent.childNodes, [before, after], &quot;Parent should have two children left&quot;);
+  }, &quot;remove() should work if &quot; + type + &quot; does have a parent and siblings&quot;);
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesChildNodereplaceWithexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesChildNodereplaceWithexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ChildNode-replaceWith-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/ChildNode-replaceWith-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ChildNode-replaceWith-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ChildNode-replaceWith-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+
+FAIL Comment.replaceWith() without any argument. assert_equals: expected &quot;&quot; but got &quot;&lt;!--test--&gt;&quot;
+PASS Comment.replaceWith() with null as an argument. 
+PASS Comment.replaceWith() with undefined as an argument. 
+PASS Comment.replaceWith() with empty string as an argument. 
+PASS Comment.replaceWith() with only text as an argument. 
+PASS Comment.replaceWith() with only one element as an argument. 
+PASS Comment.replaceWith() with sibling of child as arguments. 
+PASS Comment.replaceWith() with one sibling of child and text as arguments. 
+PASS Comment.replaceWith() with one sibling of child and child itself as arguments. 
+PASS Comment.replaceWith() with one element and text as arguments. 
+PASS Comment.replaceWith() on a parentless child with two elements as arguments. 
+FAIL Element.replaceWith() without any argument. assert_equals: expected &quot;&quot; but got &quot;&lt;test&gt;&lt;/test&gt;&quot;
+PASS Element.replaceWith() with null as an argument. 
+PASS Element.replaceWith() with undefined as an argument. 
+PASS Element.replaceWith() with empty string as an argument. 
+PASS Element.replaceWith() with only text as an argument. 
+PASS Element.replaceWith() with only one element as an argument. 
+PASS Element.replaceWith() with sibling of child as arguments. 
+PASS Element.replaceWith() with one sibling of child and text as arguments. 
+PASS Element.replaceWith() with one sibling of child and child itself as arguments. 
+PASS Element.replaceWith() with one element and text as arguments. 
+PASS Element.replaceWith() on a parentless child with two elements as arguments. 
+FAIL Text.replaceWith() without any argument. assert_equals: expected &quot;&quot; but got &quot;test&quot;
+PASS Text.replaceWith() with null as an argument. 
+PASS Text.replaceWith() with undefined as an argument. 
+PASS Text.replaceWith() with empty string as an argument. 
+PASS Text.replaceWith() with only text as an argument. 
+PASS Text.replaceWith() with only one element as an argument. 
+PASS Text.replaceWith() with sibling of child as arguments. 
+PASS Text.replaceWith() with one sibling of child and text as arguments. 
+PASS Text.replaceWith() with one sibling of child and child itself as arguments. 
+PASS Text.replaceWith() with one element and text as arguments. 
+PASS Text.replaceWith() on a parentless child with two elements as arguments. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesChildNodereplaceWithhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesChildNodereplaceWithhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ChildNode-replaceWith.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/ChildNode-replaceWith.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ChildNode-replaceWith.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ChildNode-replaceWith.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,110 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;ChildNode.replaceWith&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-childnode-replaceWith&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+function test_replaceWith(child, nodeName, innerHTML) {
+
+    test(function() {
+        var parent = document.createElement('div');
+        parent.appendChild(child);
+        child.replaceWith();
+        assert_equals(parent.innerHTML, '');
+    }, nodeName + '.replaceWith() without any argument.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        parent.appendChild(child);
+        child.replaceWith(null);
+        assert_equals(parent.innerHTML, 'null');
+    }, nodeName + '.replaceWith() with null as an argument.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        parent.appendChild(child);
+        child.replaceWith(undefined);
+        assert_equals(parent.innerHTML, 'undefined');
+    }, nodeName + '.replaceWith() with undefined as an argument.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        parent.appendChild(child);
+        child.replaceWith('');
+        assert_equals(parent.innerHTML, '');
+    }, nodeName + '.replaceWith() with empty string as an argument.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        parent.appendChild(child);
+        child.replaceWith('text');
+        assert_equals(parent.innerHTML, 'text');
+    }, nodeName + '.replaceWith() with only text as an argument.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        var x = document.createElement('x');
+        parent.appendChild(child);
+        child.replaceWith(x);
+        assert_equals(parent.innerHTML, '&lt;x&gt;&lt;/x&gt;');
+    }, nodeName + '.replaceWith() with only one element as an argument.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        var x = document.createElement('x');
+        var y = document.createElement('y');
+        var z = document.createElement('z');
+        parent.appendChild(y);
+        parent.appendChild(child);
+        parent.appendChild(x);
+        child.replaceWith(x, y, z);
+        assert_equals(parent.innerHTML, '&lt;x&gt;&lt;/x&gt;&lt;y&gt;&lt;/y&gt;&lt;z&gt;&lt;/z&gt;');
+    }, nodeName + '.replaceWith() with sibling of child as arguments.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        var x = document.createElement('x');
+        parent.appendChild(child);
+        parent.appendChild(x);
+        parent.appendChild(document.createTextNode('1'));
+        child.replaceWith(x, '2');
+        assert_equals(parent.innerHTML, '&lt;x&gt;&lt;/x&gt;21');
+    }, nodeName + '.replaceWith() with one sibling of child and text as arguments.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        var x = document.createElement('x');
+        parent.appendChild(child);
+        parent.appendChild(x);
+        parent.appendChild(document.createTextNode('text'));
+        child.replaceWith(x, child);
+        assert_equals(parent.innerHTML, '&lt;x&gt;&lt;/x&gt;' + innerHTML + 'text');
+    }, nodeName + '.replaceWith() with one sibling of child and child itself as arguments.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        var x = document.createElement('x');
+        parent.appendChild(child);
+        child.replaceWith(x, 'text');
+        assert_equals(parent.innerHTML, '&lt;x&gt;&lt;/x&gt;text');
+    }, nodeName + '.replaceWith() with one element and text as arguments.');
+
+    test(function() {
+        var parent = document.createElement('div');
+        var x = document.createElement('x');
+        var y = document.createElement('y');
+        parent.appendChild(x);
+        parent.appendChild(y);
+        child.replaceWith(x, y);
+        assert_equals(parent.innerHTML, '&lt;x&gt;&lt;/x&gt;&lt;y&gt;&lt;/y&gt;');
+    }, nodeName + '.replaceWith() on a parentless child with two elements as arguments.');
+}
+
+test_replaceWith(document.createComment('test'), 'Comment', '&lt;!--test--&gt;');
+test_replaceWith(document.createElement('test'), 'Element', '&lt;test&gt;&lt;/test&gt;');
+test_replaceWith(document.createTextNode('test'), 'Text', 'test');
+
+&lt;/script&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCommentTextconstructorjsfromrev189470trunkLayoutTestshttptestsw3cdomnodesCommentTextconstructorjs"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Comment-Text-constructor.js (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Comment-Text-constructor.js) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Comment-Text-constructor.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Comment-Text-constructor.js        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,77 @@
</span><ins>+function test_constructor(ctor) {
+  test(function() {
+    var object = new window[ctor]();
+    assert_equals(Object.getPrototypeOf(object),
+                  window[ctor].prototype, &quot;Prototype chain: &quot; + ctor);
+    assert_equals(Object.getPrototypeOf(Object.getPrototypeOf(object)),
+                  CharacterData.prototype, &quot;Prototype chain: CharacterData&quot;);
+    assert_equals(Object.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(object))),
+                  Node.prototype, &quot;Prototype chain: Node&quot;);
+  }, &quot;new &quot; + ctor + &quot;(): prototype chain&quot;);
+
+  test(function() {
+    var object = new window[ctor]();
+    assert_true(object instanceof Node, &quot;Should be a Node&quot;);
+    assert_true(object instanceof CharacterData, &quot;Should be a CharacterData&quot;);
+    assert_true(object instanceof window[ctor], &quot;Should be a &quot; + ctor);
+  }, &quot;new &quot; + ctor + &quot;(): instanceof&quot;);
+
+  test(function() {
+    var object = new window[ctor]();
+    assert_equals(object.data, &quot;&quot;);
+    assert_equals(object.nodeValue, &quot;&quot;);
+    assert_equals(object.ownerDocument, document);
+  }, &quot;new &quot; + ctor + &quot;(): no arguments&quot;);
+
+  var arguments = [
+    [undefined, &quot;&quot;],
+    [null, &quot;null&quot;],
+    [42, &quot;42&quot;],
+    [&quot;&quot;, &quot;&quot;],
+    [&quot;-&quot;, &quot;-&quot;],
+    [&quot;--&quot;, &quot;--&quot;],
+    [&quot;--&gt;&quot;, &quot;--&gt;&quot;],
+    [&quot;&lt;!--&quot;, &quot;&lt;!--&quot;],
+    [&quot;\u0000&quot;, &quot;\u0000&quot;],
+    [&quot;\u0000test&quot;, &quot;\u0000test&quot;],
+    [&quot;&amp;amp;&quot;, &quot;&amp;amp;&quot;],
+  ];
+
+  arguments.forEach(function(a) {
+    var argument = a[0], expected = a[1];
+    test(function() {
+      var object = new window[ctor](argument);
+      assert_equals(object.data, expected);
+      assert_equals(object.nodeValue, expected);
+      assert_equals(object.ownerDocument, document);
+    }, &quot;new &quot; + ctor + &quot;(): &quot; + format_value(argument));
+  });
+
+  test(function() {
+    var called = [];
+    var object = new window[ctor]({
+      toString: function() {
+        called.push(&quot;first&quot;);
+        return &quot;text&quot;;
+      }
+    }, {
+      toString: function() {
+        called.push(&quot;second&quot;);
+        assert_unreached(&quot;Should not look at the second argument.&quot;);
+      }
+    });
+    assert_equals(object.data, &quot;text&quot;);
+    assert_equals(object.nodeValue, &quot;text&quot;);
+    assert_equals(object.ownerDocument, document);
+    assert_array_equals(called, [&quot;first&quot;]);
+  }, &quot;new &quot; + ctor + &quot;(): two arguments&quot;)
+
+  async_test(&quot;new &quot; + ctor + &quot;() should get the correct ownerDocument across globals&quot;).step(function() {
+    var iframe = document.createElement(&quot;iframe&quot;);
+    iframe.onload = this.step_func_done(function() {
+      var object = new iframe.contentWindow[ctor]();
+      assert_equals(object.ownerDocument, iframe.contentDocument);
+    });
+    document.body.appendChild(iframe);
+  });
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCommentconstructorexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesCommentconstructorexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Comment-constructor-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Comment-constructor-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Comment-constructor-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Comment-constructor-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+
+
+PASS new Comment(): prototype chain 
+PASS new Comment(): instanceof 
+PASS new Comment(): no arguments 
+FAIL new Comment(): undefined assert_equals: expected &quot;&quot; but got &quot;undefined&quot;
+PASS new Comment(): null 
+PASS new Comment(): 42 
+PASS new Comment(): &quot;&quot; 
+PASS new Comment(): &quot;-&quot; 
+PASS new Comment(): &quot;--&quot; 
+PASS new Comment(): &quot;--&gt;&quot; 
+PASS new Comment(): &quot;&lt;!--&quot; 
+PASS new Comment(): &quot;\0&quot; 
+PASS new Comment(): &quot;\0test&quot; 
+PASS new Comment(): &quot;&amp;amp;&quot; 
+PASS new Comment(): two arguments 
+PASS new Comment() should get the correct ownerDocument across globals 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesCommentconstructorhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesCommentconstructorhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Comment-constructor.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Comment-constructor.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Comment-constructor.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Comment-constructor.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Comment constructor&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-comment&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;Comment-Text-constructor.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+test_constructor(&quot;Comment&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDOMImplementationcreateDocumentexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesDOMImplementationcreateDocumentexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocument-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/DOMImplementation-createDocument-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocument-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocument-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,261 @@
</span><ins>+
+PASS DOMImplementation.createDocument(namespace, qualifiedName, doctype) 
+PASS createDocument test 0: null,undefined,null,null 
+FAIL createDocument test 0: metadata for null,undefined,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 1: null,&quot;foo&quot;,null,null 
+FAIL createDocument test 1: metadata for null,&quot;foo&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 2: null,&quot;1foo&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 3: null,&quot;f1oo&quot;,null,null 
+FAIL createDocument test 3: metadata for null,&quot;f1oo&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 4: null,&quot;foo1&quot;,null,null 
+FAIL createDocument test 4: metadata for null,&quot;foo1&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 5: null,&quot;1foo&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 6: null,&quot;̀foo&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 7: null,&quot;}foo&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 8: null,&quot;f}oo&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 9: null,&quot;foo}&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 10: null,&quot;\x{FFFF}foo&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 11: null,&quot;f\x{FFFF}oo&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 12: null,&quot;foo\x{FFFF}&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 13: null,&quot;&lt;foo&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 14: null,&quot;foo&gt;&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 15: null,&quot;&lt;foo&gt;&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 16: null,&quot;f&lt;oo&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 17: null,&quot;^^&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 18: null,&quot;:foo&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 19: null,&quot;f:oo&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 20: null,&quot;foo:&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 21: null,&quot;:&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 22: null,&quot;xml&quot;,null,null 
+FAIL createDocument test 22: metadata for null,&quot;xml&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 23: null,&quot;xmlns&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 24: null,&quot;xmlfoo&quot;,null,null 
+FAIL createDocument test 24: metadata for null,&quot;xmlfoo&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 25: null,&quot;xml:foo&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 26: null,&quot;xmlns:foo&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 27: null,&quot;xmlfoo:bar&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 28: null,&quot;null:xml&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 29: &quot;&quot;,&quot;:foo&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 30: &quot;&quot;,&quot;f:oo&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 31: &quot;&quot;,&quot;foo:&quot;,null,&quot;NAMESPACE_ERR&quot; 
+FAIL createDocument test 32: undefined,undefined,null,null assert_equals: expected (object) null but got (string) &quot;undefined&quot;
+FAIL createDocument test 32: metadata for undefined,undefined,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+FAIL createDocument test 33: undefined,&quot;foo&quot;,null,null assert_equals: expected (object) null but got (string) &quot;undefined&quot;
+FAIL createDocument test 33: metadata for undefined,&quot;foo&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 34: undefined,&quot;1foo&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+FAIL createDocument test 35: undefined,&quot;f1oo&quot;,null,null assert_equals: expected (object) null but got (string) &quot;undefined&quot;
+FAIL createDocument test 35: metadata for undefined,&quot;f1oo&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+FAIL createDocument test 36: undefined,&quot;foo1&quot;,null,null assert_equals: expected (object) null but got (string) &quot;undefined&quot;
+FAIL createDocument test 36: metadata for undefined,&quot;foo1&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 37: undefined,&quot;:foo&quot;,null,&quot;NAMESPACE_ERR&quot; 
+FAIL createDocument test 38: undefined,&quot;f:oo&quot;,null,&quot;NAMESPACE_ERR&quot; assert_throws: function &quot;function () { document.implementation.createDocument(name...&quot; did not throw
+PASS createDocument test 39: undefined,&quot;foo:&quot;,null,&quot;NAMESPACE_ERR&quot; 
+FAIL createDocument test 40: undefined,&quot;xml&quot;,null,null assert_equals: expected (object) null but got (string) &quot;undefined&quot;
+FAIL createDocument test 40: metadata for undefined,&quot;xml&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 41: undefined,&quot;xmlns&quot;,null,&quot;NAMESPACE_ERR&quot; 
+FAIL createDocument test 42: undefined,&quot;xmlfoo&quot;,null,null assert_equals: expected (object) null but got (string) &quot;undefined&quot;
+FAIL createDocument test 42: metadata for undefined,&quot;xmlfoo&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 43: undefined,&quot;xml:foo&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 44: undefined,&quot;xmlns:foo&quot;,null,&quot;NAMESPACE_ERR&quot; 
+FAIL createDocument test 45: undefined,&quot;xmlfoo:bar&quot;,null,&quot;NAMESPACE_ERR&quot; assert_throws: function &quot;function () { document.implementation.createDocument(name...&quot; did not throw
+PASS createDocument test 46: &quot;http://example.com/&quot;,&quot;foo&quot;,null,null 
+FAIL createDocument test 46: metadata for &quot;http://example.com/&quot;,&quot;foo&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 47: &quot;http://example.com/&quot;,&quot;1foo&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 48: &quot;http://example.com/&quot;,&quot;f1oo&quot;,null,null 
+FAIL createDocument test 48: metadata for &quot;http://example.com/&quot;,&quot;f1oo&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 49: &quot;http://example.com/&quot;,&quot;foo1&quot;,null,null 
+FAIL createDocument test 49: metadata for &quot;http://example.com/&quot;,&quot;foo1&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 50: &quot;http://example.com/&quot;,&quot;:foo&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 51: &quot;http://example.com/&quot;,&quot;f:oo&quot;,null,null 
+FAIL createDocument test 51: metadata for &quot;http://example.com/&quot;,&quot;f:oo&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 52: &quot;http://example.com/&quot;,&quot;foo:&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 53: &quot;http://example.com/&quot;,&quot;_:_&quot;,null,null 
+FAIL createDocument test 53: metadata for &quot;http://example.com/&quot;,&quot;_:_&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 54: &quot;http://example.com/&quot;,&quot;_:h0&quot;,null,null 
+FAIL createDocument test 54: metadata for &quot;http://example.com/&quot;,&quot;_:h0&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 55: &quot;http://example.com/&quot;,&quot;_:test&quot;,null,null 
+FAIL createDocument test 55: metadata for &quot;http://example.com/&quot;,&quot;_:test&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 56: &quot;http://example.com/&quot;,&quot;l_:_&quot;,null,null 
+FAIL createDocument test 56: metadata for &quot;http://example.com/&quot;,&quot;l_:_&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 57: &quot;http://example.com/&quot;,&quot;ns:_0&quot;,null,null 
+FAIL createDocument test 57: metadata for &quot;http://example.com/&quot;,&quot;ns:_0&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 58: &quot;http://example.com/&quot;,&quot;ns:a0&quot;,null,null 
+FAIL createDocument test 58: metadata for &quot;http://example.com/&quot;,&quot;ns:a0&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 59: &quot;http://example.com/&quot;,&quot;ns0:test&quot;,null,null 
+FAIL createDocument test 59: metadata for &quot;http://example.com/&quot;,&quot;ns0:test&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 60: &quot;http://example.com/&quot;,&quot;a.b:c&quot;,null,null 
+FAIL createDocument test 60: metadata for &quot;http://example.com/&quot;,&quot;a.b:c&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 61: &quot;http://example.com/&quot;,&quot;a-b:c&quot;,null,null 
+FAIL createDocument test 61: metadata for &quot;http://example.com/&quot;,&quot;a-b:c&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 62: &quot;http://example.com/&quot;,&quot;a-b:c&quot;,null,null 
+FAIL createDocument test 62: metadata for &quot;http://example.com/&quot;,&quot;a-b:c&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 63: &quot;http://example.com/&quot;,&quot;xml&quot;,null,null 
+FAIL createDocument test 63: metadata for &quot;http://example.com/&quot;,&quot;xml&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 64: &quot;http://example.com/&quot;,&quot;xmlns&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 65: &quot;http://example.com/&quot;,&quot;XMLNS&quot;,null,null 
+FAIL createDocument test 65: metadata for &quot;http://example.com/&quot;,&quot;XMLNS&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 66: &quot;http://example.com/&quot;,&quot;xmlfoo&quot;,null,null 
+FAIL createDocument test 66: metadata for &quot;http://example.com/&quot;,&quot;xmlfoo&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 67: &quot;http://example.com/&quot;,&quot;xml:foo&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 68: &quot;http://example.com/&quot;,&quot;XML:foo&quot;,null,null 
+FAIL createDocument test 68: metadata for &quot;http://example.com/&quot;,&quot;XML:foo&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 69: &quot;http://example.com/&quot;,&quot;xmlns:foo&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 70: &quot;http://example.com/&quot;,&quot;XMLNS:foo&quot;,null,null 
+FAIL createDocument test 70: metadata for &quot;http://example.com/&quot;,&quot;XMLNS:foo&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 71: &quot;http://example.com/&quot;,&quot;xmlfoo:bar&quot;,null,null 
+FAIL createDocument test 71: metadata for &quot;http://example.com/&quot;,&quot;xmlfoo:bar&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 72: &quot;http://example.com/&quot;,&quot;prefix::local&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 73: &quot;http://example.com/&quot;,&quot;namespaceURI:{&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 74: &quot;http://example.com/&quot;,&quot;namespaceURI:}&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 75: &quot;http://example.com/&quot;,&quot;namespaceURI:~&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 76: &quot;http://example.com/&quot;,&quot;namespaceURI:'&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 77: &quot;http://example.com/&quot;,&quot;namespaceURI:!&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 78: &quot;http://example.com/&quot;,&quot;namespaceURI:@&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 79: &quot;http://example.com/&quot;,&quot;namespaceURI:#&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 80: &quot;http://example.com/&quot;,&quot;namespaceURI:$&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 81: &quot;http://example.com/&quot;,&quot;namespaceURI:%&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 82: &quot;http://example.com/&quot;,&quot;namespaceURI:^&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 83: &quot;http://example.com/&quot;,&quot;namespaceURI:&amp;&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 84: &quot;http://example.com/&quot;,&quot;namespaceURI:*&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 85: &quot;http://example.com/&quot;,&quot;namespaceURI:(&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 86: &quot;http://example.com/&quot;,&quot;namespaceURI:)&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 87: &quot;http://example.com/&quot;,&quot;namespaceURI:+&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 88: &quot;http://example.com/&quot;,&quot;namespaceURI:=&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 89: &quot;http://example.com/&quot;,&quot;namespaceURI:[&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 90: &quot;http://example.com/&quot;,&quot;namespaceURI:]&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 91: &quot;http://example.com/&quot;,&quot;namespaceURI:\\&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 92: &quot;http://example.com/&quot;,&quot;namespaceURI:/&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 93: &quot;http://example.com/&quot;,&quot;namespaceURI:;&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 94: &quot;http://example.com/&quot;,&quot;namespaceURI:`&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 95: &quot;http://example.com/&quot;,&quot;namespaceURI:&lt;&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 96: &quot;http://example.com/&quot;,&quot;namespaceURI:&gt;&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 97: &quot;http://example.com/&quot;,&quot;namespaceURI:,&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 98: &quot;http://example.com/&quot;,&quot;namespaceURI:a &quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 99: &quot;http://example.com/&quot;,&quot;namespaceURI:\&quot;&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 100: &quot;/&quot;,&quot;foo&quot;,null,null 
+FAIL createDocument test 100: metadata for &quot;/&quot;,&quot;foo&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 101: &quot;/&quot;,&quot;1foo&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 102: &quot;/&quot;,&quot;f1oo&quot;,null,null 
+FAIL createDocument test 102: metadata for &quot;/&quot;,&quot;f1oo&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 103: &quot;/&quot;,&quot;foo1&quot;,null,null 
+FAIL createDocument test 103: metadata for &quot;/&quot;,&quot;foo1&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 104: &quot;/&quot;,&quot;:foo&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 105: &quot;/&quot;,&quot;f:oo&quot;,null,null 
+FAIL createDocument test 105: metadata for &quot;/&quot;,&quot;f:oo&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 106: &quot;/&quot;,&quot;foo:&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 107: &quot;/&quot;,&quot;xml&quot;,null,null 
+FAIL createDocument test 107: metadata for &quot;/&quot;,&quot;xml&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 108: &quot;/&quot;,&quot;xmlns&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 109: &quot;/&quot;,&quot;xmlfoo&quot;,null,null 
+FAIL createDocument test 109: metadata for &quot;/&quot;,&quot;xmlfoo&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 110: &quot;/&quot;,&quot;xml:foo&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 111: &quot;/&quot;,&quot;xmlns:foo&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 112: &quot;/&quot;,&quot;xmlfoo:bar&quot;,null,null 
+FAIL createDocument test 112: metadata for &quot;/&quot;,&quot;xmlfoo:bar&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 113: &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;foo&quot;,null,null 
+FAIL createDocument test 113: metadata for &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;foo&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 114: &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;1foo&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 115: &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;f1oo&quot;,null,null 
+FAIL createDocument test 115: metadata for &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;f1oo&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 116: &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;foo1&quot;,null,null 
+FAIL createDocument test 116: metadata for &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;foo1&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 117: &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;:foo&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 118: &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;f:oo&quot;,null,null 
+FAIL createDocument test 118: metadata for &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;f:oo&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 119: &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;foo:&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 120: &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;xml&quot;,null,null 
+FAIL createDocument test 120: metadata for &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;xml&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 121: &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;xmlns&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 122: &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;xmlfoo&quot;,null,null 
+FAIL createDocument test 122: metadata for &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;xmlfoo&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 123: &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;xml:foo&quot;,null,null 
+FAIL createDocument test 123: metadata for &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;xml:foo&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 124: &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;xmlns:foo&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 125: &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;xmlfoo:bar&quot;,null,null 
+FAIL createDocument test 125: metadata for &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;xmlfoo:bar&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 126: &quot;http://www.w3.org/XML/1998/namespaces&quot;,&quot;xml:foo&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 127: &quot;http://www.w3.org/xml/1998/namespace&quot;,&quot;xml:foo&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 128: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;foo&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 129: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;1foo&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 130: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;f1oo&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 131: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;foo1&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 132: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;:foo&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 133: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;f:oo&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 134: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;foo:&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 135: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;xml&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 136: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;xmlns&quot;,null,null 
+FAIL createDocument test 136: metadata for &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;xmlns&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 137: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;xmlfoo&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 138: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;xml:foo&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 139: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;xmlns:foo&quot;,null,null 
+FAIL createDocument test 139: metadata for &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;xmlns:foo&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 140: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;xmlfoo:bar&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 141: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;foo:xmlns&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 142: &quot;foo:&quot;,&quot;foo&quot;,null,null 
+FAIL createDocument test 142: metadata for &quot;foo:&quot;,&quot;foo&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 143: &quot;foo:&quot;,&quot;1foo&quot;,null,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createDocument test 144: &quot;foo:&quot;,&quot;f1oo&quot;,null,null 
+FAIL createDocument test 144: metadata for &quot;foo:&quot;,&quot;f1oo&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 145: &quot;foo:&quot;,&quot;foo1&quot;,null,null 
+FAIL createDocument test 145: metadata for &quot;foo:&quot;,&quot;foo1&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 146: &quot;foo:&quot;,&quot;:foo&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 147: &quot;foo:&quot;,&quot;f:oo&quot;,null,null 
+FAIL createDocument test 147: metadata for &quot;foo:&quot;,&quot;f:oo&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 148: &quot;foo:&quot;,&quot;foo:&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 149: &quot;foo:&quot;,&quot;xml&quot;,null,null 
+FAIL createDocument test 149: metadata for &quot;foo:&quot;,&quot;xml&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 150: &quot;foo:&quot;,&quot;xmlns&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 151: &quot;foo:&quot;,&quot;xmlfoo&quot;,null,null 
+FAIL createDocument test 151: metadata for &quot;foo:&quot;,&quot;xmlfoo&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 152: &quot;foo:&quot;,&quot;xml:foo&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 153: &quot;foo:&quot;,&quot;xmlns:foo&quot;,null,&quot;NAMESPACE_ERR&quot; 
+PASS createDocument test 154: &quot;foo:&quot;,&quot;xmlfoo:bar&quot;,null,null 
+FAIL createDocument test 154: metadata for &quot;foo:&quot;,&quot;xmlfoo:bar&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+FAIL createDocument test 155: null,null,false,object &quot;TypeError&quot; assert_throws: function &quot;function () { document.implementation.createDocument(name...&quot; did not throw
+PASS createDocument test 156: null,null,null,null 
+FAIL createDocument test 156: metadata for null,null,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 157: null,&quot;&quot;,null,null 
+FAIL createDocument test 157: metadata for null,&quot;&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 158: undefined,null,undefined,null 
+FAIL createDocument test 158: metadata for undefined,null,undefined assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+FAIL createDocument test 159: undefined,undefined,undefined,null assert_equals: expected (object) null but got (string) &quot;undefined&quot;
+FAIL createDocument test 159: metadata for undefined,undefined,undefined assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 160: undefined,&quot;&quot;,undefined,null 
+FAIL createDocument test 160: metadata for undefined,&quot;&quot;,undefined assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 161: &quot;http://example.com/&quot;,null,null,null 
+FAIL createDocument test 161: metadata for &quot;http://example.com/&quot;,null,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 162: &quot;http://example.com/&quot;,&quot;&quot;,null,null 
+FAIL createDocument test 162: metadata for &quot;http://example.com/&quot;,&quot;&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 163: &quot;/&quot;,null,null,null 
+FAIL createDocument test 163: metadata for &quot;/&quot;,null,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 164: &quot;/&quot;,&quot;&quot;,null,null 
+FAIL createDocument test 164: metadata for &quot;/&quot;,&quot;&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 165: &quot;http://www.w3.org/XML/1998/namespace&quot;,null,null,null 
+FAIL createDocument test 165: metadata for &quot;http://www.w3.org/XML/1998/namespace&quot;,null,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 166: &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;&quot;,null,null 
+FAIL createDocument test 166: metadata for &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 167: &quot;http://www.w3.org/2000/xmlns/&quot;,null,null,null 
+FAIL createDocument test 167: metadata for &quot;http://www.w3.org/2000/xmlns/&quot;,null,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 168: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;&quot;,null,null 
+FAIL createDocument test 168: metadata for &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 169: &quot;foo:&quot;,null,null,null 
+FAIL createDocument test 169: metadata for &quot;foo:&quot;,null,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 170: &quot;foo:&quot;,&quot;&quot;,null,null 
+FAIL createDocument test 170: metadata for &quot;foo:&quot;,&quot;&quot;,null assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 171: null,null,DocumentType node,null 
+FAIL createDocument test 171: metadata for null,null,DocumentType node assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 172: null,null,DocumentType node,null 
+FAIL createDocument test 172: metadata for null,null,DocumentType node assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 173: null,null,DocumentType node,null 
+FAIL createDocument test 173: metadata for null,null,DocumentType node assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 174: null,null,DocumentType node,null 
+FAIL createDocument test 174: metadata for null,null,DocumentType node assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 175: null,null,DocumentType node,null 
+FAIL createDocument test 175: metadata for null,null,DocumentType node assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 176: null,&quot;foo&quot;,DocumentType node,null 
+FAIL createDocument test 176: metadata for null,&quot;foo&quot;,DocumentType node assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 177: &quot;foo&quot;,null,DocumentType node,null 
+FAIL createDocument test 177: metadata for &quot;foo&quot;,null,DocumentType node assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS createDocument test 178: &quot;foo&quot;,&quot;bar&quot;,DocumentType node,null 
+FAIL createDocument test 178: metadata for &quot;foo&quot;,&quot;bar&quot;,DocumentType node assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDOMImplementationcreateDocumenthtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesDOMImplementationcreateDocumenthtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocument.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/DOMImplementation-createDocument.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocument.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocument.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,116 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;DOMImplementation.createDocument(namespace, qualifiedName, doctype)&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-domimplementation-createdocument&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-document-createelementns&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-node-nodetype&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-document-documentelement&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-document-doctype&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;Document-createElementNS.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  var tests = createElementNS_tests.map(function(t) {
+    return [t[0], t[1], null, t[2]]
+  }).concat([
+    /* Arrays with four elements:
+     *   the namespace argument
+     *   the qualifiedName argument
+     *   the doctype argument
+     *   the expected exception, or null if none
+     */
+    [null, null, false, new TypeError()],
+    [null, null, null, null],
+    [null, &quot;&quot;, null, null],
+    [undefined, null, undefined, null],
+    [undefined, undefined, undefined, null],
+    [undefined, &quot;&quot;, undefined, null],
+    [&quot;http://example.com/&quot;, null, null, null],
+    [&quot;http://example.com/&quot;, &quot;&quot;, null, null],
+    [&quot;/&quot;, null, null, null],
+    [&quot;/&quot;, &quot;&quot;, null, null],
+    [&quot;http://www.w3.org/XML/1998/namespace&quot;, null, null, null],
+    [&quot;http://www.w3.org/XML/1998/namespace&quot;, &quot;&quot;, null, null],
+    [&quot;http://www.w3.org/2000/xmlns/&quot;, null, null, null],
+    [&quot;http://www.w3.org/2000/xmlns/&quot;, &quot;&quot;, null, null],
+    [&quot;foo:&quot;, null, null, null],
+    [&quot;foo:&quot;, &quot;&quot;, null, null],
+    [null, null, document.implementation.createDocumentType(&quot;foo&quot;, &quot;&quot;, &quot;&quot;), null],
+    [null, null, document.doctype, null], // This causes a horrible WebKit bug (now fixed in trunk).
+    [null, null, function() {
+        var foo = document.implementation.createDocumentType(&quot;foo&quot;, &quot;&quot;, &quot;&quot;);
+        document.implementation.createDocument(null, null, foo);
+        return foo;
+     }(), null], // DOCTYPE already associated with a document.
+    [null, null, function() {
+        var bar = document.implementation.createDocument(null, null, null);
+        return bar.implementation.createDocumentType(&quot;bar&quot;, &quot;&quot;, &quot;&quot;);
+     }(), null], // DOCTYPE created by a different implementation.
+    [null, null, function() {
+        var bar = document.implementation.createDocument(null, null, null);
+        var magic = bar.implementation.createDocumentType(&quot;bar&quot;, &quot;&quot;, &quot;&quot;);
+        bar.implementation.createDocument(null, null, magic);
+        return magic;
+     }(), null], // DOCTYPE created by a different implementation and already associated with a document.
+    [null, &quot;foo&quot;, document.implementation.createDocumentType(&quot;foo&quot;, &quot;&quot;, &quot;&quot;), null],
+    [&quot;foo&quot;, null, document.implementation.createDocumentType(&quot;foo&quot;, &quot;&quot;, &quot;&quot;), null],
+    [&quot;foo&quot;, &quot;bar&quot;, document.implementation.createDocumentType(&quot;foo&quot;, &quot;&quot;, &quot;&quot;), null],
+  ])
+
+  tests.forEach(function(t, i) {
+    var namespace = t[0], qualifiedName = t[1], doctype = t[2], expected = t[3]
+    test(function() {
+      if (expected != null) {
+        assert_throws(expected, function() { document.implementation.createDocument(namespace, qualifiedName, doctype) })
+      } else {
+        var doc = document.implementation.createDocument(namespace, qualifiedName, doctype)
+        assert_equals(doc.nodeType, Node.DOCUMENT_NODE)
+        assert_equals(doc.nodeType, doc.DOCUMENT_NODE)
+        assert_equals(doc.nodeName, &quot;#document&quot;)
+        assert_equals(doc.nodeValue, null)
+        var omitRootElement = qualifiedName === null || String(qualifiedName) === &quot;&quot;
+        if (omitRootElement) {
+          assert_equals(doc.documentElement, null)
+        } else {
+          var element = doc.documentElement
+          assert_not_equals(element, null)
+          assert_equals(element.nodeType, Node.ELEMENT_NODE)
+          assert_equals(element.ownerDocument, doc)
+          var qualified = String(qualifiedName), names = []
+          if (qualified.indexOf(&quot;:&quot;) &gt;= 0) {
+            names = qualified.split(&quot;:&quot;, 2)
+          } else {
+            names = [null, qualified]
+          }
+          assert_equals(element.prefix, names[0])
+          assert_equals(element.localName, names[1])
+          assert_equals(element.namespaceURI, namespace === undefined ? null : namespace)
+        }
+        if (!doctype) {
+          assert_equals(doc.doctype, null)
+        } else {
+          assert_equals(doc.doctype, doctype)
+          assert_equals(doc.doctype.ownerDocument, doc)
+        }
+        assert_equals(doc.childNodes.length, !omitRootElement + !!doctype)
+      }
+    }, &quot;createDocument test &quot; + i + &quot;: &quot; + t.map(function(el) { return format_value(el) }))
+
+    if (expected === null) {
+      test(function() {
+        var doc = document.implementation.createDocument(namespace, qualifiedName, doctype)
+        assert_equals(doc.compatMode, &quot;CSS1Compat&quot;)
+        assert_equals(doc.characterSet, &quot;UTF-8&quot;)
+        assert_equals(doc.inputEncoding, &quot;UTF-8&quot;)
+        assert_equals(doc.contentType, &quot;application/xml&quot;)
+        assert_equals(doc.URL, &quot;about:blank&quot;)
+        assert_equals(doc.documentURI, &quot;about:blank&quot;)
+        assert_equals(doc.createElement(&quot;DIV&quot;).localName, &quot;DIV&quot;);
+      }, &quot;createDocument test &quot; + i + &quot;: metadata for &quot; +
+      [namespace, qualifiedName, doctype].map(function(el) { return format_value(el) }))
+    }
+  })
+})
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDOMImplementationcreateDocumentTypeexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesDOMImplementationcreateDocumentTypeexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocumentType-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/DOMImplementation-createDocumentType-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocumentType-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocumentType-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,84 @@
</span><ins>+
+PASS DOMImplementation.createDocumentType(qualifiedName, publicId, systemId) 
+PASS createDocumentType(&quot;&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;test:root&quot;, &quot;1234&quot;, &quot;&quot;) should work 
+PASS createDocumentType(&quot;test:root&quot;, &quot;1234&quot;, &quot;test&quot;) should work 
+PASS createDocumentType(&quot;test:root&quot;, &quot;test&quot;, &quot;&quot;) should work 
+PASS createDocumentType(&quot;test:root&quot;, &quot;test&quot;, &quot;test&quot;) should work 
+PASS createDocumentType(&quot;_:_&quot;, &quot;&quot;, &quot;&quot;) should work 
+PASS createDocumentType(&quot;_:h0&quot;, &quot;&quot;, &quot;&quot;) should work 
+PASS createDocumentType(&quot;_:test&quot;, &quot;&quot;, &quot;&quot;) should work 
+PASS createDocumentType(&quot;_:_.&quot;, &quot;&quot;, &quot;&quot;) should work 
+PASS createDocumentType(&quot;_:a-&quot;, &quot;&quot;, &quot;&quot;) should work 
+PASS createDocumentType(&quot;l_:_&quot;, &quot;&quot;, &quot;&quot;) should work 
+PASS createDocumentType(&quot;ns:_0&quot;, &quot;&quot;, &quot;&quot;) should work 
+PASS createDocumentType(&quot;ns:a0&quot;, &quot;&quot;, &quot;&quot;) should work 
+PASS createDocumentType(&quot;ns0:test&quot;, &quot;&quot;, &quot;&quot;) should work 
+PASS createDocumentType(&quot;ns:EEE.&quot;, &quot;&quot;, &quot;&quot;) should work 
+PASS createDocumentType(&quot;ns:_-&quot;, &quot;&quot;, &quot;&quot;) should work 
+PASS createDocumentType(&quot;a.b:c&quot;, &quot;&quot;, &quot;&quot;) should work 
+PASS createDocumentType(&quot;a-b:c.j&quot;, &quot;&quot;, &quot;&quot;) should work 
+PASS createDocumentType(&quot;a-b:c&quot;, &quot;&quot;, &quot;&quot;) should work 
+PASS createDocumentType(&quot;foo&quot;, &quot;&quot;, &quot;&quot;) should work 
+PASS createDocumentType(&quot;1foo&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;foo1&quot;, &quot;&quot;, &quot;&quot;) should work 
+PASS createDocumentType(&quot;f1oo&quot;, &quot;&quot;, &quot;&quot;) should work 
+PASS createDocumentType(&quot;@foo&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;foo@&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;f@oo&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;edi:{&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;edi:}&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;edi:~&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;edi:'&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;edi:!&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;edi:@&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;edi:#&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;edi:$&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;edi:%&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;edi:^&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;edi:&amp;&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;edi:*&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;edi:(&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;edi:)&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;edi:+&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;edi:=&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;edi:[&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;edi:]&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;edi:\\&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;edi:/&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;edi:;&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;edi:`&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;edi:&lt;&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;edi:&gt;&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;edi:,&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;edi:a &quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;edi:\&quot;&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;{&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;}&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;'&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;~&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;`&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;@&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;#&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;$&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;%&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;^&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;&amp;&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;*&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;(&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;)&quot;, &quot;&quot;, &quot;&quot;) should throw INVALID_CHARACTER_ERR 
+PASS createDocumentType(&quot;f:oo&quot;, &quot;&quot;, &quot;&quot;) should work 
+PASS createDocumentType(&quot;:foo&quot;, &quot;&quot;, &quot;&quot;) should throw NAMESPACE_ERR 
+PASS createDocumentType(&quot;foo:&quot;, &quot;&quot;, &quot;&quot;) should throw NAMESPACE_ERR 
+PASS createDocumentType(&quot;prefix::local&quot;, &quot;&quot;, &quot;&quot;) should throw NAMESPACE_ERR 
+PASS createDocumentType(&quot;foo&quot;, &quot;foo&quot;, &quot;&quot;) should work 
+PASS createDocumentType(&quot;foo&quot;, &quot;&quot;, &quot;foo&quot;) should work 
+PASS createDocumentType(&quot;foo&quot;, &quot;f'oo&quot;, &quot;&quot;) should work 
+PASS createDocumentType(&quot;foo&quot;, &quot;&quot;, &quot;f'oo&quot;) should work 
+PASS createDocumentType(&quot;foo&quot;, &quot;f\&quot;oo&quot;, &quot;&quot;) should work 
+PASS createDocumentType(&quot;foo&quot;, &quot;&quot;, &quot;f\&quot;oo&quot;) should work 
+PASS createDocumentType(&quot;foo&quot;, &quot;f'o\&quot;o&quot;, &quot;&quot;) should work 
+PASS createDocumentType(&quot;foo&quot;, &quot;&quot;, &quot;f'o\&quot;o&quot;) should work 
+PASS createDocumentType(&quot;foo&quot;, &quot;foo&gt;&quot;, &quot;&quot;) should work 
+PASS createDocumentType(&quot;foo&quot;, &quot;&quot;, &quot;foo&gt;&quot;) should work 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDOMImplementationcreateDocumentTypehtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesDOMImplementationcreateDocumentTypehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocumentType.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/DOMImplementation-createDocumentType.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocumentType.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createDocumentType.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,123 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;DOMImplementation.createDocumentType(qualifiedName, publicId, systemId)&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-domimplementation-createdocumenttype&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-documenttype-name&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-documenttype-publicid&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-documenttype-systemid&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-node-ownerdocument&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  var tests = [
+    [&quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;test:root&quot;, &quot;1234&quot;, &quot;&quot;, null],
+    [&quot;test:root&quot;, &quot;1234&quot;, &quot;test&quot;, null],
+    [&quot;test:root&quot;, &quot;test&quot;, &quot;&quot;, null],
+    [&quot;test:root&quot;, &quot;test&quot;, &quot;test&quot;, null],
+    [&quot;_:_&quot;, &quot;&quot;, &quot;&quot;, null],
+    [&quot;_:h0&quot;, &quot;&quot;, &quot;&quot;, null],
+    [&quot;_:test&quot;, &quot;&quot;, &quot;&quot;, null],
+    [&quot;_:_.&quot;, &quot;&quot;, &quot;&quot;, null],
+    [&quot;_:a-&quot;, &quot;&quot;, &quot;&quot;, null],
+    [&quot;l_:_&quot;, &quot;&quot;, &quot;&quot;, null],
+    [&quot;ns:_0&quot;, &quot;&quot;, &quot;&quot;, null],
+    [&quot;ns:a0&quot;, &quot;&quot;, &quot;&quot;, null],
+    [&quot;ns0:test&quot;, &quot;&quot;, &quot;&quot;, null],
+    [&quot;ns:EEE.&quot;, &quot;&quot;, &quot;&quot;, null],
+    [&quot;ns:_-&quot;, &quot;&quot;, &quot;&quot;, null],
+    [&quot;a.b:c&quot;, &quot;&quot;, &quot;&quot;, null],
+    [&quot;a-b:c.j&quot;, &quot;&quot;, &quot;&quot;, null],
+    [&quot;a-b:c&quot;, &quot;&quot;, &quot;&quot;, null],
+    [&quot;foo&quot;, &quot;&quot;, &quot;&quot;, null],
+    [&quot;1foo&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;foo1&quot;, &quot;&quot;, &quot;&quot;, null],
+    [&quot;f1oo&quot;, &quot;&quot;, &quot;&quot;, null],
+    [&quot;@foo&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;foo@&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;f@oo&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;edi:{&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;edi:}&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;edi:~&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;edi:'&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;edi:!&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;edi:@&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;edi:#&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;edi:$&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;edi:%&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;edi:^&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;edi:&amp;&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;edi:*&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;edi:(&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;edi:)&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;edi:+&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;edi:=&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;edi:[&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;edi:]&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;edi:\\&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;edi:/&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;edi:;&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;edi:`&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;edi:&lt;&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;edi:&gt;&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;edi:,&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;edi:a &quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;edi:\&quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;{&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;}&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;'&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;~&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;`&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;@&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;#&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;$&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;%&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;^&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;&amp;&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;*&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;(&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;)&quot;, &quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;f:oo&quot;, &quot;&quot;, &quot;&quot;, null],
+    [&quot;:foo&quot;, &quot;&quot;, &quot;&quot;, &quot;NAMESPACE_ERR&quot;],
+    [&quot;foo:&quot;, &quot;&quot;, &quot;&quot;, &quot;NAMESPACE_ERR&quot;],
+    [&quot;prefix::local&quot;, &quot;&quot;, &quot;&quot;, &quot;NAMESPACE_ERR&quot;],
+    [&quot;foo&quot;, &quot;foo&quot;, &quot;&quot;, null],
+    [&quot;foo&quot;, &quot;&quot;, &quot;foo&quot;, null],
+    [&quot;foo&quot;, &quot;f'oo&quot;, &quot;&quot;, null],
+    [&quot;foo&quot;, &quot;&quot;, &quot;f'oo&quot;, null],
+    [&quot;foo&quot;, 'f&quot;oo', &quot;&quot;, null],
+    [&quot;foo&quot;, &quot;&quot;, 'f&quot;oo', null],
+    [&quot;foo&quot;, &quot;f'o\&quot;o&quot;, &quot;&quot;, null],
+    [&quot;foo&quot;, &quot;&quot;, &quot;f'o\&quot;o&quot;, null],
+    [&quot;foo&quot;, &quot;foo&gt;&quot;, &quot;&quot;, null],
+    [&quot;foo&quot;, &quot;&quot;, &quot;foo&gt;&quot;, null]
+  ]
+
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  var doTest = function(aDocument, aQualifiedName, aPublicId, aSystemId) {
+    var doctype = aDocument.implementation.createDocumentType(aQualifiedName, aPublicId, aSystemId);
+    assert_equals(doctype.name, aQualifiedName, &quot;name&quot;)
+    assert_equals(doctype.nodeName, aQualifiedName, &quot;nodeName&quot;)
+    assert_equals(doctype.publicId, aPublicId, &quot;publicId&quot;)
+    assert_equals(doctype.systemId, aSystemId, &quot;systemId&quot;)
+    assert_equals(doctype.ownerDocument, aDocument, &quot;ownerDocument&quot;)
+    assert_equals(doctype.nodeValue, null, &quot;nodeValue&quot;)
+  }
+  tests.forEach(function(t) {
+    var qualifiedName = t[0], publicId = t[1], systemId = t[2], expected = t[3]
+    test(function() {
+      if (expected) {
+        assert_throws(expected, function() {
+          document.implementation.createDocumentType(qualifiedName, publicId, systemId)
+        })
+      } else {
+        doTest(document, qualifiedName, publicId, systemId);
+        doTest(doc, qualifiedName, publicId, systemId);
+      }
+    }, &quot;createDocumentType(&quot; + format_value(qualifiedName) + &quot;, &quot; + format_value(publicId) + &quot;, &quot; + format_value(systemId) + &quot;) should &quot; +
+       (expected ? &quot;throw &quot; + expected : &quot;work&quot;));
+  });
+})
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDOMImplementationcreateHTMLDocumentexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesDOMImplementationcreateHTMLDocumentexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createHTMLDocument-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/DOMImplementation-createHTMLDocument-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createHTMLDocument-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createHTMLDocument-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+
+FAIL createHTMLDocument test 0: &quot;&quot;,&quot;&quot;,&quot;&quot; assert_equals: expected (string) &quot;&quot; but got (object) null
+FAIL createHTMLDocument test 1: null,&quot;null&quot;,&quot;null&quot; assert_equals: expected (string) &quot;&quot; but got (object) null
+FAIL createHTMLDocument test 2: undefined,undefined,&quot;&quot; assert_equals: expected (string) &quot;&quot; but got (object) null
+FAIL createHTMLDocument test 3: &quot;foo  bar baz&quot;,&quot;foo  bar baz&quot;,&quot;foo bar baz&quot; assert_equals: expected (string) &quot;&quot; but got (object) null
+FAIL createHTMLDocument test 4: &quot;foo\t\tbar baz&quot;,&quot;foo\t\tbar baz&quot;,&quot;foo bar baz&quot; assert_equals: expected (string) &quot;&quot; but got (object) null
+FAIL createHTMLDocument test 5: &quot;foo\n\nbar baz&quot;,&quot;foo\n\nbar baz&quot;,&quot;foo bar baz&quot; assert_equals: expected (string) &quot;&quot; but got (object) null
+FAIL createHTMLDocument test 6: &quot;foo\f\fbar baz&quot;,&quot;foo\f\fbar baz&quot;,&quot;foo bar baz&quot; assert_equals: expected (string) &quot;&quot; but got (object) null
+FAIL createHTMLDocument test 7: &quot;foo\r\rbar baz&quot;,&quot;foo\r\rbar baz&quot;,&quot;foo bar baz&quot; assert_equals: expected (string) &quot;&quot; but got (object) null
+FAIL Missing title argument assert_equals: expected (string) &quot;&quot; but got (object) null
+FAIL createHTMLDocument(): metadata assert_equals: expected &quot;about:blank&quot; but got &quot;&quot;
+PASS createHTMLDocument(): URL parsing 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDOMImplementationcreateHTMLDocumenthtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesDOMImplementationcreateHTMLDocumenthtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createHTMLDocument.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/DOMImplementation-createHTMLDocument.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createHTMLDocument.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createHTMLDocument.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,84 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=windows-1252&gt;
+&lt;!-- Using windows-1252 to ensure that DOMImplementation.createHTMLDocument()
+     doesn't inherit utf-8 from the parent document. --&gt;
+&lt;title&gt;DOMImplementation.createHTMLDocument&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-domimplementation-createhtmldocument&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-documenttype-name&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-documenttype-publicid&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-documenttype-systemid&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-document-documentelement&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;DOMImplementation-createHTMLDocument.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+createHTMLDocuments(function(doc, expectedtitle, normalizedtitle) {
+  assert_true(doc instanceof Document, &quot;Should be a Document&quot;)
+  assert_true(doc instanceof Node, &quot;Should be a Node&quot;)
+  assert_equals(doc.childNodes.length, 2,
+                &quot;Document should have two child nodes&quot;)
+
+  var doctype = doc.doctype
+  assert_true(doctype instanceof DocumentType,
+              &quot;Doctype should be a DocumentType&quot;)
+  assert_true(doctype instanceof Node, &quot;Doctype should be a Node&quot;)
+  assert_equals(doctype.name, &quot;html&quot;)
+  assert_equals(doctype.publicId, &quot;&quot;)
+  assert_equals(doctype.systemId, &quot;&quot;)
+
+  var documentElement = doc.documentElement
+  assert_true(documentElement instanceof HTMLHtmlElement,
+              &quot;Document element should be a HTMLHtmlElement&quot;)
+  assert_equals(documentElement.childNodes.length, 2,
+                &quot;Document element should have two child nodes&quot;)
+  assert_equals(documentElement.localName, &quot;html&quot;)
+  assert_equals(documentElement.tagName, &quot;HTML&quot;)
+
+  var head = documentElement.firstChild
+  assert_true(head instanceof HTMLHeadElement,
+              &quot;Head should be a HTMLHeadElement&quot;)
+  assert_equals(head.localName, &quot;head&quot;)
+  assert_equals(head.tagName, &quot;HEAD&quot;)
+
+  if (expectedtitle !== undefined) {
+    assert_equals(head.childNodes.length, 1)
+
+    var title = head.firstChild
+    assert_true(title instanceof HTMLTitleElement,
+                &quot;Title should be a HTMLTitleElement&quot;)
+    assert_equals(title.localName, &quot;title&quot;)
+    assert_equals(title.tagName, &quot;TITLE&quot;)
+    assert_equals(title.childNodes.length, 1)
+    assert_equals(title.firstChild.data, expectedtitle)
+  } else {
+    assert_equals(head.childNodes.length, 0)
+  }
+
+  var body = documentElement.lastChild
+  assert_true(body instanceof HTMLBodyElement,
+              &quot;Body should be a HTMLBodyElement&quot;)
+  assert_equals(body.localName, &quot;body&quot;)
+  assert_equals(body.tagName, &quot;BODY&quot;)
+  assert_equals(body.childNodes.length, 0)
+})
+
+test(function() {
+  var doc = document.implementation.createHTMLDocument(&quot;test&quot;);
+  assert_equals(doc.URL, &quot;about:blank&quot;);
+  assert_equals(doc.documentURI, &quot;about:blank&quot;);
+  assert_equals(doc.compatMode, &quot;CSS1Compat&quot;);
+  assert_equals(doc.characterSet, &quot;UTF-8&quot;);
+  assert_equals(doc.inputEncoding, &quot;UTF-8&quot;);
+  assert_equals(doc.contentType, &quot;text/html&quot;);
+  assert_equals(doc.createElement(&quot;DIV&quot;).localName, &quot;div&quot;);
+}, &quot;createHTMLDocument(): metadata&quot;)
+
+test(function() {
+  var doc = document.implementation.createHTMLDocument(&quot;test&quot;);
+  var a = doc.createElement(&quot;a&quot;);
+  // In UTF-8: 0xC3 0xA4
+  a.href = &quot;http://example.org/?\u00E4&quot;;
+  assert_equals(a.href, &quot;http://example.org/?%C3%A4&quot;);
+}, &quot;createHTMLDocument(): URL parsing&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDOMImplementationcreateHTMLDocumentjsfromrev189470trunkLayoutTestshttptestsw3cdomnodesDOMImplementationcreateHTMLDocumentjs"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createHTMLDocument.js (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/DOMImplementation-createHTMLDocument.js) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createHTMLDocument.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-createHTMLDocument.js        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+function createHTMLDocuments(checkDoc) {
+  var tests = [
+    [&quot;&quot;, &quot;&quot;, &quot;&quot;],
+    [null, &quot;null&quot;, &quot;null&quot;],
+    [undefined, undefined, &quot;&quot;],
+    [&quot;foo  bar baz&quot;, &quot;foo  bar baz&quot;, &quot;foo bar baz&quot;],
+    [&quot;foo\t\tbar baz&quot;, &quot;foo\t\tbar baz&quot;, &quot;foo bar baz&quot;],
+    [&quot;foo\n\nbar baz&quot;, &quot;foo\n\nbar baz&quot;, &quot;foo bar baz&quot;],
+    [&quot;foo\f\fbar baz&quot;, &quot;foo\f\fbar baz&quot;, &quot;foo bar baz&quot;],
+    [&quot;foo\r\rbar baz&quot;, &quot;foo\r\rbar baz&quot;, &quot;foo bar baz&quot;],
+  ]
+
+  tests.forEach(function(t, i) {
+    var title = t[0], expectedtitle = t[1], normalizedtitle = t[2]
+    test(function() {
+      var doc = document.implementation.createHTMLDocument(title);
+      checkDoc(doc, expectedtitle, normalizedtitle)
+    }, &quot;createHTMLDocument test &quot; + i + &quot;: &quot; + t.map(function(el) { return format_value(el) }))
+  })
+
+  test(function() {
+    var doc = document.implementation.createHTMLDocument();
+    checkDoc(doc, undefined, &quot;&quot;)
+  }, &quot;Missing title argument&quot;);
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDOMImplementationhasFeatureexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesDOMImplementationhasFeatureexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-hasFeature-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/DOMImplementation-hasFeature-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-hasFeature-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-hasFeature-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,126 @@
</span><ins>+
+PASS DOMImplementation.hasFeature(feature, version) 
+PASS hasFeature(&quot;Core&quot;, &quot;1.0&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;2.0&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;3.0&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;100.0&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;1.0&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;2.0&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;3.0&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;100.0&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;1&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;2&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;3&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;100&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;1&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;2&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;3&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;100&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;1.1&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;2.1&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;3.1&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;100.1&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;1.1&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;2.1&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;3.1&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;100.1&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;&quot;) 
+PASS hasFeature(&quot;core&quot;, &quot;&quot;) 
+PASS hasFeature(&quot;xml&quot;, &quot;&quot;) 
+PASS hasFeature(&quot;CoRe&quot;, &quot;&quot;) 
+PASS hasFeature(&quot;XmL&quot;, &quot;&quot;) 
+PASS hasFeature(&quot; Core&quot;, &quot;&quot;) 
+PASS hasFeature(&quot; XML&quot;, &quot;&quot;) 
+PASS hasFeature(&quot;Core &quot;, &quot;&quot;) 
+PASS hasFeature(&quot;XML &quot;, &quot;&quot;) 
+PASS hasFeature(&quot;Co re&quot;, &quot;&quot;) 
+PASS hasFeature(&quot;XM L&quot;, &quot;&quot;) 
+PASS hasFeature(&quot;aCore&quot;, &quot;&quot;) 
+PASS hasFeature(&quot;aXML&quot;, &quot;&quot;) 
+PASS hasFeature(&quot;Corea&quot;, &quot;&quot;) 
+PASS hasFeature(&quot;XMLa&quot;, &quot;&quot;) 
+PASS hasFeature(&quot;Coare&quot;, &quot;&quot;) 
+PASS hasFeature(&quot;XMaL&quot;, &quot;&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot; &quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot; &quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot; 1.0&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot; 2.0&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot; 3.0&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot; 100.0&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot; 1.0&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot; 2.0&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot; 3.0&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot; 100.0&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;1.0 &quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;2.0 &quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;3.0 &quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;100.0 &quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;1.0 &quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;2.0 &quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;3.0 &quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;100.0 &quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;1. 0&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;2. 0&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;3. 0&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;100. 0&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;1. 0&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;2. 0&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;3. 0&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;100. 0&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;a1.0&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;a2.0&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;a3.0&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;a100.0&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;a1.0&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;a2.0&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;a3.0&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;a100.0&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;1.0a&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;2.0a&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;3.0a&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;100.0a&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;1.0a&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;2.0a&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;3.0a&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;100.0a&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;1.a0&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;2.a0&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;3.a0&quot;) 
+PASS hasFeature(&quot;Core&quot;, &quot;100.a0&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;1.a0&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;2.a0&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;3.a0&quot;) 
+PASS hasFeature(&quot;XML&quot;, &quot;100.a0&quot;) 
+PASS hasFeature(&quot;Core&quot;, 1) 
+PASS hasFeature(&quot;Core&quot;, 2) 
+PASS hasFeature(&quot;Core&quot;, 3) 
+PASS hasFeature(&quot;Core&quot;, 100) 
+PASS hasFeature(&quot;XML&quot;, 1) 
+PASS hasFeature(&quot;XML&quot;, 2) 
+PASS hasFeature(&quot;XML&quot;, 3) 
+PASS hasFeature(&quot;XML&quot;, 100) 
+PASS hasFeature(&quot;Core&quot;, null) 
+PASS hasFeature(&quot;XML&quot;, null) 
+PASS hasFeature(&quot;core&quot;, null) 
+PASS hasFeature(&quot;xml&quot;, null) 
+PASS hasFeature(&quot;CoRe&quot;, null) 
+PASS hasFeature(&quot;XmL&quot;, null) 
+PASS hasFeature(&quot; Core&quot;, null) 
+PASS hasFeature(&quot; XML&quot;, null) 
+PASS hasFeature(&quot;Core &quot;, null) 
+PASS hasFeature(&quot;XML &quot;, null) 
+PASS hasFeature(&quot;Co re&quot;, null) 
+PASS hasFeature(&quot;XM L&quot;, null) 
+PASS hasFeature(&quot;aCore&quot;, null) 
+PASS hasFeature(&quot;aXML&quot;, null) 
+PASS hasFeature(&quot;Corea&quot;, null) 
+PASS hasFeature(&quot;XMLa&quot;, null) 
+PASS hasFeature(&quot;Coare&quot;, null) 
+PASS hasFeature(&quot;XMaL&quot;, null) 
+PASS hasFeature(&quot;Core&quot;, undefined) 
+PASS hasFeature(&quot;XML&quot;, undefined) 
+PASS hasFeature(&quot;This is filler text.&quot;, &quot;&quot;) 
+PASS hasFeature(null, &quot;&quot;) 
+PASS hasFeature(undefined, &quot;&quot;) 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDOMImplementationhasFeaturehtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesDOMImplementationhasFeaturehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-hasFeature.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/DOMImplementation-hasFeature.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-hasFeature.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DOMImplementation-hasFeature.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,141 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;DOMImplementation.hasFeature(feature, version)&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-domimplementation-hasfeature&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  var tests = [
+        [&quot;Core&quot;, &quot;1.0&quot;],
+        [&quot;Core&quot;, &quot;2.0&quot;],
+        [&quot;Core&quot;, &quot;3.0&quot;],
+        [&quot;Core&quot;, &quot;100.0&quot;],
+        [&quot;XML&quot;, &quot;1.0&quot;],
+        [&quot;XML&quot;, &quot;2.0&quot;],
+        [&quot;XML&quot;, &quot;3.0&quot;],
+        [&quot;XML&quot;, &quot;100.0&quot;],
+        [&quot;Core&quot;, &quot;1&quot;],
+        [&quot;Core&quot;, &quot;2&quot;],
+        [&quot;Core&quot;, &quot;3&quot;],
+        [&quot;Core&quot;, &quot;100&quot;],
+        [&quot;XML&quot;, &quot;1&quot;],
+        [&quot;XML&quot;, &quot;2&quot;],
+        [&quot;XML&quot;, &quot;3&quot;],
+        [&quot;XML&quot;, &quot;100&quot;],
+        [&quot;Core&quot;, &quot;1.1&quot;],
+        [&quot;Core&quot;, &quot;2.1&quot;],
+        [&quot;Core&quot;, &quot;3.1&quot;],
+        [&quot;Core&quot;, &quot;100.1&quot;],
+        [&quot;XML&quot;, &quot;1.1&quot;],
+        [&quot;XML&quot;, &quot;2.1&quot;],
+        [&quot;XML&quot;, &quot;3.1&quot;],
+        [&quot;XML&quot;, &quot;100.1&quot;],
+        [&quot;Core&quot;, &quot;&quot;],
+        [&quot;XML&quot;, &quot;&quot;],
+        [&quot;core&quot;, &quot;&quot;],
+        [&quot;xml&quot;, &quot;&quot;],
+        [&quot;CoRe&quot;, &quot;&quot;],
+        [&quot;XmL&quot;, &quot;&quot;],
+        [&quot; Core&quot;, &quot;&quot;],
+        [&quot; XML&quot;, &quot;&quot;],
+        [&quot;Core &quot;, &quot;&quot;],
+        [&quot;XML &quot;, &quot;&quot;],
+        [&quot;Co re&quot;, &quot;&quot;],
+        [&quot;XM L&quot;, &quot;&quot;],
+        [&quot;aCore&quot;, &quot;&quot;],
+        [&quot;aXML&quot;, &quot;&quot;],
+        [&quot;Corea&quot;, &quot;&quot;],
+        [&quot;XMLa&quot;, &quot;&quot;],
+        [&quot;Coare&quot;, &quot;&quot;],
+        [&quot;XMaL&quot;, &quot;&quot;],
+        [&quot;Core&quot;, &quot; &quot;],
+        [&quot;XML&quot;, &quot; &quot;],
+        [&quot;Core&quot;, &quot; 1.0&quot;],
+        [&quot;Core&quot;, &quot; 2.0&quot;],
+        [&quot;Core&quot;, &quot; 3.0&quot;],
+        [&quot;Core&quot;, &quot; 100.0&quot;],
+        [&quot;XML&quot;, &quot; 1.0&quot;],
+        [&quot;XML&quot;, &quot; 2.0&quot;],
+        [&quot;XML&quot;, &quot; 3.0&quot;],
+        [&quot;XML&quot;, &quot; 100.0&quot;],
+        [&quot;Core&quot;, &quot;1.0 &quot;],
+        [&quot;Core&quot;, &quot;2.0 &quot;],
+        [&quot;Core&quot;, &quot;3.0 &quot;],
+        [&quot;Core&quot;, &quot;100.0 &quot;],
+        [&quot;XML&quot;, &quot;1.0 &quot;],
+        [&quot;XML&quot;, &quot;2.0 &quot;],
+        [&quot;XML&quot;, &quot;3.0 &quot;],
+        [&quot;XML&quot;, &quot;100.0 &quot;],
+        [&quot;Core&quot;, &quot;1. 0&quot;],
+        [&quot;Core&quot;, &quot;2. 0&quot;],
+        [&quot;Core&quot;, &quot;3. 0&quot;],
+        [&quot;Core&quot;, &quot;100. 0&quot;],
+        [&quot;XML&quot;, &quot;1. 0&quot;],
+        [&quot;XML&quot;, &quot;2. 0&quot;],
+        [&quot;XML&quot;, &quot;3. 0&quot;],
+        [&quot;XML&quot;, &quot;100. 0&quot;],
+        [&quot;Core&quot;, &quot;a1.0&quot;],
+        [&quot;Core&quot;, &quot;a2.0&quot;],
+        [&quot;Core&quot;, &quot;a3.0&quot;],
+        [&quot;Core&quot;, &quot;a100.0&quot;],
+        [&quot;XML&quot;, &quot;a1.0&quot;],
+        [&quot;XML&quot;, &quot;a2.0&quot;],
+        [&quot;XML&quot;, &quot;a3.0&quot;],
+        [&quot;XML&quot;, &quot;a100.0&quot;],
+        [&quot;Core&quot;, &quot;1.0a&quot;],
+        [&quot;Core&quot;, &quot;2.0a&quot;],
+        [&quot;Core&quot;, &quot;3.0a&quot;],
+        [&quot;Core&quot;, &quot;100.0a&quot;],
+        [&quot;XML&quot;, &quot;1.0a&quot;],
+        [&quot;XML&quot;, &quot;2.0a&quot;],
+        [&quot;XML&quot;, &quot;3.0a&quot;],
+        [&quot;XML&quot;, &quot;100.0a&quot;],
+        [&quot;Core&quot;, &quot;1.a0&quot;],
+        [&quot;Core&quot;, &quot;2.a0&quot;],
+        [&quot;Core&quot;, &quot;3.a0&quot;],
+        [&quot;Core&quot;, &quot;100.a0&quot;],
+        [&quot;XML&quot;, &quot;1.a0&quot;],
+        [&quot;XML&quot;, &quot;2.a0&quot;],
+        [&quot;XML&quot;, &quot;3.a0&quot;],
+        [&quot;XML&quot;, &quot;100.a0&quot;],
+        [&quot;Core&quot;, 1],
+        [&quot;Core&quot;, 2],
+        [&quot;Core&quot;, 3],
+        [&quot;Core&quot;, 100],
+        [&quot;XML&quot;, 1],
+        [&quot;XML&quot;, 2],
+        [&quot;XML&quot;, 3],
+        [&quot;XML&quot;, 100],
+        [&quot;Core&quot;, null],
+        [&quot;XML&quot;, null],
+        [&quot;core&quot;, null],
+        [&quot;xml&quot;, null],
+        [&quot;CoRe&quot;, null],
+        [&quot;XmL&quot;, null],
+        [&quot; Core&quot;, null],
+        [&quot; XML&quot;, null],
+        [&quot;Core &quot;, null],
+        [&quot;XML &quot;, null],
+        [&quot;Co re&quot;, null],
+        [&quot;XM L&quot;, null],
+        [&quot;aCore&quot;, null],
+        [&quot;aXML&quot;, null],
+        [&quot;Corea&quot;, null],
+        [&quot;XMLa&quot;, null],
+        [&quot;Coare&quot;, null],
+        [&quot;XMaL&quot;, null],
+        [&quot;Core&quot;, undefined],
+        [&quot;XML&quot;, undefined],
+        [&quot;This is filler text.&quot;, &quot;&quot;],
+        [null, &quot;&quot;],
+        [undefined, &quot;&quot;],
+      ];
+  tests.forEach(function(data) {
+    test(function() {
+      assert_equals(document.implementation.hasFeature(data[0], data[1]), true)
+    }, &quot;hasFeature(&quot; + format_value(data[0]) + &quot;, &quot; + format_value(data[1]) + &quot;)&quot;)
+  })
+})
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentElementgetElementsByTagNamejsfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentElementgetElementsByTagNamejs"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-Element-getElementsByTagName.js (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-Element-getElementsByTagName.js) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-Element-getElementsByTagName.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-Element-getElementsByTagName.js        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,166 @@
</span><ins>+function test_getElementsByTagName(context, element) {
+  // TODO: getElementsByTagName(&quot;*&quot;)
+  test(function() {
+    assert_false(context.getElementsByTagName(&quot;html&quot;) instanceof NodeList,
+                 &quot;Should not return a NodeList&quot;)
+    assert_true(context.getElementsByTagName(&quot;html&quot;) instanceof HTMLCollection,
+                &quot;Should return an HTMLCollection&quot;)
+  }, &quot;Interfaces&quot;)
+
+  test(function() {
+    var firstCollection = context.getElementsByTagName(&quot;html&quot;),
+        secondCollection = context.getElementsByTagName(&quot;html&quot;)
+    assert_true(firstCollection !== secondCollection ||
+                firstCollection === secondCollection)
+  }, &quot;Caching is allowed&quot;)
+
+  test(function() {
+    var l = context.getElementsByTagName(&quot;nosuchtag&quot;)
+    l[5] = &quot;foopy&quot;
+    assert_equals(l[5], undefined)
+    assert_equals(l.item(5), null)
+  }, &quot;Shouldn't be able to set unsigned properties on a HTMLCollection (non-strict mode)&quot;)
+
+  test(function() {
+    var l = context.getElementsByTagName(&quot;nosuchtag&quot;)
+    assert_throws(new TypeError(), function() {
+      &quot;use strict&quot;;
+      l[5] = &quot;foopy&quot;
+    })
+    assert_equals(l[5], undefined)
+    assert_equals(l.item(5), null)
+  }, &quot;Shouldn't be able to set unsigned properties on a HTMLCollection (strict mode)&quot;)
+
+  test(function() {
+    var l = context.getElementsByTagName(&quot;nosuchtag&quot;)
+    var fn = l.item;
+    assert_equals(fn, HTMLCollection.prototype.item);
+    l.item = &quot;pass&quot;
+    assert_equals(l.item, &quot;pass&quot;)
+    assert_equals(HTMLCollection.prototype.item, fn);
+  }, &quot;Should be able to set expando shadowing a proto prop (item)&quot;)
+
+  test(function() {
+    var l = context.getElementsByTagName(&quot;nosuchtag&quot;)
+    var fn = l.namedItem;
+    assert_equals(fn, HTMLCollection.prototype.namedItem);
+    l.namedItem = &quot;pass&quot;
+    assert_equals(l.namedItem, &quot;pass&quot;)
+    assert_equals(HTMLCollection.prototype.namedItem, fn);
+  }, &quot;Should be able to set expando shadowing a proto prop (namedItem)&quot;)
+
+  test(function() {
+    var t = element.appendChild(document.createElement(&quot;pre&quot;));
+    t.id = &quot;x&quot;;
+    this.add_cleanup(function() {element.removeChild(t)});
+
+    var list = context.getElementsByTagName('pre');
+    var pre = list[0];
+    assert_equals(pre.id, &quot;x&quot;);
+    assert_equals(list['x'], pre);
+
+    assert_true('x' in list, &quot;'x' in list&quot;);
+    assert_true(list.hasOwnProperty('x'), &quot;list.hasOwnProperty('x')&quot;);
+
+    assert_array_equals(Object.getOwnPropertyNames(list).sort(), [&quot;0&quot;, &quot;x&quot;]);
+
+    var desc = Object.getOwnPropertyDescriptor(list, '0');
+    assert_equals(typeof desc, &quot;object&quot;, &quot;descriptor should be an object&quot;);
+    assert_true(desc.enumerable, &quot;desc.enumerable&quot;);
+    assert_true(desc.configurable, &quot;desc.configurable&quot;);
+
+    desc = Object.getOwnPropertyDescriptor(list, 'x');
+    assert_equals(typeof desc, &quot;object&quot;, &quot;descriptor should be an object&quot;);
+    assert_false(desc.enumerable, &quot;desc.enumerable&quot;);
+    assert_true(desc.configurable, &quot;desc.configurable&quot;);
+  }, &quot;hasOwnProperty, getOwnPropertyDescriptor, getOwnPropertyNames&quot;)
+
+  test(function() {
+    assert_equals(document.createElementNS(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;i&quot;).localName, &quot;i&quot;) // Sanity
+    var t = element.appendChild(document.createElementNS(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;I&quot;))
+    this.add_cleanup(function() {element.removeChild(t)})
+    assert_equals(t.localName, &quot;I&quot;)
+    assert_equals(t.tagName, &quot;I&quot;)
+    assert_equals(context.getElementsByTagName(&quot;I&quot;).length, 0)
+    assert_equals(context.getElementsByTagName(&quot;i&quot;).length, 0)
+  }, &quot;HTML element with uppercase tagName never matches in HTML Documents&quot;)
+
+  test(function() {
+    var t = element.appendChild(document.createElementNS(&quot;test&quot;, &quot;st&quot;))
+    this.add_cleanup(function() {element.removeChild(t)})
+    assert_array_equals(context.getElementsByTagName(&quot;st&quot;), [t])
+    assert_array_equals(context.getElementsByTagName(&quot;ST&quot;), [])
+  }, &quot;Element in non-HTML namespace, no prefix, lowercase name&quot;)
+
+  test(function() {
+    var t = element.appendChild(document.createElementNS(&quot;test&quot;, &quot;ST&quot;))
+    this.add_cleanup(function() {element.removeChild(t)})
+    assert_array_equals(context.getElementsByTagName(&quot;ST&quot;), [t])
+    assert_array_equals(context.getElementsByTagName(&quot;st&quot;), [])
+  }, &quot;Element in non-HTML namespace, no prefix, uppercase name&quot;)
+
+  test(function() {
+    var t = element.appendChild(document.createElementNS(&quot;test&quot;, &quot;te:st&quot;))
+    this.add_cleanup(function() {element.removeChild(t)})
+    assert_array_equals(context.getElementsByTagName(&quot;st&quot;), [t])
+    assert_array_equals(context.getElementsByTagName(&quot;ST&quot;), [])
+  }, &quot;Element in non-HTML namespace, prefix, lowercase name&quot;)
+
+  test(function() {
+    var t = element.appendChild(document.createElementNS(&quot;test&quot;, &quot;te:ST&quot;))
+    this.add_cleanup(function() {element.removeChild(t)})
+    assert_array_equals(context.getElementsByTagName(&quot;ST&quot;), [t])
+    assert_array_equals(context.getElementsByTagName(&quot;st&quot;), [])
+    assert_array_equals(context.getElementsByTagName(&quot;te:st&quot;), [])
+    assert_array_equals(context.getElementsByTagName(&quot;te:ST&quot;), [])
+  }, &quot;Element in non-HTML namespace, prefix, uppercase name&quot;)
+
+  test(function() {
+    var t = element.appendChild(document.createElement(&quot;aÇ&quot;))
+    this.add_cleanup(function() {element.removeChild(t)})
+    assert_equals(t.localName, &quot;aÇ&quot;)
+    assert_array_equals(context.getElementsByTagName(&quot;AÇ&quot;), [t], &quot;All uppercase input&quot;)
+    assert_array_equals(context.getElementsByTagName(&quot;aÇ&quot;), [t], &quot;Ascii lowercase input&quot;)
+    assert_array_equals(context.getElementsByTagName(&quot;aç&quot;), [], &quot;All lowercase input&quot;)
+  }, &quot;Element in HTML namespace, no prefix, non-ascii characters in name&quot;)
+
+  test(function() {
+    var t = element.appendChild(document.createElementNS(&quot;test&quot;, &quot;AÇ&quot;))
+    this.add_cleanup(function() {element.removeChild(t)})
+    assert_array_equals(context.getElementsByTagName(&quot;AÇ&quot;), [t])
+    assert_array_equals(context.getElementsByTagName(&quot;aÇ&quot;), [])
+    assert_array_equals(context.getElementsByTagName(&quot;aç&quot;), [])
+  }, &quot;Element in non-HTML namespace, non-ascii characters in name&quot;)
+
+  test(function() {
+    var t = element.appendChild(document.createElementNS(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;test:aÇ&quot;))
+    this.add_cleanup(function() {element.removeChild(t)})
+    assert_array_equals(context.getElementsByTagName(&quot;AÇ&quot;), [t], &quot;All uppercase input&quot;)
+    assert_array_equals(context.getElementsByTagName(&quot;aÇ&quot;), [t], &quot;Ascii lowercase input&quot;)
+    assert_array_equals(context.getElementsByTagName(&quot;aç&quot;), [], &quot;All lowercase input&quot;)
+  }, &quot;Element in HTML namespace, prefix, non-ascii characters in name&quot;)
+
+  test(function() {
+    var t = element.appendChild(document.createElementNS(&quot;test&quot;, &quot;test:AÇ&quot;))
+    this.add_cleanup(function() {element.removeChild(t)})
+    assert_array_equals(context.getElementsByTagName(&quot;AÇ&quot;), [t], &quot;All uppercase input&quot;)
+    assert_array_equals(context.getElementsByTagName(&quot;aÇ&quot;), [], &quot;Ascii lowercase input&quot;)
+    assert_array_equals(context.getElementsByTagName(&quot;aç&quot;), [], &quot;All lowercase input&quot;)
+  }, &quot;Element in non-HTML namespace, prefix, non-ascii characters in name&quot;)
+
+  test(function() {
+    var actual = context.getElementsByTagName(&quot;*&quot;);
+    var expected = [];
+    var get_elements = function(node) {
+      for (var i = 0; i &lt; node.childNodes.length; i++) {
+        var child = node.childNodes[i];
+        if (child.nodeType === child.ELEMENT_NODE) {
+          expected.push(child);
+          get_elements(child);
+        }
+      }
+    }
+    get_elements(context);
+    assert_array_equals(actual, expected);
+  }, &quot;getElementsByTagName('*')&quot;)
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentElementgetElementsByTagNameNSjsfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentElementgetElementsByTagNameNSjs"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-Element-getElementsByTagNameNS.js (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-Element-getElementsByTagNameNS.js) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-Element-getElementsByTagNameNS.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-Element-getElementsByTagNameNS.js        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,128 @@
</span><ins>+function test_getElementsByTagNameNS(context, element) {
+  test(function() {
+    assert_false(context.getElementsByTagNameNS(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;html&quot;) instanceof NodeList, &quot;NodeList&quot;)
+    assert_true(context.getElementsByTagNameNS(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;html&quot;) instanceof HTMLCollection, &quot;HTMLCollection&quot;)
+    var firstCollection = context.getElementsByTagNameNS(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;html&quot;),
+        secondCollection = context.getElementsByTagNameNS(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;html&quot;)
+    assert_true(firstCollection !== secondCollection || firstCollection === secondCollection,
+                &quot;Caching is allowed.&quot;)
+  })
+
+  test(function() {
+    var t = element.appendChild(document.createElementNS(&quot;test&quot;, &quot;body&quot;))
+    this.add_cleanup(function() {element.removeChild(t)})
+    var actual = context.getElementsByTagNameNS(&quot;*&quot;, &quot;body&quot;);
+    var expected = [];
+    var get_elements = function(node) {
+      for (var i = 0; i &lt; node.childNodes.length; i++) {
+        var child = node.childNodes[i];
+        if (child.nodeType === child.ELEMENT_NODE) {
+          if (child.localName == &quot;body&quot;) {
+            expected.push(child);
+          }
+          get_elements(child);
+        }
+      }
+    }
+    get_elements(context);
+    assert_array_equals(actual, expected);
+  }, &quot;getElementsByTagNameNS('*', 'body')&quot;)
+
+  test(function() {
+    assert_array_equals(context.getElementsByTagNameNS(&quot;&quot;, &quot;*&quot;), []);
+    var t = element.appendChild(document.createElementNS(&quot;&quot;, &quot;body&quot;))
+    this.add_cleanup(function() {element.removeChild(t)})
+    assert_array_equals(context.getElementsByTagNameNS(&quot;&quot;, &quot;*&quot;), [t]);
+  }, &quot;Empty string namespace&quot;)
+
+  test(function() {
+    var t = element.appendChild(document.createElementNS(&quot;test&quot;, &quot;body&quot;))
+    this.add_cleanup(function() {element.removeChild(t)})
+    assert_array_equals(context.getElementsByTagNameNS(&quot;test&quot;, &quot;body&quot;), [t]);
+  }, &quot;body element in test namespace, no prefix&quot;)
+
+  test(function() {
+    var t = element.appendChild(document.createElementNS(&quot;test&quot;, &quot;test:body&quot;))
+    this.add_cleanup(function() {element.removeChild(t)})
+    assert_array_equals(context.getElementsByTagNameNS(&quot;test&quot;, &quot;body&quot;), [t]);
+  }, &quot;body element in test namespace, prefix&quot;)
+
+  test(function() {
+    var t = element.appendChild(document.createElementNS(&quot;test&quot;, &quot;BODY&quot;))
+    this.add_cleanup(function() {element.removeChild(t)})
+    assert_array_equals(context.getElementsByTagNameNS(&quot;test&quot;, &quot;BODY&quot;), [t]);
+    assert_array_equals(context.getElementsByTagNameNS(&quot;test&quot;, &quot;body&quot;), []);
+  }, &quot;BODY element in test namespace, no prefix&quot;)
+
+  test(function() {
+    var t = element.appendChild(document.createElementNS(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;abc&quot;))
+    this.add_cleanup(function() {element.removeChild(t)})
+    assert_array_equals(context.getElementsByTagNameNS(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;abc&quot;), [t]);
+    assert_array_equals(context.getElementsByTagNameNS(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;ABC&quot;), []);
+    assert_array_equals(context.getElementsByTagNameNS(&quot;test&quot;, &quot;ABC&quot;), []);
+  }, &quot;abc element in html namespace&quot;)
+
+  test(function() {
+    var t = element.appendChild(document.createElementNS(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;ABC&quot;))
+    this.add_cleanup(function() {element.removeChild(t)})
+    assert_array_equals(context.getElementsByTagNameNS(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;abc&quot;), []);
+    assert_array_equals(context.getElementsByTagNameNS(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;ABC&quot;), [t]);
+  }, &quot;ABC element in html namespace&quot;)
+
+  test(function() {
+    var t = element.appendChild(document.createElementNS(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;AÇ&quot;))
+    this.add_cleanup(function() {element.removeChild(t)})
+    assert_array_equals(context.getElementsByTagNameNS(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;AÇ&quot;), [t]);
+    assert_array_equals(context.getElementsByTagNameNS(&quot;test&quot;, &quot;aÇ&quot;), []);
+    assert_array_equals(context.getElementsByTagNameNS(&quot;test&quot;, &quot;aç&quot;), []);
+  }, &quot;AÇ, case sensitivity&quot;)
+
+  test(function() {
+    var t = element.appendChild(document.createElementNS(&quot;test&quot;, &quot;test:BODY&quot;))
+    this.add_cleanup(function() {element.removeChild(t)})
+    assert_array_equals(context.getElementsByTagNameNS(&quot;test&quot;, &quot;BODY&quot;), [t]);
+    assert_array_equals(context.getElementsByTagNameNS(&quot;test&quot;, &quot;body&quot;), []);
+  }, &quot;BODY element in test namespace, prefix&quot;)
+
+  test(function() {
+    var t = element.appendChild(document.createElementNS(&quot;test&quot;, &quot;test:test&quot;))
+    this.add_cleanup(function() {element.removeChild(t)})
+    var actual = context.getElementsByTagNameNS(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;*&quot;);
+    var expected = [];
+    var get_elements = function(node) {
+      for (var i = 0; i &lt; node.childNodes.length; i++) {
+        var child = node.childNodes[i];
+        if (child.nodeType === child.ELEMENT_NODE) {
+          if (child !== t) {
+            expected.push(child);
+          }
+          get_elements(child);
+        }
+      }
+    }
+    get_elements(context);
+    assert_array_equals(actual, expected);
+  }, &quot;getElementsByTagNameNS('http://www.w3.org/1999/xhtml', '*')&quot;)
+
+  test(function() {
+    var actual = context.getElementsByTagNameNS(&quot;*&quot;, &quot;*&quot;);
+    var expected = [];
+    var get_elements = function(node) {
+      for (var i = 0; i &lt; node.childNodes.length; i++) {
+        var child = node.childNodes[i];
+        if (child.nodeType === child.ELEMENT_NODE) {
+          expected.push(child);
+          get_elements(child);
+        }
+      }
+    }
+    get_elements(context);
+    assert_array_equals(actual, expected);
+  }, &quot;getElementsByTagNameNS('*', '*')&quot;)
+
+  test(function() {
+    assert_array_equals(context.getElementsByTagNameNS(&quot;**&quot;, &quot;*&quot;), []);
+    assert_array_equals(context.getElementsByTagNameNS(null, &quot;0&quot;), []);
+    assert_array_equals(context.getElementsByTagNameNS(null, &quot;div&quot;), []);
+  }, &quot;Empty lists&quot;)
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentURLsubexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-URL.sub-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-URL.sub-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-URL.sub-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Document.URL with redirect 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentURLsubhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentURLsubhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-URL.sub.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-URL.sub.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-URL.sub.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-URL.sub.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Document.URL with redirect&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script&gt;
+async_test(function() {
+  var iframe = document.createElement(&quot;iframe&quot;);
+  iframe.src = &quot;/common/redirect.py?location=/common/blank.html&quot;;
+  document.body.appendChild(iframe);
+  this.add_cleanup(function() { document.body.removeChild(iframe); });
+  iframe.onload = this.step_func_done(function() {
+    assert_equals(iframe.contentDocument.URL,
+                  &quot;http://{{host}}:{{ports[http][0]}}/common/blank.html&quot;);
+  });
+})
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentadoptNodeexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentadoptNodeexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-adoptNode-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-adoptNode-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-adoptNode-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-adoptNode-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+PASS Adopting an Element called 'x&lt;' should work. 
+PASS Adopting an Element called ':good:times:' should work. 
+FAIL Explicitly adopting a DocumentType should work. NotSupportedError: DOM Exception 9
+PASS Adopting a Document should throw. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentadoptNodehtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentadoptNodehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-adoptNode.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-adoptNode.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-adoptNode.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-adoptNode.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,50 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Document.adoptNode&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-document-adoptnode&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;!--creates an element with local name &quot;x&lt;&quot;: --&gt;&lt;x&lt;&gt;x&lt;/x&lt;&gt;
+&lt;script&gt;
+test(function() {
+  var y = document.getElementsByTagName(&quot;x&lt;&quot;)[0]
+  var child = y.firstChild
+  assert_equals(y.parentNode, document.body)
+  assert_equals(y.ownerDocument, document)
+  assert_equals(document.adoptNode(y), y)
+  assert_equals(y.parentNode, null)
+  assert_equals(y.firstChild, child)
+  assert_equals(y.ownerDocument, document)
+  assert_equals(child.ownerDocument, document)
+  var doc = document.implementation.createDocument(null, null, null)
+  assert_equals(doc.adoptNode(y), y)
+  assert_equals(y.parentNode, null)
+  assert_equals(y.firstChild, child)
+  assert_equals(y.ownerDocument, doc)
+  assert_equals(child.ownerDocument, doc)
+}, &quot;Adopting an Element called 'x&lt;' should work.&quot;)
+
+test(function() {
+  var x = document.createElement(&quot;:good:times:&quot;)
+  assert_equals(document.adoptNode(x), x);
+  var doc = document.implementation.createDocument(null, null, null)
+  assert_equals(doc.adoptNode(x), x)
+  assert_equals(x.parentNode, null)
+  assert_equals(x.ownerDocument, doc)
+}, &quot;Adopting an Element called ':good:times:' should work.&quot;)
+
+test(function() {
+  var doctype = document.doctype;
+  assert_equals(doctype.parentNode, document)
+  assert_equals(doctype.ownerDocument, document)
+  assert_equals(document.adoptNode(doctype), doctype)
+  assert_equals(doctype.parentNode, null)
+  assert_equals(doctype.ownerDocument, document)
+}, &quot;Explicitly adopting a DocumentType should work.&quot;)
+
+test(function() {
+  var doc = document.implementation.createDocument(null, null, null)
+  assert_throws(&quot;NOT_SUPPORTED_ERR&quot;, function() { document.adoptNode(doc) })
+}, &quot;Adopting a Document should throw.&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcharacterSetnormalizationexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-characterSet-normalization-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-characterSet-normalization-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-characterSet-normalization-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,434 @@
</span><ins>+
+PASS Name &quot;utf-8&quot; has label &quot;unicode-1-1-utf-8&quot; (characterSet) 
+PASS Name &quot;utf-8&quot; has label &quot;unicode-1-1-utf-8&quot; (inputEncoding) 
+PASS Name &quot;utf-8&quot; has label &quot;utf-8&quot; (characterSet) 
+PASS Name &quot;utf-8&quot; has label &quot;utf-8&quot; (inputEncoding) 
+PASS Name &quot;utf-8&quot; has label &quot;utf8&quot; (characterSet) 
+PASS Name &quot;utf-8&quot; has label &quot;utf8&quot; (inputEncoding) 
+PASS Name &quot;utf-8&quot; has label &quot;utf-16&quot; (characterSet) 
+PASS Name &quot;utf-8&quot; has label &quot;utf-16&quot; (inputEncoding) 
+PASS Name &quot;utf-8&quot; has label &quot;utf-16le&quot; (characterSet) 
+PASS Name &quot;utf-8&quot; has label &quot;utf-16le&quot; (inputEncoding) 
+PASS Name &quot;utf-8&quot; has label &quot;utf-16be&quot; (characterSet) 
+PASS Name &quot;utf-8&quot; has label &quot;utf-16be&quot; (inputEncoding) 
+PASS Name &quot;ibm866&quot; has label &quot;866&quot; (characterSet) 
+PASS Name &quot;ibm866&quot; has label &quot;866&quot; (inputEncoding) 
+PASS Name &quot;ibm866&quot; has label &quot;cp866&quot; (characterSet) 
+PASS Name &quot;ibm866&quot; has label &quot;cp866&quot; (inputEncoding) 
+PASS Name &quot;ibm866&quot; has label &quot;csibm866&quot; (characterSet) 
+PASS Name &quot;ibm866&quot; has label &quot;csibm866&quot; (inputEncoding) 
+PASS Name &quot;ibm866&quot; has label &quot;ibm866&quot; (characterSet) 
+PASS Name &quot;ibm866&quot; has label &quot;ibm866&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-2&quot; has label &quot;csisolatin2&quot; (characterSet) 
+PASS Name &quot;iso-8859-2&quot; has label &quot;csisolatin2&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-2&quot; has label &quot;iso-8859-2&quot; (characterSet) 
+PASS Name &quot;iso-8859-2&quot; has label &quot;iso-8859-2&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-2&quot; has label &quot;iso-ir-101&quot; (characterSet) 
+PASS Name &quot;iso-8859-2&quot; has label &quot;iso-ir-101&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-2&quot; has label &quot;iso8859-2&quot; (characterSet) 
+PASS Name &quot;iso-8859-2&quot; has label &quot;iso8859-2&quot; (inputEncoding) 
+FAIL Name &quot;iso-8859-2&quot; has label &quot;iso88592&quot; (characterSet) assert_equals: expected &quot;ISO-8859-2&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-2&quot; has label &quot;iso88592&quot; (inputEncoding) assert_equals: expected &quot;ISO-8859-2&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-2&quot; has label &quot;iso_8859-2&quot; (characterSet) assert_equals: expected &quot;ISO-8859-2&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-2&quot; has label &quot;iso_8859-2&quot; (inputEncoding) assert_equals: expected &quot;ISO-8859-2&quot; but got &quot;ISO-8859-1&quot;
+PASS Name &quot;iso-8859-2&quot; has label &quot;iso_8859-2:1987&quot; (characterSet) 
+PASS Name &quot;iso-8859-2&quot; has label &quot;iso_8859-2:1987&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-2&quot; has label &quot;l2&quot; (characterSet) 
+PASS Name &quot;iso-8859-2&quot; has label &quot;l2&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-2&quot; has label &quot;latin2&quot; (characterSet) 
+PASS Name &quot;iso-8859-2&quot; has label &quot;latin2&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-3&quot; has label &quot;csisolatin3&quot; (characterSet) 
+PASS Name &quot;iso-8859-3&quot; has label &quot;csisolatin3&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-3&quot; has label &quot;iso-8859-3&quot; (characterSet) 
+PASS Name &quot;iso-8859-3&quot; has label &quot;iso-8859-3&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-3&quot; has label &quot;iso-ir-109&quot; (characterSet) 
+PASS Name &quot;iso-8859-3&quot; has label &quot;iso-ir-109&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-3&quot; has label &quot;iso8859-3&quot; (characterSet) 
+PASS Name &quot;iso-8859-3&quot; has label &quot;iso8859-3&quot; (inputEncoding) 
+FAIL Name &quot;iso-8859-3&quot; has label &quot;iso88593&quot; (characterSet) assert_equals: expected &quot;ISO-8859-3&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-3&quot; has label &quot;iso88593&quot; (inputEncoding) assert_equals: expected &quot;ISO-8859-3&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-3&quot; has label &quot;iso_8859-3&quot; (characterSet) assert_equals: expected &quot;ISO-8859-3&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-3&quot; has label &quot;iso_8859-3&quot; (inputEncoding) assert_equals: expected &quot;ISO-8859-3&quot; but got &quot;ISO-8859-1&quot;
+PASS Name &quot;iso-8859-3&quot; has label &quot;iso_8859-3:1988&quot; (characterSet) 
+PASS Name &quot;iso-8859-3&quot; has label &quot;iso_8859-3:1988&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-3&quot; has label &quot;l3&quot; (characterSet) 
+PASS Name &quot;iso-8859-3&quot; has label &quot;l3&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-3&quot; has label &quot;latin3&quot; (characterSet) 
+PASS Name &quot;iso-8859-3&quot; has label &quot;latin3&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-4&quot; has label &quot;csisolatin4&quot; (characterSet) 
+PASS Name &quot;iso-8859-4&quot; has label &quot;csisolatin4&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-4&quot; has label &quot;iso-8859-4&quot; (characterSet) 
+PASS Name &quot;iso-8859-4&quot; has label &quot;iso-8859-4&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-4&quot; has label &quot;iso-ir-110&quot; (characterSet) 
+PASS Name &quot;iso-8859-4&quot; has label &quot;iso-ir-110&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-4&quot; has label &quot;iso8859-4&quot; (characterSet) 
+PASS Name &quot;iso-8859-4&quot; has label &quot;iso8859-4&quot; (inputEncoding) 
+FAIL Name &quot;iso-8859-4&quot; has label &quot;iso88594&quot; (characterSet) assert_equals: expected &quot;ISO-8859-4&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-4&quot; has label &quot;iso88594&quot; (inputEncoding) assert_equals: expected &quot;ISO-8859-4&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-4&quot; has label &quot;iso_8859-4&quot; (characterSet) assert_equals: expected &quot;ISO-8859-4&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-4&quot; has label &quot;iso_8859-4&quot; (inputEncoding) assert_equals: expected &quot;ISO-8859-4&quot; but got &quot;ISO-8859-1&quot;
+PASS Name &quot;iso-8859-4&quot; has label &quot;iso_8859-4:1988&quot; (characterSet) 
+PASS Name &quot;iso-8859-4&quot; has label &quot;iso_8859-4:1988&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-4&quot; has label &quot;l4&quot; (characterSet) 
+PASS Name &quot;iso-8859-4&quot; has label &quot;l4&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-4&quot; has label &quot;latin4&quot; (characterSet) 
+PASS Name &quot;iso-8859-4&quot; has label &quot;latin4&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-5&quot; has label &quot;csisolatincyrillic&quot; (characterSet) 
+PASS Name &quot;iso-8859-5&quot; has label &quot;csisolatincyrillic&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-5&quot; has label &quot;cyrillic&quot; (characterSet) 
+PASS Name &quot;iso-8859-5&quot; has label &quot;cyrillic&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-5&quot; has label &quot;iso-8859-5&quot; (characterSet) 
+PASS Name &quot;iso-8859-5&quot; has label &quot;iso-8859-5&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-5&quot; has label &quot;iso-ir-144&quot; (characterSet) 
+PASS Name &quot;iso-8859-5&quot; has label &quot;iso-ir-144&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-5&quot; has label &quot;iso8859-5&quot; (characterSet) 
+PASS Name &quot;iso-8859-5&quot; has label &quot;iso8859-5&quot; (inputEncoding) 
+FAIL Name &quot;iso-8859-5&quot; has label &quot;iso88595&quot; (characterSet) assert_equals: expected &quot;ISO-8859-5&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-5&quot; has label &quot;iso88595&quot; (inputEncoding) assert_equals: expected &quot;ISO-8859-5&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-5&quot; has label &quot;iso_8859-5&quot; (characterSet) assert_equals: expected &quot;ISO-8859-5&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-5&quot; has label &quot;iso_8859-5&quot; (inputEncoding) assert_equals: expected &quot;ISO-8859-5&quot; but got &quot;ISO-8859-1&quot;
+PASS Name &quot;iso-8859-5&quot; has label &quot;iso_8859-5:1988&quot; (characterSet) 
+PASS Name &quot;iso-8859-5&quot; has label &quot;iso_8859-5:1988&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-6&quot; has label &quot;arabic&quot; (characterSet) 
+PASS Name &quot;iso-8859-6&quot; has label &quot;arabic&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-6&quot; has label &quot;asmo-708&quot; (characterSet) 
+PASS Name &quot;iso-8859-6&quot; has label &quot;asmo-708&quot; (inputEncoding) 
+FAIL Name &quot;iso-8859-6&quot; has label &quot;csiso88596e&quot; (characterSet) assert_equals: expected &quot;ISO-8859-6&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-6&quot; has label &quot;csiso88596e&quot; (inputEncoding) assert_equals: expected &quot;ISO-8859-6&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-6&quot; has label &quot;csiso88596i&quot; (characterSet) assert_equals: expected &quot;ISO-8859-6&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-6&quot; has label &quot;csiso88596i&quot; (inputEncoding) assert_equals: expected &quot;ISO-8859-6&quot; but got &quot;ISO-8859-1&quot;
+PASS Name &quot;iso-8859-6&quot; has label &quot;csisolatinarabic&quot; (characterSet) 
+PASS Name &quot;iso-8859-6&quot; has label &quot;csisolatinarabic&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-6&quot; has label &quot;ecma-114&quot; (characterSet) 
+PASS Name &quot;iso-8859-6&quot; has label &quot;ecma-114&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-6&quot; has label &quot;iso-8859-6&quot; (characterSet) 
+PASS Name &quot;iso-8859-6&quot; has label &quot;iso-8859-6&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-6&quot; has label &quot;iso-8859-6-e&quot; (characterSet) 
+PASS Name &quot;iso-8859-6&quot; has label &quot;iso-8859-6-e&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-6&quot; has label &quot;iso-8859-6-i&quot; (characterSet) 
+PASS Name &quot;iso-8859-6&quot; has label &quot;iso-8859-6-i&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-6&quot; has label &quot;iso-ir-127&quot; (characterSet) 
+PASS Name &quot;iso-8859-6&quot; has label &quot;iso-ir-127&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-6&quot; has label &quot;iso8859-6&quot; (characterSet) 
+PASS Name &quot;iso-8859-6&quot; has label &quot;iso8859-6&quot; (inputEncoding) 
+FAIL Name &quot;iso-8859-6&quot; has label &quot;iso88596&quot; (characterSet) assert_equals: expected &quot;ISO-8859-6&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-6&quot; has label &quot;iso88596&quot; (inputEncoding) assert_equals: expected &quot;ISO-8859-6&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-6&quot; has label &quot;iso_8859-6&quot; (characterSet) assert_equals: expected &quot;ISO-8859-6&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-6&quot; has label &quot;iso_8859-6&quot; (inputEncoding) assert_equals: expected &quot;ISO-8859-6&quot; but got &quot;ISO-8859-1&quot;
+PASS Name &quot;iso-8859-6&quot; has label &quot;iso_8859-6:1987&quot; (characterSet) 
+PASS Name &quot;iso-8859-6&quot; has label &quot;iso_8859-6:1987&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-7&quot; has label &quot;csisolatingreek&quot; (characterSet) 
+PASS Name &quot;iso-8859-7&quot; has label &quot;csisolatingreek&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-7&quot; has label &quot;ecma-118&quot; (characterSet) 
+PASS Name &quot;iso-8859-7&quot; has label &quot;ecma-118&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-7&quot; has label &quot;elot_928&quot; (characterSet) 
+PASS Name &quot;iso-8859-7&quot; has label &quot;elot_928&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-7&quot; has label &quot;greek&quot; (characterSet) 
+PASS Name &quot;iso-8859-7&quot; has label &quot;greek&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-7&quot; has label &quot;greek8&quot; (characterSet) 
+PASS Name &quot;iso-8859-7&quot; has label &quot;greek8&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-7&quot; has label &quot;iso-8859-7&quot; (characterSet) 
+PASS Name &quot;iso-8859-7&quot; has label &quot;iso-8859-7&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-7&quot; has label &quot;iso-ir-126&quot; (characterSet) 
+PASS Name &quot;iso-8859-7&quot; has label &quot;iso-ir-126&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-7&quot; has label &quot;iso8859-7&quot; (characterSet) 
+PASS Name &quot;iso-8859-7&quot; has label &quot;iso8859-7&quot; (inputEncoding) 
+FAIL Name &quot;iso-8859-7&quot; has label &quot;iso88597&quot; (characterSet) assert_equals: expected &quot;ISO-8859-7&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-7&quot; has label &quot;iso88597&quot; (inputEncoding) assert_equals: expected &quot;ISO-8859-7&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-7&quot; has label &quot;iso_8859-7&quot; (characterSet) assert_equals: expected &quot;ISO-8859-7&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-7&quot; has label &quot;iso_8859-7&quot; (inputEncoding) assert_equals: expected &quot;ISO-8859-7&quot; but got &quot;ISO-8859-1&quot;
+PASS Name &quot;iso-8859-7&quot; has label &quot;iso_8859-7:1987&quot; (characterSet) 
+PASS Name &quot;iso-8859-7&quot; has label &quot;iso_8859-7:1987&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-7&quot; has label &quot;sun_eu_greek&quot; (characterSet) 
+PASS Name &quot;iso-8859-7&quot; has label &quot;sun_eu_greek&quot; (inputEncoding) 
+FAIL Name &quot;iso-8859-8&quot; has label &quot;csiso88598e&quot; (characterSet) assert_equals: expected &quot;ISO-8859-8&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-8&quot; has label &quot;csiso88598e&quot; (inputEncoding) assert_equals: expected &quot;ISO-8859-8&quot; but got &quot;ISO-8859-1&quot;
+PASS Name &quot;iso-8859-8&quot; has label &quot;csisolatinhebrew&quot; (characterSet) 
+PASS Name &quot;iso-8859-8&quot; has label &quot;csisolatinhebrew&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-8&quot; has label &quot;hebrew&quot; (characterSet) 
+PASS Name &quot;iso-8859-8&quot; has label &quot;hebrew&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-8&quot; has label &quot;iso-8859-8&quot; (characterSet) 
+PASS Name &quot;iso-8859-8&quot; has label &quot;iso-8859-8&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-8&quot; has label &quot;iso-8859-8-e&quot; (characterSet) 
+PASS Name &quot;iso-8859-8&quot; has label &quot;iso-8859-8-e&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-8&quot; has label &quot;iso-ir-138&quot; (characterSet) 
+PASS Name &quot;iso-8859-8&quot; has label &quot;iso-ir-138&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-8&quot; has label &quot;iso8859-8&quot; (characterSet) 
+PASS Name &quot;iso-8859-8&quot; has label &quot;iso8859-8&quot; (inputEncoding) 
+FAIL Name &quot;iso-8859-8&quot; has label &quot;iso88598&quot; (characterSet) assert_equals: expected &quot;ISO-8859-8&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-8&quot; has label &quot;iso88598&quot; (inputEncoding) assert_equals: expected &quot;ISO-8859-8&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-8&quot; has label &quot;iso_8859-8&quot; (characterSet) assert_equals: expected &quot;ISO-8859-8&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-8&quot; has label &quot;iso_8859-8&quot; (inputEncoding) assert_equals: expected &quot;ISO-8859-8&quot; but got &quot;ISO-8859-1&quot;
+PASS Name &quot;iso-8859-8&quot; has label &quot;iso_8859-8:1988&quot; (characterSet) 
+PASS Name &quot;iso-8859-8&quot; has label &quot;iso_8859-8:1988&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-8&quot; has label &quot;visual&quot; (characterSet) 
+PASS Name &quot;iso-8859-8&quot; has label &quot;visual&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-8-i&quot; has label &quot;csiso88598i&quot; (characterSet) 
+PASS Name &quot;iso-8859-8-i&quot; has label &quot;csiso88598i&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-8-i&quot; has label &quot;iso-8859-8-i&quot; (characterSet) 
+PASS Name &quot;iso-8859-8-i&quot; has label &quot;iso-8859-8-i&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-8-i&quot; has label &quot;logical&quot; (characterSet) 
+PASS Name &quot;iso-8859-8-i&quot; has label &quot;logical&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-10&quot; has label &quot;csisolatin6&quot; (characterSet) 
+PASS Name &quot;iso-8859-10&quot; has label &quot;csisolatin6&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-10&quot; has label &quot;iso-8859-10&quot; (characterSet) 
+PASS Name &quot;iso-8859-10&quot; has label &quot;iso-8859-10&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-10&quot; has label &quot;iso-ir-157&quot; (characterSet) 
+PASS Name &quot;iso-8859-10&quot; has label &quot;iso-ir-157&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-10&quot; has label &quot;iso8859-10&quot; (characterSet) 
+PASS Name &quot;iso-8859-10&quot; has label &quot;iso8859-10&quot; (inputEncoding) 
+FAIL Name &quot;iso-8859-10&quot; has label &quot;iso885910&quot; (characterSet) assert_equals: expected &quot;ISO-8859-10&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-10&quot; has label &quot;iso885910&quot; (inputEncoding) assert_equals: expected &quot;ISO-8859-10&quot; but got &quot;ISO-8859-1&quot;
+PASS Name &quot;iso-8859-10&quot; has label &quot;l6&quot; (characterSet) 
+PASS Name &quot;iso-8859-10&quot; has label &quot;l6&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-10&quot; has label &quot;latin6&quot; (characterSet) 
+PASS Name &quot;iso-8859-10&quot; has label &quot;latin6&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-13&quot; has label &quot;iso-8859-13&quot; (characterSet) 
+PASS Name &quot;iso-8859-13&quot; has label &quot;iso-8859-13&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-13&quot; has label &quot;iso8859-13&quot; (characterSet) 
+PASS Name &quot;iso-8859-13&quot; has label &quot;iso8859-13&quot; (inputEncoding) 
+FAIL Name &quot;iso-8859-13&quot; has label &quot;iso885913&quot; (characterSet) assert_equals: expected &quot;ISO-8859-13&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-13&quot; has label &quot;iso885913&quot; (inputEncoding) assert_equals: expected &quot;ISO-8859-13&quot; but got &quot;ISO-8859-1&quot;
+PASS Name &quot;iso-8859-14&quot; has label &quot;iso-8859-14&quot; (characterSet) 
+PASS Name &quot;iso-8859-14&quot; has label &quot;iso-8859-14&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-14&quot; has label &quot;iso8859-14&quot; (characterSet) 
+PASS Name &quot;iso-8859-14&quot; has label &quot;iso8859-14&quot; (inputEncoding) 
+FAIL Name &quot;iso-8859-14&quot; has label &quot;iso885914&quot; (characterSet) assert_equals: expected &quot;ISO-8859-14&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-14&quot; has label &quot;iso885914&quot; (inputEncoding) assert_equals: expected &quot;ISO-8859-14&quot; but got &quot;ISO-8859-1&quot;
+PASS Name &quot;iso-8859-15&quot; has label &quot;csisolatin9&quot; (characterSet) 
+PASS Name &quot;iso-8859-15&quot; has label &quot;csisolatin9&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-15&quot; has label &quot;iso-8859-15&quot; (characterSet) 
+PASS Name &quot;iso-8859-15&quot; has label &quot;iso-8859-15&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-15&quot; has label &quot;iso8859-15&quot; (characterSet) 
+PASS Name &quot;iso-8859-15&quot; has label &quot;iso8859-15&quot; (inputEncoding) 
+FAIL Name &quot;iso-8859-15&quot; has label &quot;iso885915&quot; (characterSet) assert_equals: expected &quot;ISO-8859-15&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-15&quot; has label &quot;iso885915&quot; (inputEncoding) assert_equals: expected &quot;ISO-8859-15&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-15&quot; has label &quot;iso_8859-15&quot; (characterSet) assert_equals: expected &quot;ISO-8859-15&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;iso-8859-15&quot; has label &quot;iso_8859-15&quot; (inputEncoding) assert_equals: expected &quot;ISO-8859-15&quot; but got &quot;ISO-8859-1&quot;
+PASS Name &quot;iso-8859-15&quot; has label &quot;l9&quot; (characterSet) 
+PASS Name &quot;iso-8859-15&quot; has label &quot;l9&quot; (inputEncoding) 
+PASS Name &quot;iso-8859-16&quot; has label &quot;iso-8859-16&quot; (characterSet) 
+PASS Name &quot;iso-8859-16&quot; has label &quot;iso-8859-16&quot; (inputEncoding) 
+PASS Name &quot;koi8-r&quot; has label &quot;cskoi8r&quot; (characterSet) 
+PASS Name &quot;koi8-r&quot; has label &quot;cskoi8r&quot; (inputEncoding) 
+PASS Name &quot;koi8-r&quot; has label &quot;koi&quot; (characterSet) 
+PASS Name &quot;koi8-r&quot; has label &quot;koi&quot; (inputEncoding) 
+PASS Name &quot;koi8-r&quot; has label &quot;koi8&quot; (characterSet) 
+PASS Name &quot;koi8-r&quot; has label &quot;koi8&quot; (inputEncoding) 
+PASS Name &quot;koi8-r&quot; has label &quot;koi8-r&quot; (characterSet) 
+PASS Name &quot;koi8-r&quot; has label &quot;koi8-r&quot; (inputEncoding) 
+FAIL Name &quot;koi8-r&quot; has label &quot;koi8_r&quot; (characterSet) assert_equals: expected &quot;KOI8-R&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;koi8-r&quot; has label &quot;koi8_r&quot; (inputEncoding) assert_equals: expected &quot;KOI8-R&quot; but got &quot;ISO-8859-1&quot;
+PASS Name &quot;koi8-u&quot; has label &quot;koi8-u&quot; (characterSet) 
+PASS Name &quot;koi8-u&quot; has label &quot;koi8-u&quot; (inputEncoding) 
+FAIL Name &quot;macintosh&quot; has label &quot;csmacintosh&quot; (characterSet) assert_equals: expected &quot;MACINTOSH&quot; but got &quot;macintosh&quot;
+FAIL Name &quot;macintosh&quot; has label &quot;csmacintosh&quot; (inputEncoding) assert_equals: expected &quot;MACINTOSH&quot; but got &quot;macintosh&quot;
+FAIL Name &quot;macintosh&quot; has label &quot;mac&quot; (characterSet) assert_equals: expected &quot;MACINTOSH&quot; but got &quot;macintosh&quot;
+FAIL Name &quot;macintosh&quot; has label &quot;mac&quot; (inputEncoding) assert_equals: expected &quot;MACINTOSH&quot; but got &quot;macintosh&quot;
+FAIL Name &quot;macintosh&quot; has label &quot;macintosh&quot; (characterSet) assert_equals: expected &quot;MACINTOSH&quot; but got &quot;macintosh&quot;
+FAIL Name &quot;macintosh&quot; has label &quot;macintosh&quot; (inputEncoding) assert_equals: expected &quot;MACINTOSH&quot; but got &quot;macintosh&quot;
+FAIL Name &quot;macintosh&quot; has label &quot;x-mac-roman&quot; (characterSet) assert_equals: expected &quot;MACINTOSH&quot; but got &quot;macintosh&quot;
+FAIL Name &quot;macintosh&quot; has label &quot;x-mac-roman&quot; (inputEncoding) assert_equals: expected &quot;MACINTOSH&quot; but got &quot;macintosh&quot;
+FAIL Name &quot;windows-874&quot; has label &quot;dos-874&quot; (characterSet) assert_equals: expected &quot;WINDOWS-874&quot; but got &quot;windows-874&quot;
+FAIL Name &quot;windows-874&quot; has label &quot;dos-874&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-874&quot; but got &quot;windows-874&quot;
+FAIL Name &quot;windows-874&quot; has label &quot;iso-8859-11&quot; (characterSet) assert_equals: expected &quot;WINDOWS-874&quot; but got &quot;windows-874&quot;
+FAIL Name &quot;windows-874&quot; has label &quot;iso-8859-11&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-874&quot; but got &quot;windows-874&quot;
+FAIL Name &quot;windows-874&quot; has label &quot;iso8859-11&quot; (characterSet) assert_equals: expected &quot;WINDOWS-874&quot; but got &quot;windows-874&quot;
+FAIL Name &quot;windows-874&quot; has label &quot;iso8859-11&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-874&quot; but got &quot;windows-874&quot;
+FAIL Name &quot;windows-874&quot; has label &quot;iso885911&quot; (characterSet) assert_equals: expected &quot;WINDOWS-874&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-874&quot; has label &quot;iso885911&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-874&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-874&quot; has label &quot;tis-620&quot; (characterSet) assert_equals: expected &quot;WINDOWS-874&quot; but got &quot;windows-874&quot;
+FAIL Name &quot;windows-874&quot; has label &quot;tis-620&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-874&quot; but got &quot;windows-874&quot;
+FAIL Name &quot;windows-874&quot; has label &quot;windows-874&quot; (characterSet) assert_equals: expected &quot;WINDOWS-874&quot; but got &quot;windows-874&quot;
+FAIL Name &quot;windows-874&quot; has label &quot;windows-874&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-874&quot; but got &quot;windows-874&quot;
+FAIL Name &quot;windows-1250&quot; has label &quot;cp1250&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1250&quot; but got &quot;windows-1250&quot;
+FAIL Name &quot;windows-1250&quot; has label &quot;cp1250&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1250&quot; but got &quot;windows-1250&quot;
+FAIL Name &quot;windows-1250&quot; has label &quot;windows-1250&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1250&quot; but got &quot;windows-1250&quot;
+FAIL Name &quot;windows-1250&quot; has label &quot;windows-1250&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1250&quot; but got &quot;windows-1250&quot;
+FAIL Name &quot;windows-1250&quot; has label &quot;x-cp1250&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1250&quot; but got &quot;windows-1250&quot;
+FAIL Name &quot;windows-1250&quot; has label &quot;x-cp1250&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1250&quot; but got &quot;windows-1250&quot;
+FAIL Name &quot;windows-1251&quot; has label &quot;cp1251&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1251&quot; but got &quot;windows-1251&quot;
+FAIL Name &quot;windows-1251&quot; has label &quot;cp1251&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1251&quot; but got &quot;windows-1251&quot;
+FAIL Name &quot;windows-1251&quot; has label &quot;windows-1251&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1251&quot; but got &quot;windows-1251&quot;
+FAIL Name &quot;windows-1251&quot; has label &quot;windows-1251&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1251&quot; but got &quot;windows-1251&quot;
+FAIL Name &quot;windows-1251&quot; has label &quot;x-cp1251&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1251&quot; but got &quot;windows-1251&quot;
+FAIL Name &quot;windows-1251&quot; has label &quot;x-cp1251&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1251&quot; but got &quot;windows-1251&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;ansi_x3.4-1968&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;US-ASCII&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;ansi_x3.4-1968&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;US-ASCII&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;ascii&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;US-ASCII&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;ascii&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;US-ASCII&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;cp1252&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;windows-1252&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;cp1252&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;windows-1252&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;cp819&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;cp819&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;csisolatin1&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;csisolatin1&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;ibm819&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;ibm819&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;iso-8859-1&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;iso-8859-1&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;iso-ir-100&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;iso-ir-100&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;iso8859-1&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;iso8859-1&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;iso88591&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;iso88591&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;iso_8859-1&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;iso_8859-1&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;iso_8859-1:1987&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;iso_8859-1:1987&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;l1&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;l1&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;latin1&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;latin1&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;us-ascii&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;US-ASCII&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;us-ascii&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;US-ASCII&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;windows-1252&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;windows-1252&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;windows-1252&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;windows-1252&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;x-cp1252&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;x-cp1252&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;x-user-defined&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;windows-1252&quot;
+FAIL Name &quot;windows-1252&quot; has label &quot;x-user-defined&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1252&quot; but got &quot;windows-1252&quot;
+FAIL Name &quot;windows-1253&quot; has label &quot;cp1253&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1253&quot; but got &quot;windows-1253&quot;
+FAIL Name &quot;windows-1253&quot; has label &quot;cp1253&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1253&quot; but got &quot;windows-1253&quot;
+FAIL Name &quot;windows-1253&quot; has label &quot;windows-1253&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1253&quot; but got &quot;windows-1253&quot;
+FAIL Name &quot;windows-1253&quot; has label &quot;windows-1253&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1253&quot; but got &quot;windows-1253&quot;
+FAIL Name &quot;windows-1253&quot; has label &quot;x-cp1253&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1253&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1253&quot; has label &quot;x-cp1253&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1253&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1254&quot; has label &quot;cp1254&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1254&quot; but got &quot;windows-1254&quot;
+FAIL Name &quot;windows-1254&quot; has label &quot;cp1254&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1254&quot; but got &quot;windows-1254&quot;
+FAIL Name &quot;windows-1254&quot; has label &quot;csisolatin5&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1254&quot; but got &quot;windows-1254&quot;
+FAIL Name &quot;windows-1254&quot; has label &quot;csisolatin5&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1254&quot; but got &quot;windows-1254&quot;
+FAIL Name &quot;windows-1254&quot; has label &quot;iso-8859-9&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1254&quot; but got &quot;windows-1254&quot;
+FAIL Name &quot;windows-1254&quot; has label &quot;iso-8859-9&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1254&quot; but got &quot;windows-1254&quot;
+FAIL Name &quot;windows-1254&quot; has label &quot;iso-ir-148&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1254&quot; but got &quot;windows-1254&quot;
+FAIL Name &quot;windows-1254&quot; has label &quot;iso-ir-148&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1254&quot; but got &quot;windows-1254&quot;
+FAIL Name &quot;windows-1254&quot; has label &quot;iso8859-9&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1254&quot; but got &quot;windows-1254&quot;
+FAIL Name &quot;windows-1254&quot; has label &quot;iso8859-9&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1254&quot; but got &quot;windows-1254&quot;
+FAIL Name &quot;windows-1254&quot; has label &quot;iso88599&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1254&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1254&quot; has label &quot;iso88599&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1254&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1254&quot; has label &quot;iso_8859-9&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1254&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1254&quot; has label &quot;iso_8859-9&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1254&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1254&quot; has label &quot;iso_8859-9:1989&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1254&quot; but got &quot;windows-1254&quot;
+FAIL Name &quot;windows-1254&quot; has label &quot;iso_8859-9:1989&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1254&quot; but got &quot;windows-1254&quot;
+FAIL Name &quot;windows-1254&quot; has label &quot;l5&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1254&quot; but got &quot;windows-1254&quot;
+FAIL Name &quot;windows-1254&quot; has label &quot;l5&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1254&quot; but got &quot;windows-1254&quot;
+FAIL Name &quot;windows-1254&quot; has label &quot;latin5&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1254&quot; but got &quot;windows-1254&quot;
+FAIL Name &quot;windows-1254&quot; has label &quot;latin5&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1254&quot; but got &quot;windows-1254&quot;
+FAIL Name &quot;windows-1254&quot; has label &quot;windows-1254&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1254&quot; but got &quot;windows-1254&quot;
+FAIL Name &quot;windows-1254&quot; has label &quot;windows-1254&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1254&quot; but got &quot;windows-1254&quot;
+FAIL Name &quot;windows-1254&quot; has label &quot;x-cp1254&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1254&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1254&quot; has label &quot;x-cp1254&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1254&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1255&quot; has label &quot;cp1255&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1255&quot; but got &quot;windows-1255&quot;
+FAIL Name &quot;windows-1255&quot; has label &quot;cp1255&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1255&quot; but got &quot;windows-1255&quot;
+FAIL Name &quot;windows-1255&quot; has label &quot;windows-1255&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1255&quot; but got &quot;windows-1255&quot;
+FAIL Name &quot;windows-1255&quot; has label &quot;windows-1255&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1255&quot; but got &quot;windows-1255&quot;
+FAIL Name &quot;windows-1255&quot; has label &quot;x-cp1255&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1255&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1255&quot; has label &quot;x-cp1255&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1255&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1256&quot; has label &quot;cp1256&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1256&quot; but got &quot;windows-1256&quot;
+FAIL Name &quot;windows-1256&quot; has label &quot;cp1256&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1256&quot; but got &quot;windows-1256&quot;
+FAIL Name &quot;windows-1256&quot; has label &quot;windows-1256&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1256&quot; but got &quot;windows-1256&quot;
+FAIL Name &quot;windows-1256&quot; has label &quot;windows-1256&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1256&quot; but got &quot;windows-1256&quot;
+FAIL Name &quot;windows-1256&quot; has label &quot;x-cp1256&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1256&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1256&quot; has label &quot;x-cp1256&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1256&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1257&quot; has label &quot;cp1257&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1257&quot; but got &quot;windows-1257&quot;
+FAIL Name &quot;windows-1257&quot; has label &quot;cp1257&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1257&quot; but got &quot;windows-1257&quot;
+FAIL Name &quot;windows-1257&quot; has label &quot;windows-1257&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1257&quot; but got &quot;windows-1257&quot;
+FAIL Name &quot;windows-1257&quot; has label &quot;windows-1257&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1257&quot; but got &quot;windows-1257&quot;
+FAIL Name &quot;windows-1257&quot; has label &quot;x-cp1257&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1257&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1257&quot; has label &quot;x-cp1257&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1257&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1258&quot; has label &quot;cp1258&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1258&quot; but got &quot;windows-1258&quot;
+FAIL Name &quot;windows-1258&quot; has label &quot;cp1258&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1258&quot; but got &quot;windows-1258&quot;
+FAIL Name &quot;windows-1258&quot; has label &quot;windows-1258&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1258&quot; but got &quot;windows-1258&quot;
+FAIL Name &quot;windows-1258&quot; has label &quot;windows-1258&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1258&quot; but got &quot;windows-1258&quot;
+FAIL Name &quot;windows-1258&quot; has label &quot;x-cp1258&quot; (characterSet) assert_equals: expected &quot;WINDOWS-1258&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;windows-1258&quot; has label &quot;x-cp1258&quot; (inputEncoding) assert_equals: expected &quot;WINDOWS-1258&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;x-mac-cyrillic&quot; has label &quot;x-mac-cyrillic&quot; (characterSet) assert_equals: expected &quot;X-MAC-CYRILLIC&quot; but got &quot;x-mac-cyrillic&quot;
+FAIL Name &quot;x-mac-cyrillic&quot; has label &quot;x-mac-cyrillic&quot; (inputEncoding) assert_equals: expected &quot;X-MAC-CYRILLIC&quot; but got &quot;x-mac-cyrillic&quot;
+FAIL Name &quot;x-mac-cyrillic&quot; has label &quot;x-mac-ukrainian&quot; (characterSet) assert_equals: expected &quot;X-MAC-CYRILLIC&quot; but got &quot;x-mac-cyrillic&quot;
+FAIL Name &quot;x-mac-cyrillic&quot; has label &quot;x-mac-ukrainian&quot; (inputEncoding) assert_equals: expected &quot;X-MAC-CYRILLIC&quot; but got &quot;x-mac-cyrillic&quot;
+PASS Name &quot;gbk&quot; has label &quot;chinese&quot; (characterSet) 
+PASS Name &quot;gbk&quot; has label &quot;chinese&quot; (inputEncoding) 
+PASS Name &quot;gbk&quot; has label &quot;csgb2312&quot; (characterSet) 
+PASS Name &quot;gbk&quot; has label &quot;csgb2312&quot; (inputEncoding) 
+PASS Name &quot;gbk&quot; has label &quot;csiso58gb231280&quot; (characterSet) 
+PASS Name &quot;gbk&quot; has label &quot;csiso58gb231280&quot; (inputEncoding) 
+PASS Name &quot;gbk&quot; has label &quot;gb2312&quot; (characterSet) 
+PASS Name &quot;gbk&quot; has label &quot;gb2312&quot; (inputEncoding) 
+FAIL Name &quot;gbk&quot; has label &quot;gb_2312&quot; (characterSet) assert_equals: expected &quot;GBK&quot; but got &quot;ISO-8859-1&quot;
+FAIL Name &quot;gbk&quot; has label &quot;gb_2312&quot; (inputEncoding) assert_equals: expected &quot;GBK&quot; but got &quot;ISO-8859-1&quot;
+PASS Name &quot;gbk&quot; has label &quot;gb_2312-80&quot; (characterSet) 
+PASS Name &quot;gbk&quot; has label &quot;gb_2312-80&quot; (inputEncoding) 
+PASS Name &quot;gbk&quot; has label &quot;gbk&quot; (characterSet) 
+PASS Name &quot;gbk&quot; has label &quot;gbk&quot; (inputEncoding) 
+PASS Name &quot;gbk&quot; has label &quot;iso-ir-58&quot; (characterSet) 
+PASS Name &quot;gbk&quot; has label &quot;iso-ir-58&quot; (inputEncoding) 
+PASS Name &quot;gbk&quot; has label &quot;x-gbk&quot; (characterSet) 
+PASS Name &quot;gbk&quot; has label &quot;x-gbk&quot; (inputEncoding) 
+PASS Name &quot;gb18030&quot; has label &quot;gb18030&quot; (characterSet) 
+PASS Name &quot;gb18030&quot; has label &quot;gb18030&quot; (inputEncoding) 
+PASS Name &quot;hz-gb-2312&quot; has label &quot;hz-gb-2312&quot; (characterSet) 
+PASS Name &quot;hz-gb-2312&quot; has label &quot;hz-gb-2312&quot; (inputEncoding) 
+PASS Name &quot;big5&quot; has label &quot;big5&quot; (characterSet) 
+PASS Name &quot;big5&quot; has label &quot;big5&quot; (inputEncoding) 
+FAIL Name &quot;big5&quot; has label &quot;big5-hkscs&quot; (characterSet) assert_equals: expected &quot;Big5&quot; but got &quot;Big5-HKSCS&quot;
+FAIL Name &quot;big5&quot; has label &quot;big5-hkscs&quot; (inputEncoding) assert_equals: expected &quot;Big5&quot; but got &quot;Big5-HKSCS&quot;
+PASS Name &quot;big5&quot; has label &quot;cn-big5&quot; (characterSet) 
+PASS Name &quot;big5&quot; has label &quot;cn-big5&quot; (inputEncoding) 
+PASS Name &quot;big5&quot; has label &quot;csbig5&quot; (characterSet) 
+PASS Name &quot;big5&quot; has label &quot;csbig5&quot; (inputEncoding) 
+PASS Name &quot;big5&quot; has label &quot;x-x-big5&quot; (characterSet) 
+PASS Name &quot;big5&quot; has label &quot;x-x-big5&quot; (inputEncoding) 
+PASS Name &quot;euc-jp&quot; has label &quot;cseucpkdfmtjapanese&quot; (characterSet) 
+PASS Name &quot;euc-jp&quot; has label &quot;cseucpkdfmtjapanese&quot; (inputEncoding) 
+PASS Name &quot;euc-jp&quot; has label &quot;euc-jp&quot; (characterSet) 
+PASS Name &quot;euc-jp&quot; has label &quot;euc-jp&quot; (inputEncoding) 
+PASS Name &quot;euc-jp&quot; has label &quot;x-euc-jp&quot; (characterSet) 
+PASS Name &quot;euc-jp&quot; has label &quot;x-euc-jp&quot; (inputEncoding) 
+PASS Name &quot;iso-2022-jp&quot; has label &quot;csiso2022jp&quot; (characterSet) 
+PASS Name &quot;iso-2022-jp&quot; has label &quot;csiso2022jp&quot; (inputEncoding) 
+PASS Name &quot;iso-2022-jp&quot; has label &quot;iso-2022-jp&quot; (characterSet) 
+PASS Name &quot;iso-2022-jp&quot; has label &quot;iso-2022-jp&quot; (inputEncoding) 
+PASS Name &quot;shift_jis&quot; has label &quot;csshiftjis&quot; (characterSet) 
+PASS Name &quot;shift_jis&quot; has label &quot;csshiftjis&quot; (inputEncoding) 
+PASS Name &quot;shift_jis&quot; has label &quot;ms_kanji&quot; (characterSet) 
+PASS Name &quot;shift_jis&quot; has label &quot;ms_kanji&quot; (inputEncoding) 
+PASS Name &quot;shift_jis&quot; has label &quot;shift-jis&quot; (characterSet) 
+PASS Name &quot;shift_jis&quot; has label &quot;shift-jis&quot; (inputEncoding) 
+PASS Name &quot;shift_jis&quot; has label &quot;shift_jis&quot; (characterSet) 
+PASS Name &quot;shift_jis&quot; has label &quot;shift_jis&quot; (inputEncoding) 
+PASS Name &quot;shift_jis&quot; has label &quot;sjis&quot; (characterSet) 
+PASS Name &quot;shift_jis&quot; has label &quot;sjis&quot; (inputEncoding) 
+PASS Name &quot;shift_jis&quot; has label &quot;windows-31j&quot; (characterSet) 
+PASS Name &quot;shift_jis&quot; has label &quot;windows-31j&quot; (inputEncoding) 
+PASS Name &quot;shift_jis&quot; has label &quot;x-sjis&quot; (characterSet) 
+PASS Name &quot;shift_jis&quot; has label &quot;x-sjis&quot; (inputEncoding) 
+PASS Name &quot;euc-kr&quot; has label &quot;cseuckr&quot; (characterSet) 
+PASS Name &quot;euc-kr&quot; has label &quot;cseuckr&quot; (inputEncoding) 
+PASS Name &quot;euc-kr&quot; has label &quot;csksc56011987&quot; (characterSet) 
+PASS Name &quot;euc-kr&quot; has label &quot;csksc56011987&quot; (inputEncoding) 
+PASS Name &quot;euc-kr&quot; has label &quot;euc-kr&quot; (characterSet) 
+PASS Name &quot;euc-kr&quot; has label &quot;euc-kr&quot; (inputEncoding) 
+PASS Name &quot;euc-kr&quot; has label &quot;iso-ir-149&quot; (characterSet) 
+PASS Name &quot;euc-kr&quot; has label &quot;iso-ir-149&quot; (inputEncoding) 
+PASS Name &quot;euc-kr&quot; has label &quot;korean&quot; (characterSet) 
+PASS Name &quot;euc-kr&quot; has label &quot;korean&quot; (inputEncoding) 
+PASS Name &quot;euc-kr&quot; has label &quot;ks_c_5601-1987&quot; (characterSet) 
+PASS Name &quot;euc-kr&quot; has label &quot;ks_c_5601-1987&quot; (inputEncoding) 
+PASS Name &quot;euc-kr&quot; has label &quot;ks_c_5601-1989&quot; (characterSet) 
+PASS Name &quot;euc-kr&quot; has label &quot;ks_c_5601-1989&quot; (inputEncoding) 
+PASS Name &quot;euc-kr&quot; has label &quot;ksc5601&quot; (characterSet) 
+PASS Name &quot;euc-kr&quot; has label &quot;ksc5601&quot; (inputEncoding) 
+PASS Name &quot;euc-kr&quot; has label &quot;ksc_5601&quot; (characterSet) 
+PASS Name &quot;euc-kr&quot; has label &quot;ksc_5601&quot; (inputEncoding) 
+PASS Name &quot;euc-kr&quot; has label &quot;windows-949&quot; (characterSet) 
+PASS Name &quot;euc-kr&quot; has label &quot;windows-949&quot; (inputEncoding) 
+FAIL Name &quot;replacement&quot; has label &quot;csiso2022kr&quot; (characterSet) assert_equals: expected &quot;REPLACEMENT&quot; but got &quot;ISO-2022-KR&quot;
+FAIL Name &quot;replacement&quot; has label &quot;csiso2022kr&quot; (inputEncoding) assert_equals: expected &quot;REPLACEMENT&quot; but got &quot;ISO-2022-KR&quot;
+FAIL Name &quot;replacement&quot; has label &quot;iso-2022-cn&quot; (characterSet) assert_equals: expected &quot;REPLACEMENT&quot; but got &quot;ISO-2022-CN&quot;
+FAIL Name &quot;replacement&quot; has label &quot;iso-2022-cn&quot; (inputEncoding) assert_equals: expected &quot;REPLACEMENT&quot; but got &quot;ISO-2022-CN&quot;
+FAIL Name &quot;replacement&quot; has label &quot;iso-2022-cn-ext&quot; (characterSet) assert_equals: expected &quot;REPLACEMENT&quot; but got &quot;ISO-2022-CN-EXT&quot;
+FAIL Name &quot;replacement&quot; has label &quot;iso-2022-cn-ext&quot; (inputEncoding) assert_equals: expected &quot;REPLACEMENT&quot; but got &quot;ISO-2022-CN-EXT&quot;
+FAIL Name &quot;replacement&quot; has label &quot;iso-2022-kr&quot; (characterSet) assert_equals: expected &quot;REPLACEMENT&quot; but got &quot;ISO-2022-KR&quot;
+FAIL Name &quot;replacement&quot; has label &quot;iso-2022-kr&quot; (inputEncoding) assert_equals: expected &quot;REPLACEMENT&quot; but got &quot;ISO-2022-KR&quot;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcharacterSetnormalizationhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentcharacterSetnormalizationhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-characterSet-normalization.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-characterSet-normalization.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-characterSet-normalization.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-characterSet-normalization.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,381 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;document.characterSet and inputEncoding normalization tests&lt;/title&gt;
+&lt;link rel=author title=&quot;Aryeh Gregor&quot; href=ayg@aryeh.name&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;style&gt;iframe { display: none }&lt;/style&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+
+// Taken straight from https://encoding.spec.whatwg.org/
+var encodingMap = {
+  &quot;utf-8&quot;: [
+    &quot;unicode-1-1-utf-8&quot;,
+    &quot;utf-8&quot;,
+    &quot;utf8&quot;,
+    // As we use &lt;meta&gt;, utf-16 will map to utf-8 per
+    // https://html.spec.whatwg.org/multipage/#documentEncoding
+    &quot;utf-16&quot;,
+    &quot;utf-16le&quot;,
+    &quot;utf-16be&quot;,
+  ],
+  &quot;ibm866&quot;: [
+    &quot;866&quot;,
+    &quot;cp866&quot;,
+    &quot;csibm866&quot;,
+    &quot;ibm866&quot;,
+  ],
+  &quot;iso-8859-2&quot;: [
+    &quot;csisolatin2&quot;,
+    &quot;iso-8859-2&quot;,
+    &quot;iso-ir-101&quot;,
+    &quot;iso8859-2&quot;,
+    &quot;iso88592&quot;,
+    &quot;iso_8859-2&quot;,
+    &quot;iso_8859-2:1987&quot;,
+    &quot;l2&quot;,
+    &quot;latin2&quot;,
+  ],
+  &quot;iso-8859-3&quot;: [
+    &quot;csisolatin3&quot;,
+    &quot;iso-8859-3&quot;,
+    &quot;iso-ir-109&quot;,
+    &quot;iso8859-3&quot;,
+    &quot;iso88593&quot;,
+    &quot;iso_8859-3&quot;,
+    &quot;iso_8859-3:1988&quot;,
+    &quot;l3&quot;,
+    &quot;latin3&quot;,
+  ],
+  &quot;iso-8859-4&quot;: [
+    &quot;csisolatin4&quot;,
+    &quot;iso-8859-4&quot;,
+    &quot;iso-ir-110&quot;,
+    &quot;iso8859-4&quot;,
+    &quot;iso88594&quot;,
+    &quot;iso_8859-4&quot;,
+    &quot;iso_8859-4:1988&quot;,
+    &quot;l4&quot;,
+    &quot;latin4&quot;,
+  ],
+  &quot;iso-8859-5&quot;: [
+    &quot;csisolatincyrillic&quot;,
+    &quot;cyrillic&quot;,
+    &quot;iso-8859-5&quot;,
+    &quot;iso-ir-144&quot;,
+    &quot;iso8859-5&quot;,
+    &quot;iso88595&quot;,
+    &quot;iso_8859-5&quot;,
+    &quot;iso_8859-5:1988&quot;,
+  ],
+  &quot;iso-8859-6&quot;: [
+    &quot;arabic&quot;,
+    &quot;asmo-708&quot;,
+    &quot;csiso88596e&quot;,
+    &quot;csiso88596i&quot;,
+    &quot;csisolatinarabic&quot;,
+    &quot;ecma-114&quot;,
+    &quot;iso-8859-6&quot;,
+    &quot;iso-8859-6-e&quot;,
+    &quot;iso-8859-6-i&quot;,
+    &quot;iso-ir-127&quot;,
+    &quot;iso8859-6&quot;,
+    &quot;iso88596&quot;,
+    &quot;iso_8859-6&quot;,
+    &quot;iso_8859-6:1987&quot;,
+  ],
+  &quot;iso-8859-7&quot;: [
+    &quot;csisolatingreek&quot;,
+    &quot;ecma-118&quot;,
+    &quot;elot_928&quot;,
+    &quot;greek&quot;,
+    &quot;greek8&quot;,
+    &quot;iso-8859-7&quot;,
+    &quot;iso-ir-126&quot;,
+    &quot;iso8859-7&quot;,
+    &quot;iso88597&quot;,
+    &quot;iso_8859-7&quot;,
+    &quot;iso_8859-7:1987&quot;,
+    &quot;sun_eu_greek&quot;,
+  ],
+  &quot;iso-8859-8&quot;: [
+    &quot;csiso88598e&quot;,
+    &quot;csisolatinhebrew&quot;,
+    &quot;hebrew&quot;,
+    &quot;iso-8859-8&quot;,
+    &quot;iso-8859-8-e&quot;,
+    &quot;iso-ir-138&quot;,
+    &quot;iso8859-8&quot;,
+    &quot;iso88598&quot;,
+    &quot;iso_8859-8&quot;,
+    &quot;iso_8859-8:1988&quot;,
+    &quot;visual&quot;,
+  ],
+  &quot;iso-8859-8-i&quot;: [
+    &quot;csiso88598i&quot;,
+    &quot;iso-8859-8-i&quot;,
+    &quot;logical&quot;,
+  ],
+  &quot;iso-8859-10&quot;: [
+    &quot;csisolatin6&quot;,
+    &quot;iso-8859-10&quot;,
+    &quot;iso-ir-157&quot;,
+    &quot;iso8859-10&quot;,
+    &quot;iso885910&quot;,
+    &quot;l6&quot;,
+    &quot;latin6&quot;,
+  ],
+  &quot;iso-8859-13&quot;: [
+    &quot;iso-8859-13&quot;,
+    &quot;iso8859-13&quot;,
+    &quot;iso885913&quot;,
+  ],
+  &quot;iso-8859-14&quot;: [
+    &quot;iso-8859-14&quot;,
+    &quot;iso8859-14&quot;,
+    &quot;iso885914&quot;,
+  ],
+  &quot;iso-8859-15&quot;: [
+    &quot;csisolatin9&quot;,
+    &quot;iso-8859-15&quot;,
+    &quot;iso8859-15&quot;,
+    &quot;iso885915&quot;,
+    &quot;iso_8859-15&quot;,
+    &quot;l9&quot;,
+  ],
+  &quot;iso-8859-16&quot;: [
+    &quot;iso-8859-16&quot;,
+  ],
+  &quot;koi8-r&quot;: [
+    &quot;cskoi8r&quot;,
+    &quot;koi&quot;,
+    &quot;koi8&quot;,
+    &quot;koi8-r&quot;,
+    &quot;koi8_r&quot;,
+  ],
+  &quot;koi8-u&quot;: [
+    &quot;koi8-u&quot;,
+  ],
+  &quot;macintosh&quot;: [
+    &quot;csmacintosh&quot;,
+    &quot;mac&quot;,
+    &quot;macintosh&quot;,
+    &quot;x-mac-roman&quot;,
+  ],
+  &quot;windows-874&quot;: [
+    &quot;dos-874&quot;,
+    &quot;iso-8859-11&quot;,
+    &quot;iso8859-11&quot;,
+    &quot;iso885911&quot;,
+    &quot;tis-620&quot;,
+    &quot;windows-874&quot;,
+  ],
+  &quot;windows-1250&quot;: [
+    &quot;cp1250&quot;,
+    &quot;windows-1250&quot;,
+    &quot;x-cp1250&quot;,
+  ],
+  &quot;windows-1251&quot;: [
+    &quot;cp1251&quot;,
+    &quot;windows-1251&quot;,
+    &quot;x-cp1251&quot;,
+  ],
+  &quot;windows-1252&quot;: [
+    &quot;ansi_x3.4-1968&quot;,
+    &quot;ascii&quot;,
+    &quot;cp1252&quot;,
+    &quot;cp819&quot;,
+    &quot;csisolatin1&quot;,
+    &quot;ibm819&quot;,
+    &quot;iso-8859-1&quot;,
+    &quot;iso-ir-100&quot;,
+    &quot;iso8859-1&quot;,
+    &quot;iso88591&quot;,
+    &quot;iso_8859-1&quot;,
+    &quot;iso_8859-1:1987&quot;,
+    &quot;l1&quot;,
+    &quot;latin1&quot;,
+    &quot;us-ascii&quot;,
+    &quot;windows-1252&quot;,
+    &quot;x-cp1252&quot;,
+    // As we use &lt;meta&gt;, x-user-defined will map to windows-1252 per
+    // https://html.spec.whatwg.org/multipage/#documentEncoding
+    &quot;x-user-defined&quot;
+  ],
+  &quot;windows-1253&quot;: [
+    &quot;cp1253&quot;,
+    &quot;windows-1253&quot;,
+    &quot;x-cp1253&quot;,
+  ],
+  &quot;windows-1254&quot;: [
+    &quot;cp1254&quot;,
+    &quot;csisolatin5&quot;,
+    &quot;iso-8859-9&quot;,
+    &quot;iso-ir-148&quot;,
+    &quot;iso8859-9&quot;,
+    &quot;iso88599&quot;,
+    &quot;iso_8859-9&quot;,
+    &quot;iso_8859-9:1989&quot;,
+    &quot;l5&quot;,
+    &quot;latin5&quot;,
+    &quot;windows-1254&quot;,
+    &quot;x-cp1254&quot;,
+  ],
+  &quot;windows-1255&quot;: [
+    &quot;cp1255&quot;,
+    &quot;windows-1255&quot;,
+    &quot;x-cp1255&quot;,
+  ],
+  &quot;windows-1256&quot;: [
+    &quot;cp1256&quot;,
+    &quot;windows-1256&quot;,
+    &quot;x-cp1256&quot;,
+  ],
+  &quot;windows-1257&quot;: [
+    &quot;cp1257&quot;,
+    &quot;windows-1257&quot;,
+    &quot;x-cp1257&quot;,
+  ],
+  &quot;windows-1258&quot;: [
+    &quot;cp1258&quot;,
+    &quot;windows-1258&quot;,
+    &quot;x-cp1258&quot;,
+  ],
+  &quot;x-mac-cyrillic&quot;: [
+    &quot;x-mac-cyrillic&quot;,
+    &quot;x-mac-ukrainian&quot;,
+  ],
+  &quot;gbk&quot;: [
+    &quot;chinese&quot;,
+    &quot;csgb2312&quot;,
+    &quot;csiso58gb231280&quot;,
+    &quot;gb2312&quot;,
+    &quot;gb_2312&quot;,
+    &quot;gb_2312-80&quot;,
+    &quot;gbk&quot;,
+    &quot;iso-ir-58&quot;,
+    &quot;x-gbk&quot;,
+  ],
+  &quot;gb18030&quot;: [
+    &quot;gb18030&quot;,
+  ],
+  &quot;hz-gb-2312&quot;: [
+    &quot;hz-gb-2312&quot;,
+  ],
+  &quot;big5&quot;: [
+    &quot;big5&quot;,
+    &quot;big5-hkscs&quot;,
+    &quot;cn-big5&quot;,
+    &quot;csbig5&quot;,
+    &quot;x-x-big5&quot;,
+  ],
+  &quot;euc-jp&quot;: [
+    &quot;cseucpkdfmtjapanese&quot;,
+    &quot;euc-jp&quot;,
+    &quot;x-euc-jp&quot;,
+  ],
+  &quot;iso-2022-jp&quot;: [
+    &quot;csiso2022jp&quot;,
+    &quot;iso-2022-jp&quot;,
+  ],
+  &quot;shift_jis&quot;: [
+    &quot;csshiftjis&quot;,
+    &quot;ms_kanji&quot;,
+    &quot;shift-jis&quot;,
+    &quot;shift_jis&quot;,
+    &quot;sjis&quot;,
+    &quot;windows-31j&quot;,
+    &quot;x-sjis&quot;,
+  ],
+  &quot;euc-kr&quot;: [
+    &quot;cseuckr&quot;,
+    &quot;csksc56011987&quot;,
+    &quot;euc-kr&quot;,
+    &quot;iso-ir-149&quot;,
+    &quot;korean&quot;,
+    &quot;ks_c_5601-1987&quot;,
+    &quot;ks_c_5601-1989&quot;,
+    &quot;ksc5601&quot;,
+    &quot;ksc_5601&quot;,
+    &quot;windows-949&quot;,
+  ],
+  &quot;replacement&quot;: [
+    &quot;csiso2022kr&quot;,
+    &quot;iso-2022-cn&quot;,
+    &quot;iso-2022-cn-ext&quot;,
+    &quot;iso-2022-kr&quot;,
+  ],
+};
+
+// Add spaces and mix up case
+Object.keys(encodingMap).forEach(function(name) {
+  var lower = encodingMap[name];
+  var upper = encodingMap[name].map(function(s) { return s.toUpperCase() });
+  var mixed = encodingMap[name].map(function(s) {
+    var ret = &quot;&quot;;
+    for (var i = 0; i &lt; s.length; i += 2) {
+      ret += s[i].toUpperCase();
+      if (i + 1 &lt; s.length) {
+        ret += s[i + 1];
+      }
+    }
+    return ret;
+  });
+  var spacey = encodingMap[name].map(function(s) {
+    return &quot; \t\n\f\r&quot; + s + &quot; \t\n\f\r&quot;;
+  });
+  encodingMap[name] = [];
+  for (var i = 0; i &lt; lower.length; i++) {
+    encodingMap[name].push(lower[i]);
+    /*
+    if (lower[i] != upper[i]) {
+      encodingMap[name].push(upper[i]);
+    }
+    if (lower[i] != mixed[i] &amp;&amp; upper[i] != mixed[i]) {
+      encodingMap[name].push(mixed[i]);
+    }
+    encodingMap[name].push(spacey[i]);
+    */
+  }
+});
+
+function expected_case(encoding_label) {
+  if (encoding_label === 'big5') {
+    return 'Big5';
+  }
+  if (encoding_label === 'shift_jis') {
+    return 'Shift_JIS';
+  }
+  return encoding_label.toUpperCase();
+}
+
+Object.keys(encodingMap).forEach(function(name) {
+  encodingMap[name].forEach(function(label) {
+    var iframe = document.createElement(&quot;iframe&quot;);
+    var t = async_test(&quot;Name &quot; + format_value(name) +
+                       &quot; has label &quot; + format_value(label) + &quot; (characterSet)&quot;);
+    var t2 = async_test(&quot;Name &quot; + format_value(name) +
+                       &quot; has label &quot; + format_value(label) + &quot; (inputEncoding)&quot;);
+    /*
+    iframe.src = &quot;data:text/html,&lt;!doctype html&gt;&quot; +
+                 '&lt;meta charset=&quot;' + label + '&quot;&gt;';
+    */
+    iframe.src = &quot;encoding.py?label=&quot; + label;
+    iframe.onload = function() {
+      t.step(function() {
+        assert_equals(iframe.contentDocument.characterSet, expected_case(name));
+      });
+      t2.step(function() {
+        assert_equals(iframe.contentDocument.inputEncoding, expected_case(name));
+      });
+      document.body.removeChild(iframe);
+      t.done();
+      t2.done();
+    };
+    document.body.appendChild(iframe);
+  });
+});
+&lt;/script&gt;
+&lt;!-- vim: set expandtab tabstop=2 shiftwidth=2: --&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentconstructorexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentconstructorexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-constructor-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-constructor-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-constructor-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-constructor-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+FAIL new Document(): interfaces assert_false: Should not be an XMLDocument expected false got true
+PASS new Document(): children 
+FAIL new Document(): metadata assert_equals: expected &quot;about:blank&quot; but got &quot;&quot;
+FAIL new Document(): URL parsing assert_equals: expected &quot;http://example.org/?%C3%A4&quot; but got &quot;http://example.org/?ä&quot;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentconstructorhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentconstructorhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-constructor.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-constructor.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-constructor.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-constructor.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=windows-1252&gt;
+&lt;!-- Using windows-1252 to ensure that new Document() doesn't inherit utf-8
+     from the parent document. --&gt;
+&lt;title&gt;Document constructor&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-document&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  var doc = new Document();
+  assert_true(doc instanceof Node, &quot;Should be a Node&quot;);
+  assert_true(doc instanceof Document, &quot;Should be a Document&quot;);
+  assert_false(doc instanceof XMLDocument, &quot;Should not be an XMLDocument&quot;);
+  assert_equals(Object.getPrototypeOf(doc), Document.prototype,
+                &quot;Document should be the primary interface&quot;);
+}, &quot;new Document(): interfaces&quot;)
+
+test(function() {
+  var doc = new Document();
+  assert_equals(doc.firstChild, null, &quot;firstChild&quot;);
+  assert_equals(doc.lastChild, null, &quot;lastChild&quot;);
+  assert_equals(doc.doctype, null, &quot;doctype&quot;);
+  assert_equals(doc.documentElement, null, &quot;documentElement&quot;);
+  assert_array_equals(doc.childNodes, [], &quot;childNodes&quot;);
+}, &quot;new Document(): children&quot;)
+
+test(function() {
+  var doc = new Document();
+  assert_equals(doc.URL, &quot;about:blank&quot;);
+  assert_equals(doc.documentURI, &quot;about:blank&quot;);
+  assert_equals(doc.compatMode, &quot;CSS1Compat&quot;);
+  assert_equals(doc.characterSet, &quot;UTF-8&quot;);
+  assert_equals(doc.inputEncoding, &quot;UTF-8&quot;);
+  assert_equals(doc.contentType, &quot;application/xml&quot;);
+  assert_equals(doc.createElement(&quot;DIV&quot;).localName, &quot;DIV&quot;);
+}, &quot;new Document(): metadata&quot;)
+
+test(function() {
+  var doc = new Document();
+  var a = doc.createElement(&quot;a&quot;);
+  // In UTF-8: 0xC3 0xA4
+  a.href = &quot;http://example.org/?\u00E4&quot;;
+  assert_equals(a.href, &quot;http://example.org/?%C3%A4&quot;);
+}, &quot;new Document(): URL parsing&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_bmpexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_bmp-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_bmp-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_bmp-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS BMP document.contentType === 'image/bmp' 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_bmphtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_bmp.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_bmp.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_bmp.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;BMP document.contentType === 'image/bmp'&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;iframe style=&quot;display:none&quot;&gt;&lt;/iframe&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script&gt;
+async_test(function() {
+  var iframe = document.getElementsByTagName('iframe')[0];
+  iframe.addEventListener('load', this.step_func_done(function() {
+    assert_equals(iframe.contentDocument.contentType, &quot;image/bmp&quot;);
+  }), false);
+  iframe.src = &quot;../resources/t.bmp&quot;;
+});
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_cssexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_css-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_css-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_css-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS CSS document.contentType === 'text/css' 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_csshtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_css.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_css.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_css.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;CSS document.contentType === 'text/css'&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;iframe style=&quot;display:none&quot;&gt;&lt;/iframe&gt;
+&lt;script&gt;
+async_test(function() {
+  var iframe = document.getElementsByTagName('iframe')[0];
+  iframe.addEventListener('load', this.step_func_done(function() {
+    assert_equals(iframe.contentDocument.contentType, &quot;text/css&quot;);
+  }), false);
+  iframe.src = &quot;../resources/style.css&quot;;
+});
+&lt;/script&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_datauri_01expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_datauri_01-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_datauri_01-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_datauri_01-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 799: Blocked a frame with origin &quot;http://localhost:8800&quot; from accessing a frame with origin &quot;null&quot;.  The frame requesting access has a protocol of &quot;http&quot;, the frame being accessed has a protocol of &quot;data&quot;. Protocols must match.
+
+
+FAIL Data URI document.contentType === 'text/plain' when data URI MIME type is not set null is not an object (evaluating 'iframe.contentDocument.contentType')
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_datauri_01html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_datauri_01.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_datauri_01.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_datauri_01.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;Data URI document.contentType === 'text/plain' when data URI MIME type is not set&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;iframe style=&quot;display:none&quot;&gt;&lt;/iframe&gt;
+&lt;script&gt;
+async_test(function() {
+  var iframe = document.getElementsByTagName('iframe')[0];
+  iframe.addEventListener('load', this.step_func_done(function() {
+    assert_equals(iframe.contentDocument.contentType, &quot;text/plain&quot;);
+  }), false);
+  iframe.src = &quot;data:;,&lt;!DOCTYPE html&gt;&quot;;
+});
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_datauri_02expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_datauri_02-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_datauri_02-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_datauri_02-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+CONSOLE MESSAGE: line 799: Blocked a frame with origin &quot;http://localhost:8800&quot; from accessing a frame with origin &quot;null&quot;.  The frame requesting access has a protocol of &quot;http&quot;, the frame being accessed has a protocol of &quot;data&quot;. Protocols must match.
+
+
+FAIL Data URI document.contentType === 'text/html' when data URI MIME type is set null is not an object (evaluating 'iframe.contentDocument.contentType')
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_datauri_02html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_datauri_02.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_datauri_02.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_datauri_02.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;Data URI document.contentType === 'text/html' when data URI MIME type is set&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;iframe style=&quot;display:none&quot;&gt;&lt;/iframe&gt;
+&lt;script&gt;
+async_test(function() {
+  var iframe = document.getElementsByTagName('iframe')[0];
+  iframe.addEventListener('load', this.step_func_done(function() {
+    assert_equals(iframe.contentDocument.contentType, &quot;text/html&quot;);
+  }), false);
+  iframe.src = &quot;data:text/html;charset=utf-8,&lt;!DOCTYPE html&gt;&quot;;
+});
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_gifexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_gif-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_gif-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_gif-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS GIF document.contentType === 'image/gif' 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_gifhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_gif.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_gif.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_gif.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;GIF document.contentType === 'image/gif'&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;iframe style=&quot;display:none&quot;&gt;&lt;/iframe&gt;
+&lt;script&gt;
+async_test(function() {
+  var iframe = document.getElementsByTagName('iframe')[0];
+  iframe.addEventListener('load', this.step_func_done(function() {
+    assert_equals(iframe.contentDocument.contentType, &quot;image/gif&quot;);
+  }), false);
+  iframe.src = &quot;../resources/t.gif&quot;;
+});
+&lt;/script&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_htmlexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_html-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_html-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_html-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS HTM document.contentType === 'text/html' 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_htmlhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_html.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_html.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_html.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;HTM document.contentType === 'text/html'&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;iframe style=&quot;display:none&quot;&gt;&lt;/iframe&gt;
+&lt;script&gt;
+async_test(function() {
+  var iframe = document.getElementsByTagName('iframe')[0];
+  iframe.addEventListener('load', this.step_func_done(function() {
+    assert_equals(iframe.contentDocument.contentType, &quot;text/html&quot;);
+  }), false);
+  iframe.src = &quot;../resources/blob.htm&quot;;
+});
+&lt;/script&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_javascripturiexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_javascripturi-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_javascripturi-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_javascripturi-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Javascript URI document.contentType === 'text/html' 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_javascripturihtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_javascripturi.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_javascripturi.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_javascripturi.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;Javascript URI document.contentType === 'text/html'&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;iframe style=&quot;display:none&quot;&gt;&lt;/iframe&gt;
+&lt;script&gt;
+async_test(function() {
+  var iframe = document.getElementsByTagName('iframe')[0];
+  iframe.addEventListener('load', this.step_func_done(function() {
+    assert_equals(iframe.contentDocument.contentType, &quot;text/html&quot;);
+    assert_equals(iframe.contentDocument.documentElement.textContent, &quot;text/html&quot;);
+  }), false);
+  iframe.src = &quot;javascript:document.contentType&quot;;
+});
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_jpgexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_jpg-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_jpg-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_jpg-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS JPG document.contentType === 'image/jpeg' 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_jpghtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_jpg.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_jpg.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_jpg.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;JPG document.contentType === 'image/jpeg'&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;iframe style=&quot;display:none&quot;&gt;&lt;/iframe&gt;
+&lt;script&gt;
+async_test(function() {
+  var iframe = document.getElementsByTagName('iframe')[0];
+  iframe.addEventListener('load', this.step_func_done(function() {
+    assert_equals(iframe.contentDocument.contentType, &quot;image/jpeg&quot;);
+  }), false);
+  iframe.src = &quot;../resources/t.jpg&quot;;
+});
+&lt;/script&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_mimeheader_01expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_mimeheader_01-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_mimeheader_01-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_mimeheader_01-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Custom document.contentType === 'text/xml' when explicitly set to this value 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_mimeheader_01html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_mimeheader_01.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_mimeheader_01.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_mimeheader_01.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;Custom document.contentType === 'text/xml' when explicitly set to this value&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;iframe style=&quot;display:none&quot;&gt;&lt;/iframe&gt;
+&lt;script&gt;
+async_test(function() {
+  var iframe = document.getElementsByTagName('iframe')[0];
+  iframe.addEventListener('load', this.step_func_done(function() {
+    assert_equals(iframe.contentDocument.contentType, &quot;text/xml&quot;);
+  }), false);
+  iframe.src = &quot;../support/contenttype_setter.py?type=text&amp;subtype=xml&quot;;
+});
+&lt;/script&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_mimeheader_02expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_mimeheader_02-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_mimeheader_02-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_mimeheader_02-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Custom document.contentType === 'text/html' when explicitly set to this value and an attempt is made to override this value in an HTML meta header 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_mimeheader_02html"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_mimeheader_02.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_mimeheader_02.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_mimeheader_02.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;Custom document.contentType === 'text/html' when explicitly set to this value and an attempt is made to override this value in an HTML meta header&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;iframe style=&quot;display:none&quot;&gt;&lt;/iframe&gt;
+&lt;script&gt;
+async_test(function() {
+  var iframe = document.getElementsByTagName('iframe')[0];
+  iframe.addEventListener('load', this.step_func_done(function() {
+    assert_equals(iframe.contentDocument.contentType, &quot;text/html&quot;);
+  }), false);
+  iframe.src = &quot;../support/contenttype_setter.py?type=text&amp;subtype=html&amp;mimeHead=text%2Fxml&quot;;
+});
+&lt;/script&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_pngexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_png-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_png-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_png-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS PNG document.contentType === 'image/png' 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_pnghtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_png.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_png.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_png.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;PNG document.contentType === 'image/png'&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;iframe style=&quot;display:none&quot;&gt;&lt;/iframe&gt;
+&lt;script&gt;
+async_test(function() {
+  var iframe = document.getElementsByTagName('iframe')[0];
+  iframe.addEventListener('load', this.step_func_done(function() {
+    assert_equals(iframe.contentDocument.contentType, &quot;image/png&quot;);
+  }), false);
+  iframe.src = &quot;../resources/t.png&quot;;
+});
+&lt;/script&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_txtexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_txt-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_txt-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_txt-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS TXT document.contentType === 'text/plain' 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_txthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_txt.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_txt.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_txt.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;TXT document.contentType === 'text/plain'&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;iframe style=&quot;display:none&quot;&gt;&lt;/iframe&gt;
+&lt;script&gt;
+async_test(function() {
+  var iframe = document.getElementsByTagName('iframe')[0];
+  iframe.addEventListener('load', this.step_func_done(function() {
+    assert_equals(iframe.contentDocument.contentType, &quot;text/plain&quot;);
+  }), false);
+  iframe.src = &quot;../resources/blob.txt&quot;;
+});
+&lt;/script&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_xmlexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_xml-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_xml-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_xml-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS XML document.contentType === 'application/xml' 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecontenttype_xmlhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_xml.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_xml.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/contenttype_xml.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;XML document.contentType === 'application/xml'&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;iframe style=&quot;display:none&quot;&gt;&lt;/iframe&gt;
+&lt;script&gt;
+async_test(function() {
+  var iframe = document.getElementsByTagName('iframe')[0];
+  iframe.addEventListener('load', this.step_func_done(function() {
+    assert_equals(iframe.contentDocument.contentType, &quot;application/xml&quot;);
+  }), false);
+  iframe.src = &quot;../resources/blob.xml&quot;;
+});
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecreateDocumentexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/createDocument-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/createDocument-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/createDocument-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+FAIL document.implementation.createDocument: document.contentType === 'application/xml' assert_equals: expected &quot;application/xml&quot; but got &quot;application/xhtml+xml&quot;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecreateDocumenthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/createDocument.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/createDocument.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/createDocument.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;document.implementation.createDocument: document.contentType === 'application/xml'&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  var doc = document.implementation.createDocument(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;html&quot;, null);
+  assert_equals(doc.contentType, &quot;application/xml&quot;);
+});
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecreateHTMLDocumentexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/createHTMLDocument-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/createHTMLDocument-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/createHTMLDocument-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS document.implementation.createHTMLDocument: document.contentType === 'text/html' 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypecreateHTMLDocumenthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/createHTMLDocument.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/createHTMLDocument.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/createHTMLDocument.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;document.implementation.createHTMLDocument: document.contentType === 'text/html'&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  var doc = document.implementation.createHTMLDocument(&quot;test&quot;);
+  assert_equals(doc.contentType, &quot;text/html&quot;);
+});
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypexhr_responseType_documentexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/xhr_responseType_document-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/xhr_responseType_document-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/xhr_responseType_document-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS XHR - retrieve HTML document: document.contentType === 'application/xml' 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypecontentTypexhr_responseType_documenthtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/xhr_responseType_document.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/xhr_responseType_document.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/contentType/xhr_responseType_document.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;XHR - retrieve HTML document: document.contentType === 'application/xml'&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script&gt;
+async_test(function() {
+  var xhr = new XMLHttpRequest();
+  xhr.open(&quot;GET&quot;, &quot;../resources/blob.xml&quot;);
+  xhr.responseType = &quot;document&quot;;
+  xhr.onload = this.step_func_done(function(response) {
+    assert_equals(xhr.readyState, 4);
+    assert_equals(xhr.status, 200);
+    assert_equals(xhr.responseXML.contentType, &quot;application/xml&quot;);
+  });
+  xhr.send(null);
+});
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTyperesourcesblobhtm"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/blob.htm (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/blob.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/blob.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTyperesourcesblobtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/blob.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/blob.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/blob.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTyperesourcesblobxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/blob.xml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/blob.xml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/blob.xml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&gt;
+&lt;blob&gt;aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa&lt;/blob&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTyperesourceslibjs"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/lib.js (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/lib.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/lib.js        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+var t;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTyperesourcesstylecss"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/style.css (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/style.css                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/style.css        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+.unknown
+{
+  background-color:lightblue;
+}
+.pass
+{
+  background-color:lime;
+}
+.fail
+{
+  background-color:red;
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTyperesourcestbmp"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/t.bmp (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/t.bmp                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/t.bmp        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+BMfu6(dd0u  \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF
 F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x
 FF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\
 xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF
 F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x
 FF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\
 xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF
 F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x
 FF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\
 xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF
 F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x
 FF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\
 xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF
 F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x
 FF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\
 xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF
 F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x
 FF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\
 xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF
 F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x
 FF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\
 xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF
 F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x
 FF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\
 xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF
 F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x
 FF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\
 xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xF
 F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x
 FF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\
 xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTyperesourcestgif"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/t.gif (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/t.gif                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/t.gif        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+GIF87add\x80\xFF\xFF\xFF\xFF,dds\x84\x8F\xA9\xCB\xED\xA3\x9C\xB4ڋ\xB3޼\xFB\x86\xE2H\x96扦\xEAʶ\xEE \xC7\xF2L\xD7\xF6\x8D\xE7\xFA\xCE\xF7\xFE
+\x87Ģ\xF1\x88L*\x97̦\xF3        \x8DJ\xA7Ԫ\xF5\x8A\xCDj\xB7ܮ\xF7 \x8B\xC7\xE4\xB2\xF9\x8CN\xAB\xD7\xEC\xB6\xFB+\x8F\xCB\xE7\xF4\xBA\xFD\x8E\xCF\xEB\xF7\xFC\xBE\xFF(8HXhx\x88\x98\xA8\xB8\xC8\xD8\xE8\xF8iX;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTyperesourcestjpg"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/t.jpg (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/t.jpg                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/t.jpg        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,2 @@
</span><ins>+\xFF\xD8\xFF\xE0JFIFHH\xFF\xDBC\xFF\xDBC\xFF\xC0dd&quot;\xFF\xC4\xFF\xC4\xFF\xC4
+\xFF\xC4\xFF\xDA ?\xACJ\xFA)\xC0\xFF\xD9
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTyperesourcestpng"></a>
<div class="binary"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/t.png</h4>
<pre class="diff"><span>
<span class="cx">(Binary files differ)
</span></span></pre></div>
<span class="cx">Property changes on: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/resources/t.png
</span><span class="cx">___________________________________________________________________
</span><a id="svnmimetype"></a>
<div class="addfile"><h4>Added: svn:mime-type</h4></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcontentTypesupportcontenttype_setterpy"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/support/contenttype_setter.py (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/support/contenttype_setter.py                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-contentType/support/contenttype_setter.py        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+def main(request, response):
+    type = request.GET.first(&quot;type&quot;, None)
+    subtype = request.GET.first(&quot;subtype&quot;, None)
+    if type and subtype:
+        response.headers[&quot;Content-Type&quot;] = type + &quot;/&quot; + subtype
+
+    removeContentType = request.GET.first(&quot;removeContentType&quot;, None)
+    if removeContentType:
+        try:
+            del response.headers[&quot;Content-Type&quot;]
+        except KeyError:
+            pass
+
+    content = '&lt;head&gt;'
+    mimeHead = request.GET.first(&quot;mime&quot;, None);
+    if mimeHead:
+        content += '&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;%s; charset=utf-8&quot;/&gt;' % mimeHead
+    content += &quot;&lt;/head&gt;&quot;
+
+    return content
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateAttributeexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentcreateAttributeexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createAttribute-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-createAttribute-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createAttribute-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createAttribute-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+
+PASS createAttribute(&quot;&quot;) 
+PASS createAttribute(&quot;invalid^Name&quot;) 
+PASS createAttribute(&quot;\\&quot;) 
+PASS createAttribute(&quot;'&quot;) 
+PASS createAttribute(&quot;\&quot;&quot;) 
+PASS createAttribute(&quot;0&quot;) 
+PASS createAttribute(&quot;0:a&quot;) 
+PASS createAttribute(&quot;title&quot;) 
+PASS createAttribute(&quot;TITLE&quot;) 
+PASS createAttribute(null) 
+PASS createAttribute(undefined) 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateAttributehtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentcreateAttributehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createAttribute.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-createAttribute.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createAttribute.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createAttribute.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Document.createAttribute&lt;/title&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;script src=attributes.js&gt;&lt;/script&gt;
+&lt;script src=productions.js&gt;&lt;/script&gt;
+&lt;div id=log&gt;
+&lt;script&gt;
+invalid_names.forEach(function(name) {
+  test(function() {
+    assert_throws(&quot;INVALID_CHARACTER_ERR&quot;, function() {
+      document.createAttribute(name, &quot;test&quot;);
+    });
+  }, &quot;createAttribute(&quot; + format_value(name) + &quot;)&quot;);
+});
+
+var tests = [&quot;title&quot;, &quot;TITLE&quot;, null, undefined];
+tests.forEach(function(name) {
+  test(function() {
+    var attribute = document.createAttribute(name);
+    attr_is(attribute, &quot;&quot;, String(name), null, null, String(name));
+    assert_equals(attribute.ownerElement, null);
+  }, &quot;createAttribute(&quot; + format_value(name) + &quot;)&quot;);
+});
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateCommentcreateTextNodejsfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentcreateCommentcreateTextNodejs"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createComment-createTextNode.js (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-createComment-createTextNode.js) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createComment-createTextNode.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createComment-createTextNode.js        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+function test_create(method, iface, nodeType, nodeName) {
+  [&quot;\u000b&quot;, &quot;a -- b&quot;, &quot;a-&quot;, &quot;-b&quot;, null, undefined].forEach(function(value) {
+    test(function() {
+      var c = document[method](value);
+      var expected = String(value);
+      assert_true(c instanceof iface);
+      assert_true(c instanceof CharacterData);
+      assert_true(c instanceof Node);
+      assert_equals(c.ownerDocument, document);
+      assert_equals(c.data, expected, &quot;data&quot;);
+      assert_equals(c.nodeValue, expected, &quot;nodeValue&quot;);
+      assert_equals(c.textContent, expected, &quot;textContent&quot;);
+      assert_equals(c.length, expected.length);
+      assert_equals(c.nodeType, nodeType);
+      assert_equals(c.nodeName, nodeName);
+      assert_equals(c.hasChildNodes(), false);
+      assert_equals(c.childNodes.length, 0);
+      assert_equals(c.firstChild, null);
+      assert_equals(c.lastChild, null);
+    }, method + &quot;(&quot; + format_value(value) + &quot;)&quot;);
+  });
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateCommentexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentcreateCommentexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createComment-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-createComment-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createComment-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createComment-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+
+PASS createComment(&quot;\v&quot;) 
+PASS createComment(&quot;a -- b&quot;) 
+PASS createComment(&quot;a-&quot;) 
+PASS createComment(&quot;-b&quot;) 
+PASS createComment(null) 
+PASS createComment(undefined) 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateCommenthtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentcreateCommenthtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createComment.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-createComment.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createComment.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createComment.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Document.createComment&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-document-createcomment&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-node-ownerdocument&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-characterdata-data&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-node-nodevalue&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-node-textcontent&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-characterdata-length&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-node-nodetype&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-node-haschildnodes&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-node-childnodes&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-node-firstchild&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-node-lastchild&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;Document-createComment-createTextNode.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+test_create(&quot;createComment&quot;, Comment, 8, &quot;#comment&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateElementexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentcreateElementexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElement-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-createElement-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElement-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElement-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,38 @@
</span><ins>+
+PASS Document.createElement 
+PASS createElement(undefined) 
+FAIL createElement(null) InvalidCharacterError: DOM Exception 5
+PASS createElement(&quot;foo&quot;) 
+PASS createElement(&quot;f1oo&quot;) 
+PASS createElement(&quot;foo1&quot;) 
+PASS createElement(&quot;f̀oo&quot;) 
+PASS createElement(&quot;foò&quot;) 
+PASS createElement(&quot;:foo&quot;) 
+PASS createElement(&quot;f:oo&quot;) 
+PASS createElement(&quot;foo:&quot;) 
+PASS createElement(&quot;xml&quot;) 
+PASS createElement(&quot;xmlns&quot;) 
+PASS createElement(&quot;xmlfoo&quot;) 
+PASS createElement(&quot;xml:foo&quot;) 
+PASS createElement(&quot;xmlns:foo&quot;) 
+PASS createElement(&quot;xmlfoo:bar&quot;) 
+PASS createElement(&quot;svg&quot;) 
+PASS createElement(&quot;math&quot;) 
+PASS createElement(&quot;FOO&quot;) 
+FAIL createElement(&quot;marK&quot;) assert_equals: expected &quot;marK&quot; but got &quot;mark&quot;
+FAIL createElement(&quot;İnput&quot;) assert_equals: expected &quot;İnput&quot; but got &quot;i̇nput&quot;
+FAIL createElement(&quot;ınput&quot;) assert_equals: expected &quot;ıNPUT&quot; but got &quot;INPUT&quot;
+PASS createElement(&quot;&quot;) 
+PASS createElement(&quot;1foo&quot;) 
+PASS createElement(&quot;̀foo&quot;) 
+PASS createElement(&quot;}foo&quot;) 
+PASS createElement(&quot;f}oo&quot;) 
+PASS createElement(&quot;foo}&quot;) 
+PASS createElement(&quot;\x{FFFF}foo&quot;) 
+PASS createElement(&quot;f\x{FFFF}oo&quot;) 
+PASS createElement(&quot;foo\x{FFFF}&quot;) 
+PASS createElement(&quot;&lt;foo&quot;) 
+PASS createElement(&quot;foo&gt;&quot;) 
+PASS createElement(&quot;&lt;foo&gt;&quot;) 
+PASS createElement(&quot;f&lt;oo&quot;) 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateElementnamespaceexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentcreateElementnamespaceexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElement-namespace-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-createElement-namespace-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElement-namespace-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElement-namespace-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,48 @@
</span><ins>+
+PASS Created element's namespace in current document 
+PASS Created element's namespace in created HTML document 
+PASS Created element's namespace in created XML document 
+FAIL Created element's namespace in created XHTML document assert_equals: Wrong MIME type -- incorrect server config? expected &quot;application/xml&quot; but got &quot;application/xhtml+xml&quot;
+FAIL Created element's namespace in created SVG document assert_equals: Wrong MIME type -- incorrect server config? expected &quot;application/xml&quot; but got &quot;image/svg+xml&quot;
+PASS Created element's namespace in created MathML document 
+PASS Created element's namespace in empty.html 
+PASS Created element's namespace in empty.xhtml 
+PASS Created element's namespace in empty.xml 
+PASS Created element's namespace in empty.svg 
+PASS Created element's namespace in minimal_html.html 
+PASS Created element's namespace in minimal_html.xhtml 
+PASS Created element's namespace in minimal_html.xml 
+PASS Created element's namespace in minimal_html.svg 
+PASS Created element's namespace in xhtml.html 
+PASS Created element's namespace in xhtml.xhtml 
+PASS Created element's namespace in xhtml.xml 
+PASS Created element's namespace in xhtml.svg 
+PASS Created element's namespace in svg.html 
+PASS Created element's namespace in svg.xhtml 
+PASS Created element's namespace in svg.xml 
+PASS Created element's namespace in svg.svg 
+PASS Created element's namespace in mathml.html 
+PASS Created element's namespace in mathml.xhtml 
+PASS Created element's namespace in mathml.xml 
+PASS Created element's namespace in mathml.svg 
+PASS Created element's namespace in bare_xhtml.html 
+PASS Created element's namespace in bare_xhtml.xhtml 
+PASS Created element's namespace in bare_xhtml.xml 
+PASS Created element's namespace in bare_xhtml.svg 
+PASS Created element's namespace in bare_svg.html 
+PASS Created element's namespace in bare_svg.xhtml 
+PASS Created element's namespace in bare_svg.xml 
+PASS Created element's namespace in bare_svg.svg 
+PASS Created element's namespace in bare_mathml.html 
+PASS Created element's namespace in bare_mathml.xhtml 
+PASS Created element's namespace in bare_mathml.xml 
+PASS Created element's namespace in bare_mathml.svg 
+PASS Created element's namespace in xhtml_ns_removed.html 
+PASS Created element's namespace in xhtml_ns_removed.xhtml 
+PASS Created element's namespace in xhtml_ns_removed.xml 
+PASS Created element's namespace in xhtml_ns_removed.svg 
+PASS Created element's namespace in xhtml_ns_changed.html 
+PASS Created element's namespace in xhtml_ns_changed.xhtml 
+PASS Created element's namespace in xhtml_ns_changed.xml 
+PASS Created element's namespace in xhtml_ns_changed.svg 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateElementnamespacehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElement-namespace.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElement-namespace.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElement-namespace.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,103 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;document.createElement() namespace tests&lt;/title&gt;
+&lt;link rel=author title=&quot;Aryeh Gregor&quot; href=ayg@aryeh.name&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+/**
+ * This tests the namespace of elements created by the Document interface's
+ * createElement() method.  See bug:
+ * https://www.w3.org/Bugs/Public/show_bug.cgi?id=19431
+ */
+
+/**
+ * Test that an element created using the Document object doc has the namespace
+ * that would be expected for the given contentType.
+ */
+function testDoc(doc, contentType) {
+  // WebKit doesn't support document.contentType, so they don't get this sanity
+  // check :(
+  if (doc.contentType !== undefined) {
+    assert_equals(doc.contentType, contentType,
+                  &quot;Wrong MIME type -- incorrect server config?&quot;);
+  }
+
+  var expectedNamespace = contentType == &quot;text/html&quot; ||
+                          contentType == &quot;application/xhtml+xml&quot;
+                          ? &quot;http://www.w3.org/1999/xhtml&quot; : null;
+
+  assert_equals(doc.createElement(&quot;x&quot;).namespaceURI, expectedNamespace);
+}
+
+// First test various objects we create in JS
+test(function() {
+  testDoc(document, &quot;text/html&quot;)
+}, &quot;Created element's namespace in current document&quot;);
+test(function() {
+  testDoc(document.implementation.createHTMLDocument(&quot;&quot;), &quot;text/html&quot;);
+}, &quot;Created element's namespace in created HTML document&quot;);
+test(function() {
+  testDoc(document.implementation.createDocument(null, &quot;&quot;, null),
+          &quot;application/xml&quot;);
+}, &quot;Created element's namespace in created XML document&quot;);
+test(function() {
+  testDoc(document.implementation.createDocument(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;html&quot;, null),
+          &quot;application/xml&quot;);
+}, &quot;Created element's namespace in created XHTML document&quot;);
+test(function() {
+  testDoc(document.implementation.createDocument(&quot;http://www.w3.org/2000/svg&quot;, &quot;svg&quot;, null),
+          &quot;application/xml&quot;);
+}, &quot;Created element's namespace in created SVG document&quot;);
+test(function() {
+  testDoc(document.implementation.createDocument(&quot;http://www.w3.org/1998/Math/MathML&quot;, &quot;math&quot;, null),
+          &quot;application/xml&quot;);
+}, &quot;Created element's namespace in created MathML document&quot;);
+
+// Now for various externally-loaded files.  Note: these lists must be kept
+// synced with the lists in generate.py in the subdirectory, and that script
+// must be run whenever the lists are updated.  (We could keep the lists in a
+// shared JSON file, but it seems like too much effort.)
+var testExtensions = {
+  html: &quot;text/html&quot;,
+  xhtml: &quot;application/xhtml+xml&quot;,
+  xml: &quot;application/xml&quot;,
+  svg: &quot;image/svg+xml&quot;,
+  // Was not able to get server MIME type working properly :(
+  //mml: &quot;application/mathml+xml&quot;,
+};
+
+var tests = [
+  &quot;empty&quot;,
+  &quot;minimal_html&quot;,
+
+  &quot;xhtml&quot;,
+  &quot;svg&quot;,
+  &quot;mathml&quot;,
+
+  &quot;bare_xhtml&quot;,
+  &quot;bare_svg&quot;,
+  &quot;bare_mathml&quot;,
+
+  &quot;xhtml_ns_removed&quot;,
+  &quot;xhtml_ns_changed&quot;,
+];
+
+tests.forEach(function(testName) {
+  Object.keys(testExtensions).forEach(function(ext) {
+    var iframe = document.createElement(&quot;iframe&quot;);
+    iframe.src = &quot;resources/Document-createElement-namespace-tests/&quot; +
+                 testName + &quot;.&quot; + ext;
+    var t = async_test(&quot;Created element's namespace in &quot; + testName + &quot;.&quot; + ext);
+    iframe.onload = function() {
+      t.step(function() {
+        testDoc(iframe.contentDocument, testExtensions[ext]);
+      });
+      document.body.removeChild(iframe);
+      t.done();
+    };
+    document.body.appendChild(iframe);
+  });
+});
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateElementhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentcreateElementhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElement.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-createElement.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElement.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElement.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,85 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Document.createElement&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-document-createelement&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-element-localname&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-element-tagname&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-element-prefix&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-element-namespaceuri&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+function toASCIIUppercase(str) {
+  var diff = &quot;a&quot;.charCodeAt(0) - &quot;A&quot;.charCodeAt(0);
+  var res = &quot;&quot;;
+  for (var i = 0; i &lt; str.length; ++i) {
+    if (&quot;a&quot; &lt;= str[i] &amp;&amp; str[i] &lt;= &quot;z&quot;) {
+      res += String.fromCharCode(str.charCodeAt(i) - diff);
+    } else {
+      res += str[i];
+    }
+  }
+  return res;
+}
+test(function() {
+  var HTMLNS = &quot;http://www.w3.org/1999/xhtml&quot;,
+      valid = [
+        //[input, localName],
+        [undefined, &quot;undefined&quot;],
+        [null, &quot;null&quot;],
+        [&quot;foo&quot;, &quot;foo&quot;],
+        [&quot;f1oo&quot;, &quot;f1oo&quot;],
+        [&quot;foo1&quot;, &quot;foo1&quot;],
+        [&quot;f\u0300oo&quot;, &quot;f\u0300oo&quot;],
+        [&quot;foo\u0300&quot;, &quot;foo\u0300&quot;],
+        [&quot;:foo&quot;, &quot;:foo&quot;],
+        [&quot;f:oo&quot;, &quot;f:oo&quot;],
+        [&quot;foo:&quot;, &quot;foo:&quot;],
+        [&quot;xml&quot;, &quot;xml&quot;],
+        [&quot;xmlns&quot;, &quot;xmlns&quot;],
+        [&quot;xmlfoo&quot;, &quot;xmlfoo&quot;],
+        [&quot;xml:foo&quot;, &quot;xml:foo&quot;],
+        [&quot;xmlns:foo&quot;, &quot;xmlns:foo&quot;],
+        [&quot;xmlfoo:bar&quot;, &quot;xmlfoo:bar&quot;],
+        [&quot;svg&quot;, &quot;svg&quot;],
+        [&quot;math&quot;, &quot;math&quot;],
+        [&quot;FOO&quot;, &quot;foo&quot;],
+        [&quot;mar\u212a&quot;, &quot;mar\u212a&quot;],
+        [&quot;\u0130nput&quot;, &quot;\u0130nput&quot;],
+        [&quot;\u0131nput&quot;, &quot;\u0131nput&quot;]
+     ],
+     invalid = [
+       &quot;&quot;,
+       &quot;1foo&quot;,
+       &quot;\u0300foo&quot;,
+       &quot;}foo&quot;,
+       &quot;f}oo&quot;,
+       &quot;foo}&quot;,
+       &quot;\ufffffoo&quot;,
+       &quot;f\uffffoo&quot;,
+       &quot;foo\uffff&quot;,
+       &quot;&lt;foo&quot;,
+       &quot;foo&gt;&quot;,
+       &quot;&lt;foo&gt;&quot;,
+       &quot;f&lt;oo&quot;
+     ]
+
+  valid.forEach(function(t) {
+    test(function() {
+      var elt = document.createElement(t[0])
+      assert_true(elt instanceof Element)
+      assert_true(elt instanceof Node)
+      assert_equals(elt.localName, t[1])
+      assert_equals(elt.tagName, toASCIIUppercase(t[1]))
+      assert_equals(elt.prefix, null)
+      assert_equals(elt.namespaceURI, HTMLNS)
+    }, &quot;createElement(&quot; + format_value(t[0]) + &quot;)&quot;);
+  });
+  invalid.forEach(function(arg) {
+    test(function() {
+      assert_throws(&quot;INVALID_CHARACTER_ERR&quot;, function() { document.createElement(arg) })
+    }, &quot;createElement(&quot; + format_value(arg) + &quot;)&quot;);
+  });
+})
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateElementNSexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentcreateElementNSexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElementNS-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-createElementNS-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElementNS-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElementNS-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,185 @@
</span><ins>+
+PASS Document.createElementNS 
+PASS createElementNS test 0: null,undefined,null 
+PASS createElementNS test 1: null,&quot;foo&quot;,null 
+PASS createElementNS test 2: null,&quot;1foo&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 3: null,&quot;f1oo&quot;,null 
+PASS createElementNS test 4: null,&quot;foo1&quot;,null 
+PASS createElementNS test 5: null,&quot;1foo&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 6: null,&quot;̀foo&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 7: null,&quot;}foo&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 8: null,&quot;f}oo&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 9: null,&quot;foo}&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 10: null,&quot;\x{FFFF}foo&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 11: null,&quot;f\x{FFFF}oo&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 12: null,&quot;foo\x{FFFF}&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 13: null,&quot;&lt;foo&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 14: null,&quot;foo&gt;&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 15: null,&quot;&lt;foo&gt;&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 16: null,&quot;f&lt;oo&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 17: null,&quot;^^&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 18: null,&quot;:foo&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 19: null,&quot;f:oo&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 20: null,&quot;foo:&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 21: null,&quot;:&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 22: null,&quot;xml&quot;,null 
+PASS createElementNS test 23: null,&quot;xmlns&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 24: null,&quot;xmlfoo&quot;,null 
+PASS createElementNS test 25: null,&quot;xml:foo&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 26: null,&quot;xmlns:foo&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 27: null,&quot;xmlfoo:bar&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 28: null,&quot;null:xml&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 29: &quot;&quot;,&quot;:foo&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 30: &quot;&quot;,&quot;f:oo&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 31: &quot;&quot;,&quot;foo:&quot;,&quot;NAMESPACE_ERR&quot; 
+FAIL createElementNS test 32: undefined,undefined,null assert_equals: expected (object) null but got (string) &quot;undefined&quot;
+FAIL createElementNS test 33: undefined,&quot;foo&quot;,null assert_equals: expected (object) null but got (string) &quot;undefined&quot;
+PASS createElementNS test 34: undefined,&quot;1foo&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+FAIL createElementNS test 35: undefined,&quot;f1oo&quot;,null assert_equals: expected (object) null but got (string) &quot;undefined&quot;
+FAIL createElementNS test 36: undefined,&quot;foo1&quot;,null assert_equals: expected (object) null but got (string) &quot;undefined&quot;
+PASS createElementNS test 37: undefined,&quot;:foo&quot;,&quot;NAMESPACE_ERR&quot; 
+FAIL createElementNS test 38: undefined,&quot;f:oo&quot;,&quot;NAMESPACE_ERR&quot; assert_throws: function &quot;function () { document.createElementNS(namespace, qualifi...&quot; did not throw
+PASS createElementNS test 39: undefined,&quot;foo:&quot;,&quot;NAMESPACE_ERR&quot; 
+FAIL createElementNS test 40: undefined,&quot;xml&quot;,null assert_equals: expected (object) null but got (string) &quot;undefined&quot;
+PASS createElementNS test 41: undefined,&quot;xmlns&quot;,&quot;NAMESPACE_ERR&quot; 
+FAIL createElementNS test 42: undefined,&quot;xmlfoo&quot;,null assert_equals: expected (object) null but got (string) &quot;undefined&quot;
+PASS createElementNS test 43: undefined,&quot;xml:foo&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 44: undefined,&quot;xmlns:foo&quot;,&quot;NAMESPACE_ERR&quot; 
+FAIL createElementNS test 45: undefined,&quot;xmlfoo:bar&quot;,&quot;NAMESPACE_ERR&quot; assert_throws: function &quot;function () { document.createElementNS(namespace, qualifi...&quot; did not throw
+PASS createElementNS test 46: &quot;http://example.com/&quot;,&quot;foo&quot;,null 
+PASS createElementNS test 47: &quot;http://example.com/&quot;,&quot;1foo&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 48: &quot;http://example.com/&quot;,&quot;f1oo&quot;,null 
+PASS createElementNS test 49: &quot;http://example.com/&quot;,&quot;foo1&quot;,null 
+PASS createElementNS test 50: &quot;http://example.com/&quot;,&quot;:foo&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 51: &quot;http://example.com/&quot;,&quot;f:oo&quot;,null 
+PASS createElementNS test 52: &quot;http://example.com/&quot;,&quot;foo:&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 53: &quot;http://example.com/&quot;,&quot;_:_&quot;,null 
+PASS createElementNS test 54: &quot;http://example.com/&quot;,&quot;_:h0&quot;,null 
+PASS createElementNS test 55: &quot;http://example.com/&quot;,&quot;_:test&quot;,null 
+PASS createElementNS test 56: &quot;http://example.com/&quot;,&quot;l_:_&quot;,null 
+PASS createElementNS test 57: &quot;http://example.com/&quot;,&quot;ns:_0&quot;,null 
+PASS createElementNS test 58: &quot;http://example.com/&quot;,&quot;ns:a0&quot;,null 
+PASS createElementNS test 59: &quot;http://example.com/&quot;,&quot;ns0:test&quot;,null 
+PASS createElementNS test 60: &quot;http://example.com/&quot;,&quot;a.b:c&quot;,null 
+PASS createElementNS test 61: &quot;http://example.com/&quot;,&quot;a-b:c&quot;,null 
+PASS createElementNS test 62: &quot;http://example.com/&quot;,&quot;a-b:c&quot;,null 
+PASS createElementNS test 63: &quot;http://example.com/&quot;,&quot;xml&quot;,null 
+PASS createElementNS test 64: &quot;http://example.com/&quot;,&quot;xmlns&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 65: &quot;http://example.com/&quot;,&quot;XMLNS&quot;,null 
+PASS createElementNS test 66: &quot;http://example.com/&quot;,&quot;xmlfoo&quot;,null 
+PASS createElementNS test 67: &quot;http://example.com/&quot;,&quot;xml:foo&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 68: &quot;http://example.com/&quot;,&quot;XML:foo&quot;,null 
+PASS createElementNS test 69: &quot;http://example.com/&quot;,&quot;xmlns:foo&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 70: &quot;http://example.com/&quot;,&quot;XMLNS:foo&quot;,null 
+PASS createElementNS test 71: &quot;http://example.com/&quot;,&quot;xmlfoo:bar&quot;,null 
+PASS createElementNS test 72: &quot;http://example.com/&quot;,&quot;prefix::local&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 73: &quot;http://example.com/&quot;,&quot;namespaceURI:{&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 74: &quot;http://example.com/&quot;,&quot;namespaceURI:}&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 75: &quot;http://example.com/&quot;,&quot;namespaceURI:~&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 76: &quot;http://example.com/&quot;,&quot;namespaceURI:'&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 77: &quot;http://example.com/&quot;,&quot;namespaceURI:!&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 78: &quot;http://example.com/&quot;,&quot;namespaceURI:@&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 79: &quot;http://example.com/&quot;,&quot;namespaceURI:#&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 80: &quot;http://example.com/&quot;,&quot;namespaceURI:$&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 81: &quot;http://example.com/&quot;,&quot;namespaceURI:%&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 82: &quot;http://example.com/&quot;,&quot;namespaceURI:^&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 83: &quot;http://example.com/&quot;,&quot;namespaceURI:&amp;&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 84: &quot;http://example.com/&quot;,&quot;namespaceURI:*&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 85: &quot;http://example.com/&quot;,&quot;namespaceURI:(&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 86: &quot;http://example.com/&quot;,&quot;namespaceURI:)&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 87: &quot;http://example.com/&quot;,&quot;namespaceURI:+&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 88: &quot;http://example.com/&quot;,&quot;namespaceURI:=&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 89: &quot;http://example.com/&quot;,&quot;namespaceURI:[&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 90: &quot;http://example.com/&quot;,&quot;namespaceURI:]&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 91: &quot;http://example.com/&quot;,&quot;namespaceURI:\\&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 92: &quot;http://example.com/&quot;,&quot;namespaceURI:/&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 93: &quot;http://example.com/&quot;,&quot;namespaceURI:;&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 94: &quot;http://example.com/&quot;,&quot;namespaceURI:`&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 95: &quot;http://example.com/&quot;,&quot;namespaceURI:&lt;&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 96: &quot;http://example.com/&quot;,&quot;namespaceURI:&gt;&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 97: &quot;http://example.com/&quot;,&quot;namespaceURI:,&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 98: &quot;http://example.com/&quot;,&quot;namespaceURI:a &quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 99: &quot;http://example.com/&quot;,&quot;namespaceURI:\&quot;&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 100: &quot;/&quot;,&quot;foo&quot;,null 
+PASS createElementNS test 101: &quot;/&quot;,&quot;1foo&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 102: &quot;/&quot;,&quot;f1oo&quot;,null 
+PASS createElementNS test 103: &quot;/&quot;,&quot;foo1&quot;,null 
+PASS createElementNS test 104: &quot;/&quot;,&quot;:foo&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 105: &quot;/&quot;,&quot;f:oo&quot;,null 
+PASS createElementNS test 106: &quot;/&quot;,&quot;foo:&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 107: &quot;/&quot;,&quot;xml&quot;,null 
+PASS createElementNS test 108: &quot;/&quot;,&quot;xmlns&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 109: &quot;/&quot;,&quot;xmlfoo&quot;,null 
+PASS createElementNS test 110: &quot;/&quot;,&quot;xml:foo&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 111: &quot;/&quot;,&quot;xmlns:foo&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 112: &quot;/&quot;,&quot;xmlfoo:bar&quot;,null 
+PASS createElementNS test 113: &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;foo&quot;,null 
+PASS createElementNS test 114: &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;1foo&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 115: &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;f1oo&quot;,null 
+PASS createElementNS test 116: &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;foo1&quot;,null 
+PASS createElementNS test 117: &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;:foo&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 118: &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;f:oo&quot;,null 
+PASS createElementNS test 119: &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;foo:&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 120: &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;xml&quot;,null 
+PASS createElementNS test 121: &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;xmlns&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 122: &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;xmlfoo&quot;,null 
+PASS createElementNS test 123: &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;xml:foo&quot;,null 
+PASS createElementNS test 124: &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;xmlns:foo&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 125: &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;xmlfoo:bar&quot;,null 
+PASS createElementNS test 126: &quot;http://www.w3.org/XML/1998/namespaces&quot;,&quot;xml:foo&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 127: &quot;http://www.w3.org/xml/1998/namespace&quot;,&quot;xml:foo&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 128: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;foo&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 129: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;1foo&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 130: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;f1oo&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 131: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;foo1&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 132: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;:foo&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 133: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;f:oo&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 134: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;foo:&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 135: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;xml&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 136: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;xmlns&quot;,null 
+PASS createElementNS test 137: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;xmlfoo&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 138: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;xml:foo&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 139: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;xmlns:foo&quot;,null 
+PASS createElementNS test 140: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;xmlfoo:bar&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 141: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;foo:xmlns&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 142: &quot;foo:&quot;,&quot;foo&quot;,null 
+PASS createElementNS test 143: &quot;foo:&quot;,&quot;1foo&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS createElementNS test 144: &quot;foo:&quot;,&quot;f1oo&quot;,null 
+PASS createElementNS test 145: &quot;foo:&quot;,&quot;foo1&quot;,null 
+PASS createElementNS test 146: &quot;foo:&quot;,&quot;:foo&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 147: &quot;foo:&quot;,&quot;f:oo&quot;,null 
+PASS createElementNS test 148: &quot;foo:&quot;,&quot;foo:&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 149: &quot;foo:&quot;,&quot;xml&quot;,null 
+PASS createElementNS test 150: &quot;foo:&quot;,&quot;xmlns&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 151: &quot;foo:&quot;,&quot;xmlfoo&quot;,null 
+PASS createElementNS test 152: &quot;foo:&quot;,&quot;xml:foo&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 153: &quot;foo:&quot;,&quot;xmlns:foo&quot;,&quot;NAMESPACE_ERR&quot; 
+PASS createElementNS test 154: &quot;foo:&quot;,&quot;xmlfoo:bar&quot;,null 
+PASS createElementNS test 155: &quot;&quot;,&quot;&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+FAIL createElementNS test 156: null,null,null InvalidCharacterError: DOM Exception 5
+PASS createElementNS test 157: null,&quot;&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+FAIL createElementNS test 158: undefined,null,null InvalidCharacterError: DOM Exception 5
+FAIL createElementNS test 159: undefined,undefined,null assert_equals: expected (object) null but got (string) &quot;undefined&quot;
+PASS createElementNS test 160: undefined,&quot;&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+FAIL createElementNS test 161: &quot;http://example.com/&quot;,null,null InvalidCharacterError: DOM Exception 5
+PASS createElementNS test 162: &quot;http://example.com/&quot;,&quot;&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+FAIL createElementNS test 163: &quot;/&quot;,null,null InvalidCharacterError: DOM Exception 5
+PASS createElementNS test 164: &quot;/&quot;,&quot;&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+FAIL createElementNS test 165: &quot;http://www.w3.org/XML/1998/namespace&quot;,null,null InvalidCharacterError: DOM Exception 5
+PASS createElementNS test 166: &quot;http://www.w3.org/XML/1998/namespace&quot;,&quot;&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+FAIL createElementNS test 167: &quot;http://www.w3.org/2000/xmlns/&quot;,null,&quot;NAMESPACE_ERR&quot; assert_throws: function &quot;function () { document.createElementNS(namespace, qualifi...&quot; threw object &quot;Error: InvalidCharacterError: DOM Exception 5&quot; that is not a DOMException NAMESPACE_ERR: property &quot;code&quot; is equal to 5, expected 14
+PASS createElementNS test 168: &quot;http://www.w3.org/2000/xmlns/&quot;,&quot;&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+FAIL createElementNS test 169: &quot;foo:&quot;,null,null InvalidCharacterError: DOM Exception 5
+PASS createElementNS test 170: &quot;foo:&quot;,&quot;&quot;,&quot;INVALID_CHARACTER_ERR&quot; 
+PASS Lower-case HTML element without a prefix 
+FAIL Lower-case HTML element with a prefix assert_equals: expected &quot;HTML:SPAN&quot; but got &quot;html:span&quot;
+PASS Lower-case non-HTML element without a prefix 
+PASS Lower-case non-HTML element with a prefix 
+PASS Upper-case HTML element without a prefix 
+FAIL Upper-case HTML element with a prefix assert_equals: expected &quot;HTML:SPAN&quot; but got &quot;html:SPAN&quot;
+PASS Upper-case non-HTML element without a prefix 
+PASS Upper-case non-HTML element with a prefix 
+PASS null namespace 
+FAIL undefined namespace assert_equals: expected (object) null but got (string) &quot;undefined&quot;
+PASS empty string namespace 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateElementNShtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentcreateElementNShtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElementNS.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-createElementNS.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElementNS.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElementNS.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,199 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Document.createElementNS&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-document-createelementns&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;Document-createElementNS.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  var tests = createElementNS_tests.concat([
+    /* Arrays with three elements:
+     *   the namespace argument
+     *   the qualifiedName argument
+     *   the expected exception, or null if none
+     */
+    [&quot;&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [null, null, null],
+    [null, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [undefined, null, null],
+    [undefined, undefined, null],
+    [undefined, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;http://example.com/&quot;, null, null],
+    [&quot;http://example.com/&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;/&quot;, null, null],
+    [&quot;/&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;http://www.w3.org/XML/1998/namespace&quot;, null, null],
+    [&quot;http://www.w3.org/XML/1998/namespace&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;http://www.w3.org/2000/xmlns/&quot;, null, &quot;NAMESPACE_ERR&quot;],
+    [&quot;http://www.w3.org/2000/xmlns/&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+    [&quot;foo:&quot;, null, null],
+    [&quot;foo:&quot;, &quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  ])
+
+  tests.forEach(function(t, i) {
+    test(function() {
+      var namespace = t[0], qualifiedName = t[1], expected = t[2]
+      if (expected != null) {
+        assert_throws(expected, function() { document.createElementNS(namespace, qualifiedName) })
+      } else {
+        var element = document.createElementNS(namespace, qualifiedName)
+        assert_not_equals(element, null)
+        assert_equals(element.nodeType, Node.ELEMENT_NODE)
+        assert_equals(element.nodeType, element.ELEMENT_NODE)
+        assert_equals(element.nodeValue, null)
+        assert_equals(element.ownerDocument, document)
+        var qualified = String(qualifiedName), names = []
+        if (qualified.indexOf(&quot;:&quot;) &gt;= 0) {
+          names = qualified.split(&quot;:&quot;, 2)
+        } else {
+          names = [null, qualified]
+        }
+        assert_equals(element.prefix, names[0])
+        assert_equals(element.localName, names[1])
+        assert_equals(element.tagName, qualified)
+        assert_equals(element.nodeName, qualified)
+        assert_equals(element.namespaceURI, namespace === undefined ? null : namespace)
+      }
+    }, &quot;createElementNS test &quot; + i + &quot;: &quot; + t.map(function(el) { return format_value(el) }))
+  })
+})
+
+test(function() {
+  var HTMLNS = &quot;http://www.w3.org/1999/xhtml&quot;;
+  var element = document.createElementNS(HTMLNS, &quot;span&quot;);
+  assert_equals(element.namespaceURI, HTMLNS);
+  assert_equals(element.prefix, null);
+  assert_equals(element.localName, &quot;span&quot;);
+  assert_equals(element.tagName, &quot;SPAN&quot;);
+  assert_true(element instanceof Node, &quot;Should be a Node&quot;);
+  assert_true(element instanceof Element, &quot;Should be an Element&quot;);
+  assert_true(element instanceof HTMLElement, &quot;Should be an HTMLElement&quot;);
+  assert_true(element instanceof HTMLSpanElement, &quot;Should be an HTMLSpanElement&quot;);
+}, &quot;Lower-case HTML element without a prefix&quot;);
+
+test(function() {
+  var HTMLNS = &quot;http://www.w3.org/1999/xhtml&quot;;
+  var element = document.createElementNS(HTMLNS, &quot;html:span&quot;);
+  assert_equals(element.namespaceURI, HTMLNS);
+  assert_equals(element.prefix, &quot;html&quot;);
+  assert_equals(element.localName, &quot;span&quot;);
+  assert_equals(element.tagName, &quot;HTML:SPAN&quot;);
+  assert_true(element instanceof Node, &quot;Should be a Node&quot;);
+  assert_true(element instanceof Element, &quot;Should be an Element&quot;);
+  assert_true(element instanceof HTMLElement, &quot;Should be an HTMLElement&quot;);
+  assert_true(element instanceof HTMLSpanElement, &quot;Should be an HTMLSpanElement&quot;);
+}, &quot;Lower-case HTML element with a prefix&quot;);
+
+test(function() {
+  var element = document.createElementNS(&quot;test&quot;, &quot;span&quot;);
+  assert_equals(element.namespaceURI, &quot;test&quot;);
+  assert_equals(element.prefix, null);
+  assert_equals(element.localName, &quot;span&quot;);
+  assert_equals(element.tagName, &quot;span&quot;);
+  assert_true(element instanceof Node, &quot;Should be a Node&quot;);
+  assert_true(element instanceof Element, &quot;Should be an Element&quot;);
+  assert_false(element instanceof HTMLElement, &quot;Should not be an HTMLElement&quot;);
+  assert_false(element instanceof HTMLSpanElement, &quot;Should not be an HTMLSpanElement&quot;);
+}, &quot;Lower-case non-HTML element without a prefix&quot;);
+
+test(function() {
+  var element = document.createElementNS(&quot;test&quot;, &quot;html:span&quot;);
+  assert_equals(element.namespaceURI, &quot;test&quot;);
+  assert_equals(element.prefix, &quot;html&quot;);
+  assert_equals(element.localName, &quot;span&quot;);
+  assert_equals(element.tagName, &quot;html:span&quot;);
+  assert_true(element instanceof Node, &quot;Should be a Node&quot;);
+  assert_true(element instanceof Element, &quot;Should be an Element&quot;);
+  assert_false(element instanceof HTMLElement, &quot;Should not be an HTMLElement&quot;);
+  assert_false(element instanceof HTMLSpanElement, &quot;Should not be an HTMLSpanElement&quot;);
+}, &quot;Lower-case non-HTML element with a prefix&quot;);
+
+test(function() {
+  var HTMLNS = &quot;http://www.w3.org/1999/xhtml&quot;;
+  var element = document.createElementNS(HTMLNS, &quot;SPAN&quot;);
+  assert_equals(element.namespaceURI, HTMLNS);
+  assert_equals(element.prefix, null);
+  assert_equals(element.localName, &quot;SPAN&quot;);
+  assert_equals(element.tagName, &quot;SPAN&quot;);
+  assert_true(element instanceof Node, &quot;Should be a Node&quot;);
+  assert_true(element instanceof Element, &quot;Should be an Element&quot;);
+  assert_true(element instanceof HTMLElement, &quot;Should be an HTMLElement&quot;);
+  assert_true(element instanceof HTMLUnknownElement, &quot;Should be an HTMLUnknownElement&quot;);
+  assert_false(element instanceof HTMLSpanElement, &quot;Should not be an HTMLSpanElement&quot;);
+}, &quot;Upper-case HTML element without a prefix&quot;);
+
+test(function() {
+  var HTMLNS = &quot;http://www.w3.org/1999/xhtml&quot;;
+  var element = document.createElementNS(HTMLNS, &quot;html:SPAN&quot;);
+  assert_equals(element.namespaceURI, HTMLNS);
+  assert_equals(element.prefix, &quot;html&quot;);
+  assert_equals(element.localName, &quot;SPAN&quot;);
+  assert_equals(element.tagName, &quot;HTML:SPAN&quot;);
+  assert_true(element instanceof Node, &quot;Should be a Node&quot;);
+  assert_true(element instanceof Element, &quot;Should be an Element&quot;);
+  assert_true(element instanceof HTMLElement, &quot;Should be an HTMLElement&quot;);
+  assert_false(element instanceof HTMLSpanElement, &quot;Should not be an HTMLSpanElement&quot;);
+}, &quot;Upper-case HTML element with a prefix&quot;);
+
+test(function() {
+  var element = document.createElementNS(&quot;test&quot;, &quot;SPAN&quot;);
+  assert_equals(element.namespaceURI, &quot;test&quot;);
+  assert_equals(element.prefix, null);
+  assert_equals(element.localName, &quot;SPAN&quot;);
+  assert_equals(element.tagName, &quot;SPAN&quot;);
+  assert_true(element instanceof Node, &quot;Should be a Node&quot;);
+  assert_true(element instanceof Element, &quot;Should be an Element&quot;);
+  assert_false(element instanceof HTMLElement, &quot;Should not be an HTMLElement&quot;);
+  assert_false(element instanceof HTMLSpanElement, &quot;Should not be an HTMLSpanElement&quot;);
+}, &quot;Upper-case non-HTML element without a prefix&quot;);
+
+test(function() {
+  var element = document.createElementNS(&quot;test&quot;, &quot;html:SPAN&quot;);
+  assert_equals(element.namespaceURI, &quot;test&quot;);
+  assert_equals(element.prefix, &quot;html&quot;);
+  assert_equals(element.localName, &quot;SPAN&quot;);
+  assert_equals(element.tagName, &quot;html:SPAN&quot;);
+  assert_true(element instanceof Node, &quot;Should be a Node&quot;);
+  assert_true(element instanceof Element, &quot;Should be an Element&quot;);
+  assert_false(element instanceof HTMLElement, &quot;Should not be an HTMLElement&quot;);
+  assert_false(element instanceof HTMLSpanElement, &quot;Should not be an HTMLSpanElement&quot;);
+}, &quot;Upper-case non-HTML element with a prefix&quot;);
+
+test(function() {
+  var element = document.createElementNS(null, &quot;span&quot;);
+  assert_equals(element.namespaceURI, null);
+  assert_equals(element.prefix, null);
+  assert_equals(element.localName, &quot;span&quot;);
+  assert_equals(element.tagName, &quot;span&quot;);
+  assert_true(element instanceof Node, &quot;Should be a Node&quot;);
+  assert_true(element instanceof Element, &quot;Should be an Element&quot;);
+  assert_false(element instanceof HTMLElement, &quot;Should not be an HTMLElement&quot;);
+  assert_false(element instanceof HTMLSpanElement, &quot;Should not be an HTMLSpanElement&quot;);
+}, &quot;null namespace&quot;);
+
+test(function() {
+  var element = document.createElementNS(undefined, &quot;span&quot;);
+  assert_equals(element.namespaceURI, null);
+  assert_equals(element.prefix, null);
+  assert_equals(element.localName, &quot;span&quot;);
+  assert_equals(element.tagName, &quot;span&quot;);
+  assert_true(element instanceof Node, &quot;Should be a Node&quot;);
+  assert_true(element instanceof Element, &quot;Should be an Element&quot;);
+  assert_false(element instanceof HTMLElement, &quot;Should not be an HTMLElement&quot;);
+  assert_false(element instanceof HTMLSpanElement, &quot;Should not be an HTMLSpanElement&quot;);
+}, &quot;undefined namespace&quot;);
+
+test(function() {
+  var element = document.createElementNS(&quot;&quot;, &quot;span&quot;);
+  assert_equals(element.namespaceURI, null);
+  assert_equals(element.prefix, null);
+  assert_equals(element.localName, &quot;span&quot;);
+  assert_equals(element.tagName, &quot;span&quot;);
+  assert_true(element instanceof Node, &quot;Should be a Node&quot;);
+  assert_true(element instanceof Element, &quot;Should be an Element&quot;);
+  assert_false(element instanceof HTMLElement, &quot;Should not be an HTMLElement&quot;);
+  assert_false(element instanceof HTMLSpanElement, &quot;Should not be an HTMLSpanElement&quot;);
+}, &quot;empty string namespace&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateElementNSjsfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentcreateElementNSjs"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElementNS.js (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-createElementNS.js) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElementNS.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createElementNS.js        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,162 @@
</span><ins>+var createElementNS_tests = [
+  /* Arrays with three elements:
+   *   the namespace argument
+   *   the qualifiedName argument
+   *   the expected exception, or null if none
+   */
+  [null, undefined, null],
+  [null, &quot;foo&quot;, null],
+  [null, &quot;1foo&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [null, &quot;f1oo&quot;, null],
+  [null, &quot;foo1&quot;, null],
+  [null, &quot;1foo&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [null, &quot;\u0300foo&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [null, &quot;}foo&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [null, &quot;f}oo&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [null, &quot;foo}&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [null, &quot;\uFFFFfoo&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [null, &quot;f\uFFFFoo&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [null, &quot;foo\uFFFF&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [null, &quot;&lt;foo&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [null, &quot;foo&gt;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [null, &quot;&lt;foo&gt;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [null, &quot;f&lt;oo&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [null, &quot;^^&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [null, &quot;:foo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [null, &quot;f:oo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [null, &quot;foo:&quot;, &quot;NAMESPACE_ERR&quot;],
+  [null, &quot;:&quot;, &quot;NAMESPACE_ERR&quot;],
+  [null, &quot;xml&quot;, null],
+  [null, &quot;xmlns&quot;, &quot;NAMESPACE_ERR&quot;],
+  [null, &quot;xmlfoo&quot;, null],
+  [null, &quot;xml:foo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [null, &quot;xmlns:foo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [null, &quot;xmlfoo:bar&quot;, &quot;NAMESPACE_ERR&quot;],
+  [null, &quot;null:xml&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;&quot;, &quot;:foo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;&quot;, &quot;f:oo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;&quot;, &quot;foo:&quot;, &quot;NAMESPACE_ERR&quot;],
+  [undefined, undefined, null],
+  [undefined, &quot;foo&quot;, null],
+  [undefined, &quot;1foo&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [undefined, &quot;f1oo&quot;, null],
+  [undefined, &quot;foo1&quot;, null],
+  [undefined, &quot;:foo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [undefined, &quot;f:oo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [undefined, &quot;foo:&quot;, &quot;NAMESPACE_ERR&quot;],
+  [undefined, &quot;xml&quot;, null],
+  [undefined, &quot;xmlns&quot;, &quot;NAMESPACE_ERR&quot;],
+  [undefined, &quot;xmlfoo&quot;, null],
+  [undefined, &quot;xml:foo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [undefined, &quot;xmlns:foo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [undefined, &quot;xmlfoo:bar&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;foo&quot;, null],
+  [&quot;http://example.com/&quot;, &quot;1foo&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;f1oo&quot;, null],
+  [&quot;http://example.com/&quot;, &quot;foo1&quot;, null],
+  [&quot;http://example.com/&quot;, &quot;:foo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;f:oo&quot;, null],
+  [&quot;http://example.com/&quot;, &quot;foo:&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;_:_&quot;, null],
+  [&quot;http://example.com/&quot;, &quot;_:h0&quot;, null],
+  [&quot;http://example.com/&quot;, &quot;_:test&quot;, null],
+  [&quot;http://example.com/&quot;, &quot;l_:_&quot;, null],
+  [&quot;http://example.com/&quot;, &quot;ns:_0&quot;, null],
+  [&quot;http://example.com/&quot;, &quot;ns:a0&quot;, null],
+  [&quot;http://example.com/&quot;, &quot;ns0:test&quot;, null],
+  [&quot;http://example.com/&quot;, &quot;a.b:c&quot;, null],
+  [&quot;http://example.com/&quot;, &quot;a-b:c&quot;, null],
+  [&quot;http://example.com/&quot;, &quot;a-b:c&quot;, null],
+  [&quot;http://example.com/&quot;, &quot;xml&quot;, null],
+  [&quot;http://example.com/&quot;, &quot;xmlns&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;XMLNS&quot;, null],
+  [&quot;http://example.com/&quot;, &quot;xmlfoo&quot;, null],
+  [&quot;http://example.com/&quot;, &quot;xml:foo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;XML:foo&quot;, null],
+  [&quot;http://example.com/&quot;, &quot;xmlns:foo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;XMLNS:foo&quot;, null],
+  [&quot;http://example.com/&quot;, &quot;xmlfoo:bar&quot;, null],
+  [&quot;http://example.com/&quot;, &quot;prefix::local&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;namespaceURI:{&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;namespaceURI:}&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;namespaceURI:~&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;namespaceURI:'&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;namespaceURI:!&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;namespaceURI:@&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;namespaceURI:#&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;namespaceURI:$&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;namespaceURI:%&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;namespaceURI:^&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;namespaceURI:&amp;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;namespaceURI:*&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;namespaceURI:(&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;namespaceURI:)&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;namespaceURI:+&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;namespaceURI:=&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;namespaceURI:[&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;namespaceURI:]&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;namespaceURI:\\&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;namespaceURI:/&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;namespaceURI:;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;namespaceURI:`&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;namespaceURI:&lt;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;namespaceURI:&gt;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;namespaceURI:,&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;namespaceURI:a &quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://example.com/&quot;, &quot;namespaceURI:\&quot;&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;/&quot;, &quot;foo&quot;, null],
+  [&quot;/&quot;, &quot;1foo&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;/&quot;, &quot;f1oo&quot;, null],
+  [&quot;/&quot;, &quot;foo1&quot;, null],
+  [&quot;/&quot;, &quot;:foo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;/&quot;, &quot;f:oo&quot;, null],
+  [&quot;/&quot;, &quot;foo:&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;/&quot;, &quot;xml&quot;, null],
+  [&quot;/&quot;, &quot;xmlns&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;/&quot;, &quot;xmlfoo&quot;, null],
+  [&quot;/&quot;, &quot;xml:foo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;/&quot;, &quot;xmlns:foo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;/&quot;, &quot;xmlfoo:bar&quot;, null],
+  [&quot;http://www.w3.org/XML/1998/namespace&quot;, &quot;foo&quot;, null],
+  [&quot;http://www.w3.org/XML/1998/namespace&quot;, &quot;1foo&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://www.w3.org/XML/1998/namespace&quot;, &quot;f1oo&quot;, null],
+  [&quot;http://www.w3.org/XML/1998/namespace&quot;, &quot;foo1&quot;, null],
+  [&quot;http://www.w3.org/XML/1998/namespace&quot;, &quot;:foo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;http://www.w3.org/XML/1998/namespace&quot;, &quot;f:oo&quot;, null],
+  [&quot;http://www.w3.org/XML/1998/namespace&quot;, &quot;foo:&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;http://www.w3.org/XML/1998/namespace&quot;, &quot;xml&quot;, null],
+  [&quot;http://www.w3.org/XML/1998/namespace&quot;, &quot;xmlns&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;http://www.w3.org/XML/1998/namespace&quot;, &quot;xmlfoo&quot;, null],
+  [&quot;http://www.w3.org/XML/1998/namespace&quot;, &quot;xml:foo&quot;, null],
+  [&quot;http://www.w3.org/XML/1998/namespace&quot;, &quot;xmlns:foo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;http://www.w3.org/XML/1998/namespace&quot;, &quot;xmlfoo:bar&quot;, null],
+  [&quot;http://www.w3.org/XML/1998/namespaces&quot;, &quot;xml:foo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;http://www.w3.org/xml/1998/namespace&quot;, &quot;xml:foo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;http://www.w3.org/2000/xmlns/&quot;, &quot;foo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;http://www.w3.org/2000/xmlns/&quot;, &quot;1foo&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;http://www.w3.org/2000/xmlns/&quot;, &quot;f1oo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;http://www.w3.org/2000/xmlns/&quot;, &quot;foo1&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;http://www.w3.org/2000/xmlns/&quot;, &quot;:foo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;http://www.w3.org/2000/xmlns/&quot;, &quot;f:oo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;http://www.w3.org/2000/xmlns/&quot;, &quot;foo:&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;http://www.w3.org/2000/xmlns/&quot;, &quot;xml&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;http://www.w3.org/2000/xmlns/&quot;, &quot;xmlns&quot;, null],
+  [&quot;http://www.w3.org/2000/xmlns/&quot;, &quot;xmlfoo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;http://www.w3.org/2000/xmlns/&quot;, &quot;xml:foo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;http://www.w3.org/2000/xmlns/&quot;, &quot;xmlns:foo&quot;, null],
+  [&quot;http://www.w3.org/2000/xmlns/&quot;, &quot;xmlfoo:bar&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;http://www.w3.org/2000/xmlns/&quot;, &quot;foo:xmlns&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;foo:&quot;, &quot;foo&quot;, null],
+  [&quot;foo:&quot;, &quot;1foo&quot;, &quot;INVALID_CHARACTER_ERR&quot;],
+  [&quot;foo:&quot;, &quot;f1oo&quot;, null],
+  [&quot;foo:&quot;, &quot;foo1&quot;, null],
+  [&quot;foo:&quot;, &quot;:foo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;foo:&quot;, &quot;f:oo&quot;, null],
+  [&quot;foo:&quot;, &quot;foo:&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;foo:&quot;, &quot;xml&quot;, null],
+  [&quot;foo:&quot;, &quot;xmlns&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;foo:&quot;, &quot;xmlfoo&quot;, null],
+  [&quot;foo:&quot;, &quot;xml:foo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;foo:&quot;, &quot;xmlns:foo&quot;, &quot;NAMESPACE_ERR&quot;],
+  [&quot;foo:&quot;, &quot;xmlfoo:bar&quot;, null],
+]
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateEventexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentcreateEventexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-createEvent-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,75 @@
</span><ins>+
+PASS CustomEvent should be an alias for CustomEvent. 
+FAIL createEvent('CustomEvent') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+PASS customevent should be an alias for CustomEvent. 
+FAIL createEvent('customevent') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+PASS CUSTOMEVENT should be an alias for CustomEvent. 
+FAIL createEvent('CUSTOMEVENT') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+PASS Event should be an alias for Event. 
+FAIL createEvent('Event') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+PASS event should be an alias for Event. 
+FAIL createEvent('event') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+PASS EVENT should be an alias for Event. 
+FAIL createEvent('EVENT') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+PASS Events should be an alias for Event. 
+FAIL createEvent('Events') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+PASS events should be an alias for Event. 
+FAIL createEvent('events') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+PASS EVENTS should be an alias for Event. 
+FAIL createEvent('EVENTS') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+PASS HTMLEvents should be an alias for Event. 
+FAIL createEvent('HTMLEvents') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+PASS htmlevents should be an alias for Event. 
+FAIL createEvent('htmlevents') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+PASS HTMLEVENTS should be an alias for Event. 
+FAIL createEvent('HTMLEVENTS') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+PASS KeyboardEvent should be an alias for KeyboardEvent. 
+FAIL createEvent('KeyboardEvent') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+PASS keyboardevent should be an alias for KeyboardEvent. 
+FAIL createEvent('keyboardevent') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+PASS KEYBOARDEVENT should be an alias for KeyboardEvent. 
+FAIL createEvent('KEYBOARDEVENT') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+FAIL KeyEvents should be an alias for KeyboardEvent. NotSupportedError: DOM Exception 9
+FAIL createEvent('KeyEvents') should be initialized correctly. undefined is not an object (evaluating 'ev.type')
+FAIL keyevents should be an alias for KeyboardEvent. NotSupportedError: DOM Exception 9
+FAIL createEvent('keyevents') should be initialized correctly. undefined is not an object (evaluating 'ev.type')
+FAIL KEYEVENTS should be an alias for KeyboardEvent. NotSupportedError: DOM Exception 9
+FAIL createEvent('KEYEVENTS') should be initialized correctly. undefined is not an object (evaluating 'ev.type')
+PASS MessageEvent should be an alias for MessageEvent. 
+FAIL createEvent('MessageEvent') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+PASS messageevent should be an alias for MessageEvent. 
+FAIL createEvent('messageevent') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+PASS MESSAGEEVENT should be an alias for MessageEvent. 
+FAIL createEvent('MESSAGEEVENT') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+PASS MouseEvent should be an alias for MouseEvent. 
+FAIL createEvent('MouseEvent') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+PASS mouseevent should be an alias for MouseEvent. 
+FAIL createEvent('mouseevent') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+PASS MOUSEEVENT should be an alias for MouseEvent. 
+FAIL createEvent('MOUSEEVENT') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+PASS MouseEvents should be an alias for MouseEvent. 
+FAIL createEvent('MouseEvents') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+PASS mouseevents should be an alias for MouseEvent. 
+FAIL createEvent('mouseevents') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+PASS MOUSEEVENTS should be an alias for MouseEvent. 
+FAIL createEvent('MOUSEEVENTS') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+FAIL TouchEvent should be an alias for TouchEvent. NotSupportedError: DOM Exception 9
+FAIL createEvent('TouchEvent') should be initialized correctly. undefined is not an object (evaluating 'ev.type')
+FAIL touchevent should be an alias for TouchEvent. NotSupportedError: DOM Exception 9
+FAIL createEvent('touchevent') should be initialized correctly. undefined is not an object (evaluating 'ev.type')
+FAIL TOUCHEVENT should be an alias for TouchEvent. NotSupportedError: DOM Exception 9
+FAIL createEvent('TOUCHEVENT') should be initialized correctly. undefined is not an object (evaluating 'ev.type')
+PASS UIEvent should be an alias for UIEvent. 
+FAIL createEvent('UIEvent') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+PASS uievent should be an alias for UIEvent. 
+FAIL createEvent('uievent') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+PASS UIEVENT should be an alias for UIEvent. 
+FAIL createEvent('UIEVENT') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+PASS UIEvents should be an alias for UIEvent. 
+FAIL createEvent('UIEvents') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+PASS uievents should be an alias for UIEvent. 
+FAIL createEvent('uievents') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+PASS UIEVENTS should be an alias for UIEvent. 
+FAIL createEvent('UIEVENTS') should be initialized correctly. assert_equals: isTrusted should be initialized to false expected (boolean) false but got (undefined) undefined
+PASS Should throw NOT_SUPPORTED_ERR for unrecognized arguments 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateEventhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentcreateEventhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-createEvent.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,55 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Document.createEvent&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-document-createevent&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;Document-createEvent.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+function testAlias(arg, iface) {
+  var ev;
+  test(function() {
+    ev = document.createEvent(arg);
+    assert_true(ev instanceof window[iface]);
+    assert_true(ev instanceof Event);
+  }, arg + &quot; should be an alias for &quot; + iface + &quot;.&quot;);
+  test(function() {
+    assert_equals(ev.type, &quot;&quot;,
+                  &quot;type should be initialized to the empty string&quot;);
+    assert_equals(ev.target, null,
+                  &quot;target should be initialized to null&quot;);
+    assert_equals(ev.currentTarget, null,
+                  &quot;currentTarget should be initialized to null&quot;);
+    assert_equals(ev.eventPhase, 0,
+                  &quot;eventPhase should be initialized to NONE (0)&quot;);
+    assert_equals(ev.bubbles, false,
+                  &quot;bubbles should be initialized to false&quot;);
+    assert_equals(ev.cancelable, false,
+                  &quot;cancelable should be initialized to false&quot;);
+    assert_equals(ev.defaultPrevented, false,
+                  &quot;defaultPrevented should be initialized to false&quot;);
+    assert_equals(ev.isTrusted, false,
+                  &quot;isTrusted should be initialized to false&quot;);
+  }, &quot;createEvent('&quot; + arg + &quot;') should be initialized correctly.&quot;);
+}
+aliases.forEach(function(alias) {
+  testAlias(alias[0], alias[1]);
+  testAlias(alias[0].toLowerCase(), alias[1]);
+  testAlias(alias[0].toUpperCase(), alias[1]);
+});
+
+test(function() {
+  assert_throws(&quot;NOT_SUPPORTED_ERR&quot;, function() {
+    var evt = document.createEvent(&quot;foo&quot;);
+  });
+  assert_throws(&quot;NOT_SUPPORTED_ERR&quot;, function() {
+    // 'LATIN CAPITAL LETTER I WITH DOT ABOVE' (U+0130)
+    var evt = document.createEvent(&quot;U\u0130Event&quot;);
+  });
+  assert_throws(&quot;NOT_SUPPORTED_ERR&quot;, function() {
+    // 'LATIN SMALL LETTER DOTLESS I' (U+0131)
+    var evt = document.createEvent(&quot;U\u0131Event&quot;);
+  });
+}, &quot;Should throw NOT_SUPPORTED_ERR for unrecognized arguments&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateEventjsfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentcreateEventjs"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.js (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-createEvent.js) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.js        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+var aliases = [
+  [&quot;CustomEvent&quot;, &quot;CustomEvent&quot;],
+  [&quot;Event&quot;, &quot;Event&quot;],
+  [&quot;Events&quot;, &quot;Event&quot;],
+  [&quot;HTMLEvents&quot;, &quot;Event&quot;],
+  [&quot;KeyboardEvent&quot;, &quot;KeyboardEvent&quot;],
+  [&quot;KeyEvents&quot;, &quot;KeyboardEvent&quot;],
+  [&quot;MessageEvent&quot;, &quot;MessageEvent&quot;],
+  [&quot;MouseEvent&quot;, &quot;MouseEvent&quot;],
+  [&quot;MouseEvents&quot;, &quot;MouseEvent&quot;],
+  [&quot;TouchEvent&quot;, &quot;TouchEvent&quot;],
+  [&quot;UIEvent&quot;, &quot;UIEvent&quot;],
+  [&quot;UIEvents&quot;, &quot;UIEvent&quot;]
+];
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateProcessingInstructionexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentcreateProcessingInstructionexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createProcessingInstruction-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-createProcessingInstruction-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createProcessingInstruction-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createProcessingInstruction-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+
+PASS Document.createProcessingInstruction in HTML documents 
+PASS Should throw an INVALID_CHARACTER_ERR for target &quot;A&quot; and data &quot;?&gt;&quot;. 
+PASS Should throw an INVALID_CHARACTER_ERR for target &quot;·A&quot; and data &quot;x&quot;. 
+PASS Should throw an INVALID_CHARACTER_ERR for target &quot;×A&quot; and data &quot;x&quot;. 
+PASS Should throw an INVALID_CHARACTER_ERR for target &quot;A×&quot; and data &quot;x&quot;. 
+PASS Should throw an INVALID_CHARACTER_ERR for target &quot;\\A&quot; and data &quot;x&quot;. 
+PASS Should throw an INVALID_CHARACTER_ERR for target &quot;\f&quot; and data &quot;x&quot;. 
+PASS Should throw an INVALID_CHARACTER_ERR for target 0 and data &quot;x&quot;. 
+PASS Should throw an INVALID_CHARACTER_ERR for target &quot;0&quot; and data &quot;x&quot;. 
+PASS Should get a ProcessingInstruction for target &quot;xml:fail&quot; and data &quot;x&quot;. 
+PASS Should get a ProcessingInstruction for target &quot;A·A&quot; and data &quot;x&quot;. 
+PASS Should get a ProcessingInstruction for target &quot;a0&quot; and data &quot;x&quot;. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateProcessingInstructionxhtmlexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentcreateProcessingInstructionxhtmlexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createProcessingInstruction-xhtml-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-createProcessingInstruction-xhtml-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createProcessingInstruction-xhtml-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createProcessingInstruction-xhtml-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+
+PASS Document.createProcessingInstruction in XML documents 
+PASS Should throw an INVALID_CHARACTER_ERR for target &quot;A&quot; and data &quot;?&gt;&quot;. 
+PASS Should throw an INVALID_CHARACTER_ERR for target &quot;·A&quot; and data &quot;x&quot;. 
+PASS Should throw an INVALID_CHARACTER_ERR for target &quot;×A&quot; and data &quot;x&quot;. 
+PASS Should throw an INVALID_CHARACTER_ERR for target &quot;A×&quot; and data &quot;x&quot;. 
+PASS Should throw an INVALID_CHARACTER_ERR for target &quot;\\A&quot; and data &quot;x&quot;. 
+PASS Should throw an INVALID_CHARACTER_ERR for target &quot;\f&quot; and data &quot;x&quot;. 
+PASS Should throw an INVALID_CHARACTER_ERR for target 0 and data &quot;x&quot;. 
+PASS Should throw an INVALID_CHARACTER_ERR for target &quot;0&quot; and data &quot;x&quot;. 
+PASS Should get a ProcessingInstruction for target &quot;xml:fail&quot; and data &quot;x&quot;. 
+PASS Should get a ProcessingInstruction for target &quot;A·A&quot; and data &quot;x&quot;. 
+PASS Should get a ProcessingInstruction for target &quot;a0&quot; and data &quot;x&quot;. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateProcessingInstructionxhtmlxhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentcreateProcessingInstructionxhtmlxhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createProcessingInstruction-xhtml.xhtml (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-createProcessingInstruction-xhtml.xhtml) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createProcessingInstruction-xhtml.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createProcessingInstruction-xhtml.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+&lt;head&gt;
+&lt;title&gt;Document.createProcessingInstruction in XML documents&lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#dom-document-createprocessinginstruction&quot;/&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#dom-processinginstruction-target&quot;/&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#dom-characterdata-data&quot;/&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#dom-node-ownerdocument&quot;/&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id=&quot;log&quot;/&gt;
+&lt;script src=&quot;Document-createProcessingInstruction.js&quot;/&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateProcessingInstructionhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentcreateProcessingInstructionhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createProcessingInstruction.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-createProcessingInstruction.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createProcessingInstruction.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createProcessingInstruction.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Document.createProcessingInstruction in HTML documents&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-document-createprocessinginstruction&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-processinginstruction-target&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-characterdata-data&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-node-ownerdocument&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script src=&quot;Document-createProcessingInstruction.js&quot;&gt;&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateProcessingInstructionjsfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentcreateProcessingInstructionjs"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createProcessingInstruction.js (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-createProcessingInstruction.js) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createProcessingInstruction.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createProcessingInstruction.js        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+test(function() {
+  var invalid = [
+        [&quot;A&quot;, &quot;?&gt;&quot;],
+        [&quot;\u00B7A&quot;, &quot;x&quot;],
+        [&quot;\u00D7A&quot;, &quot;x&quot;],
+        [&quot;A\u00D7&quot;, &quot;x&quot;],
+        [&quot;\\A&quot;, &quot;x&quot;],
+        [&quot;\f&quot;, &quot;x&quot;],
+        [0, &quot;x&quot;],
+        [&quot;0&quot;, &quot;x&quot;]
+      ],
+      valid = [
+        [&quot;xml:fail&quot;, &quot;x&quot;],
+        [&quot;A\u00B7A&quot;, &quot;x&quot;],
+        [&quot;a0&quot;, &quot;x&quot;]
+      ]
+
+  for (var i = 0, il = invalid.length; i &lt; il; i++) {
+    test(function() {
+      assert_throws(&quot;INVALID_CHARACTER_ERR&quot;, function() {
+        document.createProcessingInstruction(invalid[i][0], invalid[i][1])
+      })
+    }, &quot;Should throw an INVALID_CHARACTER_ERR for target &quot; +
+       format_value(invalid[i][0]) + &quot; and data &quot; +
+       format_value(invalid[i][1]) + &quot;.&quot;)
+  }
+  for (var i = 0, il = valid.length; i &lt; il; ++i) {
+    test(function() {
+      var pi = document.createProcessingInstruction(valid[i][0], valid[i][1]);
+      assert_equals(pi.target, valid[i][0]);
+      assert_equals(pi.data, valid[i][1]);
+      assert_equals(pi.ownerDocument, document);
+      assert_true(pi instanceof ProcessingInstruction);
+      assert_true(pi instanceof Node);
+    }, &quot;Should get a ProcessingInstruction for target &quot; +
+      format_value(valid[i][0]) + &quot; and data &quot; +
+      format_value(valid[i][1]) + &quot;.&quot;)
+  }
+})
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateTextNodeexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentcreateTextNodeexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createTextNode-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-createTextNode-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createTextNode-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createTextNode-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+
+PASS createTextNode(&quot;\v&quot;) 
+PASS createTextNode(&quot;a -- b&quot;) 
+PASS createTextNode(&quot;a-&quot;) 
+PASS createTextNode(&quot;-b&quot;) 
+PASS createTextNode(null) 
+PASS createTextNode(undefined) 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateTextNodehtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentcreateTextNodehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createTextNode.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-createTextNode.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createTextNode.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createTextNode.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Document.createTextNode&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-document-createtextnode&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-node-ownerdocument&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-characterdata-data&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-node-nodevalue&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-node-textcontent&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-characterdata-length&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-node-nodetype&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-node-haschildnodes&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-node-childnodes&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-node-firstchild&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-node-lastchild&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;Document-createComment-createTextNode.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+test_create(&quot;createTextNode&quot;, Text, 3, &quot;#text&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateTreeWalkerexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentcreateTreeWalkerexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createTreeWalker-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-createTreeWalker-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createTreeWalker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createTreeWalker-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+
+PASS Required arguments to createTreeWalker should be required. 
+PASS Optional arguments to createTreeWalker should be optional (1 passed). 
+PASS Optional arguments to createTreeWalker should be optional (2 passed). 
+PASS Optional arguments to createTreeWalker should be optional (3 passed, null). 
+PASS Optional arguments to createTreeWalker should be optional (3 passed, function). 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentcreateTreeWalkerhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentcreateTreeWalkerhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createTreeWalker.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-createTreeWalker.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createTreeWalker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-createTreeWalker.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Document.createTreeWalker&lt;/title&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  assert_throws(new TypeError(), function() {
+    document.createTreeWalker();
+  });
+}, &quot;Required arguments to createTreeWalker should be required.&quot;);
+test(function() {
+  var tw = document.createTreeWalker(document.body);
+  assert_equals(tw.root, document.body);
+  assert_equals(tw.currentNode, document.body);
+  assert_equals(tw.whatToShow, 0xFFFFFFFF);
+  assert_equals(tw.filter, null);
+}, &quot;Optional arguments to createTreeWalker should be optional (1 passed).&quot;);
+test(function() {
+  var tw = document.createTreeWalker(document.body, 42);
+  assert_equals(tw.root, document.body);
+  assert_equals(tw.currentNode, document.body);
+  assert_equals(tw.whatToShow, 42);
+  assert_equals(tw.filter, null);
+}, &quot;Optional arguments to createTreeWalker should be optional (2 passed).&quot;);
+test(function() {
+  var tw = document.createTreeWalker(document.body, 42, null);
+  assert_equals(tw.root, document.body);
+  assert_equals(tw.currentNode, document.body);
+  assert_equals(tw.whatToShow, 42);
+  assert_equals(tw.filter, null);
+}, &quot;Optional arguments to createTreeWalker should be optional (3 passed, null).&quot;);
+test(function() {
+  var fn = function() {};
+  var tw = document.createTreeWalker(document.body, 42, fn);
+  assert_equals(tw.root, document.body);
+  assert_equals(tw.currentNode, document.body);
+  assert_equals(tw.whatToShow, 42);
+  assert_equals(tw.filter, fn);
+}, &quot;Optional arguments to createTreeWalker should be optional (3 passed, function).&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentdoctypeexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentdoctypeexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-doctype-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-doctype-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-doctype-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-doctype-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+PASS Window document with doctype 
+PASS new Document() 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentdoctypehtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentdoctypehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-doctype.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-doctype.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-doctype.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-doctype.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!-- comment --&gt;
+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Document.doctype&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-document-doctype&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  assert_true(document.doctype instanceof DocumentType,
+              &quot;Doctype should be a DocumentType&quot;);
+  assert_equals(document.doctype, document.childNodes[1]);
+}, &quot;Window document with doctype&quot;);
+
+test(function() {
+  var newdoc = new Document();
+  newdoc.appendChild(newdoc.createElement(&quot;html&quot;));
+  assert_equals(newdoc.doctype, null);
+}, &quot;new Document()&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentgetElementByIdexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentgetElementByIdexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementById-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-getElementById-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementById-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementById-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+
+PASS Calling document.getElementById with an empty string argument. 
+PASS Calling document.getElementById with a null argument. 
+PASS Calling document.getElementById with an undefined argument. 
+PASS on static page 
+PASS Document.getElementById with a script-inserted element 
+PASS update `id` attribute via setAttribute/removeAttribute 
+PASS Ensure that the id attribute only affects elements present in a document 
+PASS in tree order, within the context object's tree 
+PASS Modern browsers optimize this method with using internal id cache. This test checks that their optimization should effect only append to `Document`, not append to `Node`. 
+PASS changing attribute's value via `Attr` gotten from `Element.attribute`. 
+PASS add id attribute via innerHTML 
+PASS remove id attribute via innerHTML 
+PASS add id attribute via outerHTML 
+PASS remove id attribute via outerHTML 
+PASS update `id` attribute via element.id 
+PASS where insertion order and tree order don't match 
+PASS Inserting an id by inserting its parent node 
+PASS Document.getElementById must not return nodes not present in document 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentgetElementByIdhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentgetElementByIdhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementById.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-getElementById.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementById.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementById.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,350 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Document.getElementById&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Tetsuharu OHZEKI&quot; href=&quot;mailto:saneyuki.snyk@gmail.com&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-document-getelementbyid&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;body&gt;
+  &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+
+  &lt;!-- test 0 --&gt;
+  &lt;div id=&quot;&quot;&gt;&lt;/div&gt;
+
+  &lt;!-- test 1 --&gt;
+  &lt;div id=&quot;test1&quot;&gt;&lt;/div&gt;
+
+  &lt;!-- test 5 --&gt;
+  &lt;div id=&quot;test5&quot; data-name=&quot;1st&quot;&gt;
+    &lt;p id=&quot;test5&quot; data-name=&quot;2nd&quot;&gt;P&lt;/p&gt;
+    &lt;input id=&quot;test5&quot; type=&quot;submit&quot; value=&quot;Submit&quot; data-name=&quot;3rd&quot;&gt;
+  &lt;/div&gt;
+
+  &lt;!-- test 15 --&gt;
+  &lt;div id=&quot;outer&quot;&gt;
+    &lt;div id=&quot;middle&quot;&gt;
+      &lt;div id=&quot;inner&quot;&gt;&lt;/div&gt;
+    &lt;/div&gt;
+  &lt;/div&gt;
+
+&lt;script&gt;
+  var gBody = document.getElementsByTagName(&quot;body&quot;)[0];
+
+  test(function() {
+    assert_equals(document.getElementById(&quot;&quot;), null);
+  }, &quot;Calling document.getElementById with an empty string argument.&quot;);
+
+  test(function() {
+    var element = document.createElement(&quot;div&quot;);
+    element.setAttribute(&quot;id&quot;, &quot;null&quot;);
+    document.body.appendChild(element);
+    this.add_cleanup(function() { document.body.removeChild(element) });
+    assert_equals(document.getElementById(null), element);
+  }, &quot;Calling document.getElementById with a null argument.&quot;);
+
+  test(function() {
+    var element = document.createElement(&quot;div&quot;);
+    element.setAttribute(&quot;id&quot;, &quot;undefined&quot;);
+    document.body.appendChild(element);
+    this.add_cleanup(function() { document.body.removeChild(element) });
+    assert_equals(document.getElementById(undefined), element);
+  }, &quot;Calling document.getElementById with an undefined argument.&quot;);
+
+
+  test(function() {
+    var bar = document.getElementById(&quot;test1&quot;);
+    assert_not_equals(bar, null, &quot;should not be null&quot;);
+    assert_equals(bar.tagName, &quot;DIV&quot;, &quot;should have expected tag name.&quot;);
+    assert_true(bar instanceof HTMLDivElement, &quot;should be a valid Element instance&quot;);
+  }, &quot;on static page&quot;);
+
+
+  test(function() {
+    var TEST_ID = &quot;test2&quot;;
+
+    var test = document.createElement(&quot;div&quot;);
+    test.setAttribute(&quot;id&quot;, TEST_ID);
+    gBody.appendChild(test);
+
+    // test: appended element
+    var result = document.getElementById(TEST_ID);
+    assert_not_equals(result, null, &quot;should not be null.&quot;);
+    assert_equals(result.tagName, &quot;DIV&quot;, &quot;should have appended element's tag name&quot;);
+    assert_true(result instanceof HTMLDivElement, &quot;should be a valid Element instance&quot;);
+
+    // test: removed element
+    gBody.removeChild(test);
+    var removed = document.getElementById(TEST_ID);
+    // `document.getElementById()` returns `null` if there is none.
+    // https://dom.spec.whatwg.org/#dom-nonelementparentnode-getelementbyid
+    assert_equals(removed, null, &quot;should not get removed element.&quot;);
+  }, &quot;Document.getElementById with a script-inserted element&quot;);
+
+
+  test(function() {
+    // setup fixtures.
+    var TEST_ID = &quot;test3&quot;;
+    var test = document.createElement(&quot;div&quot;);
+    test.setAttribute(&quot;id&quot;, TEST_ID);
+    gBody.appendChild(test);
+
+    // update id
+    var UPDATED_ID = &quot;test3-updated&quot;;
+    test.setAttribute(&quot;id&quot;, UPDATED_ID);
+    var e = document.getElementById(UPDATED_ID);
+    assert_equals(e, test, &quot;should get the element with id.&quot;);
+
+    var old = document.getElementById(TEST_ID);
+    assert_equals(old, null, &quot;shouldn't get the element by the old id.&quot;);
+
+    // remove id.
+    test.removeAttribute(&quot;id&quot;);
+    var e2 = document.getElementById(UPDATED_ID);
+    assert_equals(e2, null, &quot;should return null when the passed id is none in document.&quot;);
+  }, &quot;update `id` attribute via setAttribute/removeAttribute&quot;);
+
+
+  test(function() {
+    var TEST_ID = &quot;test4-should-not-exist&quot;;
+
+    var e = document.createElement('div');
+    e.setAttribute(&quot;id&quot;, TEST_ID);
+
+    assert_equals(document.getElementById(TEST_ID), null, &quot;should be null&quot;);
+    document.body.appendChild(e);
+    assert_equals(document.getElementById(TEST_ID), e, &quot;should be the appended element&quot;);
+  }, &quot;Ensure that the id attribute only affects elements present in a document&quot;);
+
+
+  test(function() {
+    // the method should return the 1st element.
+    var TEST_ID = &quot;test5&quot;;
+    var target = document.getElementById(TEST_ID);
+    assert_not_equals(target, null, &quot;should not be null&quot;);
+    assert_equals(target.getAttribute(&quot;data-name&quot;), &quot;1st&quot;, &quot;should return the 1st&quot;);
+
+    // even if after the new element was appended.
+    var element4 = document.createElement(&quot;div&quot;);
+    element4.setAttribute(&quot;id&quot;, TEST_ID);
+    element4.setAttribute(&quot;data-name&quot;, &quot;4th&quot;);
+    gBody.appendChild(element4);
+    var target2 = document.getElementById(TEST_ID);
+    assert_not_equals(target2, null, &quot;should not be null&quot;);
+    assert_equals(target2.getAttribute(&quot;data-name&quot;), &quot;1st&quot;, &quot;should be the 1st&quot;);
+
+    // should return the next element after removed the subtree including the 1st element.
+    target2.parentNode.removeChild(target2);
+    var target3 = document.getElementById(TEST_ID);
+    assert_not_equals(target3, null, &quot;should not be null&quot;);
+    assert_equals(target3.getAttribute(&quot;data-name&quot;), &quot;4th&quot;, &quot;should be the 4th&quot;);
+  }, &quot;in tree order, within the context object's tree&quot;);
+
+
+  test(function() {
+    var TEST_ID = &quot;test6&quot;;
+    var s = document.createElement(&quot;div&quot;);
+    s.setAttribute(&quot;id&quot;, TEST_ID);
+    // append to Element, not Document.
+    document.createElement(&quot;div&quot;).appendChild(s);
+
+    assert_equals(document.getElementById(TEST_ID), null, &quot;should be null&quot;);
+  }, &quot;Modern browsers optimize this method with using internal id cache. &quot; +
+     &quot;This test checks that their optimization should effect only append to `Document`, not append to `Node`.&quot;);
+
+
+  test(function() {
+    var TEST_ID = &quot;test7&quot;
+    var element = document.createElement(&quot;div&quot;);
+    element.setAttribute(&quot;id&quot;, TEST_ID);
+    gBody.appendChild(element);
+
+    var target = document.getElementById(TEST_ID);
+    assert_equals(target, element, &quot;should return the element before changing the value&quot;);
+
+    element.attributes[0].value = TEST_ID + &quot;-updated&quot;;
+    var target2 = document.getElementById(TEST_ID);
+    assert_equals(target2, null, &quot;should return null after updated id via Attr.value&quot;);
+    var target3 = document.getElementById(TEST_ID + &quot;-updated&quot;);
+    assert_equals(target3, element, &quot;should be equal to the updated element.&quot;);
+  }, &quot;changing attribute's value via `Attr` gotten from `Element.attribute`.&quot;);
+
+
+  test(function() {
+    var TEST_ID = &quot;test8&quot;;
+
+    // setup fixture
+    var element = document.createElement(&quot;div&quot;);
+    element.setAttribute(&quot;id&quot;, TEST_ID + &quot;-fixture&quot;);
+    gBody.appendChild(element);
+
+    // add id-ed element with using innerHTML
+    element.innerHTML = &quot;&lt;div id='&quot;+ TEST_ID +&quot;'&gt;&lt;/div&gt;&quot;;
+    var test = document.getElementById(TEST_ID);
+    assert_equals(test, element.firstChild, &quot;should not be null&quot;);
+    assert_equals(test.tagName, &quot;DIV&quot;, &quot;should have expected tag name.&quot;);
+    assert_true(test instanceof HTMLDivElement, &quot;should be a valid Element instance&quot;);
+  }, &quot;add id attribute via innerHTML&quot;);
+
+
+  test(function() {
+    var TEST_ID = &quot;test9&quot;;
+
+    // add fixture
+    var fixture = document.createElement(&quot;div&quot;);
+    fixture.setAttribute(&quot;id&quot;, TEST_ID + &quot;-fixture&quot;);
+    gBody.appendChild(fixture);
+
+    var element = document.createElement(&quot;div&quot;);
+    element.setAttribute(&quot;id&quot;, TEST_ID);
+    fixture.appendChild(element);
+
+    // check 'getElementById' should get the 'element'
+    assert_equals(document.getElementById(TEST_ID), element, &quot;should not be null&quot;);
+
+    // remove id-ed element with using innerHTML (clear 'element')
+    fixture.innerHTML = &quot;&quot;;
+    var test = document.getElementById(TEST_ID);
+    assert_equals(test, null, &quot;should be null.&quot;);
+  }, &quot;remove id attribute via innerHTML&quot;);
+
+
+  test(function() {
+    var TEST_ID = &quot;test10&quot;;
+
+    // setup fixture
+    var element = document.createElement(&quot;div&quot;);
+    element.setAttribute(&quot;id&quot;, TEST_ID + &quot;-fixture&quot;);
+    gBody.appendChild(element);
+
+    // add id-ed element with using outerHTML
+    element.outerHTML = &quot;&lt;div id='&quot;+ TEST_ID +&quot;'&gt;&lt;/div&gt;&quot;;
+    var test = document.getElementById(TEST_ID);
+    assert_not_equals(test, null, &quot;should not be null&quot;);
+    assert_equals(test.tagName, &quot;DIV&quot;, &quot;should have expected tag name.&quot;);
+    assert_true(test instanceof HTMLDivElement,&quot;should be a valid Element instance&quot;);
+  }, &quot;add id attribute via outerHTML&quot;);
+
+
+  test(function() {
+    var TEST_ID = &quot;test11&quot;;
+
+    var element = document.createElement(&quot;div&quot;);
+    element.setAttribute(&quot;id&quot;, TEST_ID);
+    gBody.appendChild(element);
+
+    var test = document.getElementById(TEST_ID);
+    assert_equals(test, element, &quot;should be equal to the appended element.&quot;);
+
+    // remove id-ed element with using outerHTML
+    element.outerHTML = &quot;&lt;div&gt;&lt;/div&gt;&quot;;
+    var test = document.getElementById(TEST_ID);
+    assert_equals(test, null, &quot;should be null.&quot;);
+  }, &quot;remove id attribute via outerHTML&quot;);
+
+
+  test(function() {
+    // setup fixtures.
+    var TEST_ID = &quot;test12&quot;;
+    var test = document.createElement(&quot;div&quot;);
+    test.id = TEST_ID;
+    gBody.appendChild(test);
+
+    // update id
+    var UPDATED_ID = TEST_ID + &quot;-updated&quot;;
+    test.id =  UPDATED_ID;
+    var e = document.getElementById(UPDATED_ID);
+    assert_equals(e, test, &quot;should get the element with id.&quot;);
+
+    var old = document.getElementById(TEST_ID);
+    assert_equals(old, null, &quot;shouldn't get the element by the old id.&quot;);
+
+    // remove id.
+    test.id = &quot;&quot;;
+    var e2 = document.getElementById(UPDATED_ID);
+    assert_equals(e2, null, &quot;should return null when the passed id is none in document.&quot;);
+  }, &quot;update `id` attribute via element.id&quot;);
+
+
+  test(function() {
+    var TEST_ID = &quot;test13&quot;;
+
+    var create_same_id_element = function (order) {
+      var element = document.createElement(&quot;div&quot;);
+      element.setAttribute(&quot;id&quot;, TEST_ID);
+      element.setAttribute(&quot;data-order&quot;, order);// for debug
+      return element;
+    };
+
+    // create fixture
+    var container = document.createElement(&quot;div&quot;);
+    container.setAttribute(&quot;id&quot;, TEST_ID + &quot;-fixture&quot;);
+    gBody.appendChild(container);
+
+    var element1 = create_same_id_element(&quot;1&quot;);
+    var element2 = create_same_id_element(&quot;2&quot;);
+    var element3 = create_same_id_element(&quot;3&quot;);
+    var element4 = create_same_id_element(&quot;4&quot;);
+
+    // append element: 2 -&gt; 4 -&gt; 3 -&gt; 1
+    container.appendChild(element2);
+    container.appendChild(element4);
+    container.insertBefore(element3, element4);
+    container.insertBefore(element1, element2);
+
+
+    var test = document.getElementById(TEST_ID);
+    assert_equals(test, element1, &quot;should return 1st element&quot;);
+    container.removeChild(element1);
+
+    test = document.getElementById(TEST_ID);
+    assert_equals(test, element2, &quot;should return 2nd element&quot;);
+    container.removeChild(element2);
+
+    test = document.getElementById(TEST_ID);
+    assert_equals(test, element3, &quot;should return 3rd element&quot;);
+    container.removeChild(element3);
+
+    test = document.getElementById(TEST_ID);
+    assert_equals(test, element4, &quot;should return 4th element&quot;);
+    container.removeChild(element4);
+
+
+  }, &quot;where insertion order and tree order don't match&quot;);
+
+  test(function() {
+    var TEST_ID = &quot;test14&quot;;
+    var a = document.createElement(&quot;a&quot;);
+    var b = document.createElement(&quot;b&quot;);
+    a.appendChild(b);
+    b.id = TEST_ID;
+    assert_equals(document.getElementById(TEST_ID), null);
+
+    gBody.appendChild(a);
+    assert_equals(document.getElementById(TEST_ID), b);
+  }, &quot;Inserting an id by inserting its parent node&quot;);
+
+  test(function () {
+    var TEST_ID = &quot;test15&quot;
+    var outer = document.getElementById(&quot;outer&quot;);
+    var middle = document.getElementById(&quot;middle&quot;);
+    var inner = document.getElementById(&quot;inner&quot;);
+    outer.removeChild(middle);
+
+    var new_el = document.createElement(&quot;h1&quot;);
+    new_el.id = &quot;heading&quot;;
+    inner.appendChild(new_el);
+    // the new element is not part of the document since
+    // &quot;middle&quot; element was removed previously
+    assert_equals(document.getElementById(&quot;heading&quot;), null);
+  }, &quot;Document.getElementById must not return nodes not present in document&quot;);
+
+  // TODO:
+  // id attribute in a namespace
+
+
+  // TODO:
+  // SVG + MathML elements with id attributes
+
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentgetElementsByTagNameexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentgetElementsByTagNameexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementsByTagName-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-getElementsByTagName-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementsByTagName-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementsByTagName-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+
+PASS Interfaces 
+PASS Caching is allowed 
+FAIL Shouldn't be able to set unsigned properties on a HTMLCollection (non-strict mode) assert_equals: expected (undefined) undefined but got (string) &quot;foopy&quot;
+FAIL Shouldn't be able to set unsigned properties on a HTMLCollection (strict mode) assert_throws: function &quot;function () {
+      &quot;use strict&quot;;
+      l[5] = &quot;foopy&quot;
+    }&quot; did not throw
+PASS Should be able to set expando shadowing a proto prop (item) 
+PASS Should be able to set expando shadowing a proto prop (namedItem) 
+FAIL hasOwnProperty, getOwnPropertyDescriptor, getOwnPropertyNames assert_array_equals: lengths differ, expected 2 got 3
+PASS HTML element with uppercase tagName never matches in HTML Documents 
+PASS Element in non-HTML namespace, no prefix, lowercase name 
+PASS Element in non-HTML namespace, no prefix, uppercase name 
+PASS Element in non-HTML namespace, prefix, lowercase name 
+PASS Element in non-HTML namespace, prefix, uppercase name 
+FAIL Element in HTML namespace, no prefix, non-ascii characters in name assert_equals: expected &quot;aÇ&quot; but got &quot;aç&quot;
+PASS Element in non-HTML namespace, non-ascii characters in name 
+PASS Element in HTML namespace, prefix, non-ascii characters in name 
+PASS Element in non-HTML namespace, prefix, non-ascii characters in name 
+PASS getElementsByTagName('*') 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentgetElementsByTagNamexhtmlexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentgetElementsByTagNamexhtmlexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementsByTagName-xhtml-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-getElementsByTagName-xhtml-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementsByTagName-xhtml-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementsByTagName-xhtml-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+
+PASS HTML element with uppercase tag name matches in XHTML documents 
+PASS Element in non-HTML namespace, no prefix, lowercase name 
+PASS Element in non-HTML namespace, no prefix, uppercase name 
+PASS Element in non-HTML namespace, prefix, lowercase name 
+PASS Element in non-HTML namespace, prefix, uppercase name 
+PASS Element in HTML namespace, no prefix, non-ascii characters in name 
+PASS Element in non-HTML namespace, non-ascii characters in name 
+PASS Element in HTML namespace, prefix, non-ascii characters in name 
+PASS Element in non-HTML namespace, prefix, non-ascii characters in name 
+PASS getElementsByTagName('*') 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentgetElementsByTagNamexhtmlxhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentgetElementsByTagNamexhtmlxhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementsByTagName-xhtml.xhtml (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-getElementsByTagName-xhtml.xhtml) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementsByTagName-xhtml.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementsByTagName-xhtml.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,102 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+&lt;head&gt;
+&lt;title&gt;Document.getElementsByTagName&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;pre id=&quot;x&quot;&gt;&lt;/pre&gt;
+&lt;script&gt;
+test(function() {
+  var t = document.body.appendChild(document.createElementNS(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;I&quot;))
+  this.add_cleanup(function() {document.body.removeChild(t)})
+  assert_equals(t.localName, &quot;I&quot;)
+  assert_equals(t.tagName, &quot;I&quot;)
+  assert_array_equals(document.getElementsByTagName(&quot;I&quot;), [t])
+  assert_array_equals(document.getElementsByTagName(&quot;i&quot;), [])
+  assert_array_equals(document.body.getElementsByTagName(&quot;I&quot;), [t])
+  assert_array_equals(document.body.getElementsByTagName(&quot;i&quot;), [])
+}, &quot;HTML element with uppercase tag name matches in XHTML documents&quot;)
+
+test(function() {
+  var t = document.body.appendChild(document.createElementNS(&quot;test&quot;, &quot;st&quot;))
+  this.add_cleanup(function() {document.body.removeChild(t)})
+  assert_array_equals(document.getElementsByTagName(&quot;st&quot;), [t])
+  assert_array_equals(document.getElementsByTagName(&quot;ST&quot;), [])
+}, &quot;Element in non-HTML namespace, no prefix, lowercase name&quot;)
+
+test(function() {
+  var t = document.body.appendChild(document.createElementNS(&quot;test&quot;, &quot;ST&quot;))
+  this.add_cleanup(function() {document.body.removeChild(t)})
+  assert_array_equals(document.getElementsByTagName(&quot;ST&quot;), [t])
+  assert_array_equals(document.getElementsByTagName(&quot;st&quot;), [])
+}, &quot;Element in non-HTML namespace, no prefix, uppercase name&quot;)
+
+test(function() {
+  var t = document.body.appendChild(document.createElementNS(&quot;test&quot;, &quot;te:st&quot;))
+  this.add_cleanup(function() {document.body.removeChild(t)})
+  assert_array_equals(document.getElementsByTagName(&quot;st&quot;), [t])
+  assert_array_equals(document.getElementsByTagName(&quot;ST&quot;), [])
+}, &quot;Element in non-HTML namespace, prefix, lowercase name&quot;)
+
+test(function() {
+  var t = document.body.appendChild(document.createElementNS(&quot;test&quot;, &quot;te:ST&quot;))
+  this.add_cleanup(function() {document.body.removeChild(t)})
+  assert_array_equals(document.getElementsByTagName(&quot;ST&quot;), [t])
+  assert_array_equals(document.getElementsByTagName(&quot;st&quot;), [])
+  assert_array_equals(document.getElementsByTagName(&quot;te:st&quot;), [])
+  assert_array_equals(document.getElementsByTagName(&quot;te:ST&quot;), [])
+}, &quot;Element in non-HTML namespace, prefix, uppercase name&quot;)
+
+test(function() {
+  var t = document.body.appendChild(document.createElement(&quot;AÇ&quot;))
+  this.add_cleanup(function() {document.body.removeChild(t)})
+  assert_array_equals(document.getElementsByTagName(&quot;AÇ&quot;), [t], &quot;All uppercase input&quot;)
+  assert_array_equals(document.getElementsByTagName(&quot;aÇ&quot;), [], &quot;Ascii lowercase input&quot;)
+  assert_array_equals(document.getElementsByTagName(&quot;aç&quot;), [], &quot;All lowercase input&quot;)
+}, &quot;Element in HTML namespace, no prefix, non-ascii characters in name&quot;)
+
+test(function() {
+  var t = document.body.appendChild(document.createElementNS(&quot;test&quot;, &quot;AÇ&quot;))
+  this.add_cleanup(function() {document.body.removeChild(t)})
+  assert_array_equals(document.getElementsByTagName(&quot;AÇ&quot;), [t], &quot;All uppercase input&quot;)
+  assert_array_equals(document.getElementsByTagName(&quot;aÇ&quot;), [], &quot;Ascii lowercase input&quot;)
+  assert_array_equals(document.getElementsByTagName(&quot;aç&quot;), [], &quot;All lowercase input&quot;)
+}, &quot;Element in non-HTML namespace, non-ascii characters in name&quot;)
+
+test(function() {
+  var t = document.body.appendChild(document.createElementNS(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;test:aÇ&quot;))
+  this.add_cleanup(function() {document.body.removeChild(t)})
+  assert_array_equals(document.getElementsByTagName(&quot;AÇ&quot;), [], &quot;All uppercase input&quot;)
+  assert_array_equals(document.getElementsByTagName(&quot;aÇ&quot;), [t], &quot;Ascii lowercase input&quot;)
+  assert_array_equals(document.getElementsByTagName(&quot;aç&quot;), [], &quot;All lowercase input&quot;)
+}, &quot;Element in HTML namespace, prefix, non-ascii characters in name&quot;)
+
+test(function() {
+  var t = document.body.appendChild(document.createElementNS(&quot;test&quot;, &quot;test:AÇ&quot;))
+  this.add_cleanup(function() {document.body.removeChild(t)})
+  assert_array_equals(document.getElementsByTagName(&quot;AÇ&quot;), [t], &quot;All uppercase input&quot;)
+  assert_array_equals(document.getElementsByTagName(&quot;aÇ&quot;), [], &quot;Ascii lowercase input&quot;)
+  assert_array_equals(document.getElementsByTagName(&quot;aç&quot;), [], &quot;All lowercase input&quot;)
+}, &quot;Element in non-HTML namespace, prefix, non-ascii characters in name&quot;)
+
+test(function() {
+  var actual = document.getElementsByTagName(&quot;*&quot;);
+  var expected = [];
+  var get_elements = function(node) {
+    for (var i = 0; i &amp;lt; node.childNodes.length; i++) {
+      var child = node.childNodes[i];
+      if (child.nodeType === child.ELEMENT_NODE) {
+        expected.push(child);
+        get_elements(child);
+      }
+    }
+  }
+  get_elements(document);
+  assert_array_equals(actual, expected);
+}, &quot;getElementsByTagName('*')&quot;)
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentgetElementsByTagNamehtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentgetElementsByTagNamehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementsByTagName.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-getElementsByTagName.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementsByTagName.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementsByTagName.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Document.getElementsByTagName&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-document-getelementsbytagname&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;Document-Element-getElementsByTagName.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+test_getElementsByTagName(document, document.body);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentgetElementsByTagNameNSexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentgetElementsByTagNameNSexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementsByTagNameNS-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-getElementsByTagNameNS-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementsByTagNameNS-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementsByTagNameNS-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+
+PASS Document.getElementsByTagNameNS 
+PASS getElementsByTagNameNS('*', 'body') 
+PASS Empty string namespace 
+PASS body element in test namespace, no prefix 
+PASS body element in test namespace, prefix 
+PASS BODY element in test namespace, no prefix 
+PASS abc element in html namespace 
+PASS ABC element in html namespace 
+PASS AÇ, case sensitivity 
+PASS BODY element in test namespace, prefix 
+PASS getElementsByTagNameNS('http://www.w3.org/1999/xhtml', '*') 
+PASS getElementsByTagNameNS('*', '*') 
+PASS Empty lists 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentgetElementsByTagNameNShtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentgetElementsByTagNameNShtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementsByTagNameNS.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-getElementsByTagNameNS.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementsByTagNameNS.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-getElementsByTagNameNS.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Document.getElementsByTagNameNS&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-document-getelementsbytagnamens&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;Document-Element-getElementsByTagNameNS.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+test_getElementsByTagNameNS(document, document.body);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentimplementationexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentimplementationexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-implementation-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-implementation-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-implementation-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-implementation-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+PASS Getting implementation off the same document 
+PASS Getting implementation off different documents 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentimplementationhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentimplementationhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-implementation.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-implementation.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-implementation.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-implementation.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Document.implementation&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-document-implementation&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  var implementation = document.implementation;
+  assert_true(implementation instanceof DOMImplementation,
+              &quot;implementation should implement DOMImplementation&quot;);
+  assert_equals(document.implementation, implementation);
+}, &quot;Getting implementation off the same document&quot;);
+
+test(function() {
+  var doc = document.implementation.createHTMLDocument();
+  assert_not_equals(document.implementation, doc.implementation);
+}, &quot;Getting implementation off different documents&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentimportNodeexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentimportNodeexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-importNode-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-importNode-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-importNode-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-importNode-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+FAIL No 'deep' argument. assert_equals: expected null but got Element node &lt;span&gt;&lt;/span&gt;
+PASS Undefined 'deep' argument. 
+PASS True 'deep' argument. 
+PASS False 'deep' argument. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentimportNodehtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentimportNodehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-importNode.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Document-importNode.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-importNode.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Document-importNode.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,57 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Document.importNode&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-document-importnode&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  var doc = document.implementation.createHTMLDocument(&quot;Title&quot;);
+  var div = doc.body.appendChild(doc.createElement(&quot;div&quot;));
+  div.appendChild(doc.createElement(&quot;span&quot;));
+  assert_equals(div.ownerDocument, doc);
+  assert_equals(div.firstChild.ownerDocument, doc);
+  var newDiv = document.importNode(div);
+  assert_equals(div.ownerDocument, doc);
+  assert_equals(div.firstChild.ownerDocument, doc);
+  assert_equals(newDiv.ownerDocument, document);
+  assert_equals(newDiv.firstChild, null);
+}, &quot;No 'deep' argument.&quot;)
+test(function() {
+  var doc = document.implementation.createHTMLDocument(&quot;Title&quot;);
+  var div = doc.body.appendChild(doc.createElement(&quot;div&quot;));
+  div.appendChild(doc.createElement(&quot;span&quot;));
+  assert_equals(div.ownerDocument, doc);
+  assert_equals(div.firstChild.ownerDocument, doc);
+  var newDiv = document.importNode(div, undefined);
+  assert_equals(div.ownerDocument, doc);
+  assert_equals(div.firstChild.ownerDocument, doc);
+  assert_equals(newDiv.ownerDocument, document);
+  assert_equals(newDiv.firstChild, null);
+}, &quot;Undefined 'deep' argument.&quot;)
+test(function() {
+  var doc = document.implementation.createHTMLDocument(&quot;Title&quot;);
+  var div = doc.body.appendChild(doc.createElement(&quot;div&quot;));
+  div.appendChild(doc.createElement(&quot;span&quot;));
+  assert_equals(div.ownerDocument, doc);
+  assert_equals(div.firstChild.ownerDocument, doc);
+  var newDiv = document.importNode(div, true);
+  assert_equals(div.ownerDocument, doc);
+  assert_equals(div.firstChild.ownerDocument, doc);
+  assert_equals(newDiv.ownerDocument, document);
+  assert_equals(newDiv.firstChild.ownerDocument, document);
+}, &quot;True 'deep' argument.&quot;)
+test(function() {
+  var doc = document.implementation.createHTMLDocument(&quot;Title&quot;);
+  var div = doc.body.appendChild(doc.createElement(&quot;div&quot;));
+  div.appendChild(doc.createElement(&quot;span&quot;));
+  assert_equals(div.ownerDocument, doc);
+  assert_equals(div.firstChild.ownerDocument, doc);
+  var newDiv = document.importNode(div, false);
+  assert_equals(div.ownerDocument, doc);
+  assert_equals(div.firstChild.ownerDocument, doc);
+  assert_equals(newDiv.ownerDocument, document);
+  assert_equals(newDiv.firstChild, null);
+}, &quot;False 'deep' argument.&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentTypeliteralexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentTypeliteralexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-literal-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/DocumentType-literal-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-literal-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-literal-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS DocumentType literals 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentTypeliteralhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentTypeliteralhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-literal.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/DocumentType-literal.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-literal.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-literal.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE html PUBLIC &quot;STAFF&quot; &quot;staffNS.dtd&quot;&gt;
+&lt;title&gt;DocumentType literals&lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#dom-documenttype-name&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#dom-documenttype-publicid&quot;&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#dom-documenttype-systemid&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  var doctype = document.firstChild;
+  assert_true(doctype instanceof DocumentType)
+  assert_equals(doctype.name, &quot;html&quot;)
+  assert_equals(doctype.publicId, 'STAFF')
+  assert_equals(doctype.systemId, 'staffNS.dtd')
+})
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentTypeliteralxhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentTypeliteralxhtmlxhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-literal.xhtml (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/DocumentType-literal-xhtml.xhtml) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-literal.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-literal.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;!DOCTYPE html PUBLIC &quot;STAFF&quot; &quot;staffNS.dtd&quot;&gt;
+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+&lt;head&gt;
+&lt;title&gt;DocumentType literals&lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#dom-documenttype-name&quot;/&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#dom-documenttype-publicid&quot;/&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#dom-documenttype-systemid&quot;/&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id=&quot;log&quot;/&gt;
+&lt;script&gt;
+test(function() {
+  var doctype = document.firstChild;
+  assert_true(doctype instanceof DocumentType)
+  assert_equals(doctype.name, &quot;html&quot;)
+  assert_equals(doctype.publicId, 'STAFF')
+  assert_equals(doctype.systemId, 'staffNS.dtd')
+})
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentTyperemoveexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentTyperemoveexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-remove-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/DocumentType-remove-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-remove-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-remove-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+PASS doctype should support remove() 
+PASS remove() should work if doctype doesn't have a parent 
+PASS remove() should work if doctype does have a parent 
+PASS remove() should work if doctype does have a parent and siblings 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesDocumentTyperemovehtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesDocumentTyperemovehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-remove.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/DocumentType-remove.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-remove.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/DocumentType-remove.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;DocumentType.remove&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-childnode-remove&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;ChildNode-remove.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script&gt;
+var node, parentNode;
+setup(function() {
+  node = document.implementation.createDocumentType(&quot;html&quot;, &quot;&quot;, &quot;&quot;);
+  parentNode = document.implementation.createDocument(null, &quot;&quot;, null);
+});
+testRemove(node, parentNode, &quot;doctype&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementnullexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementchildElementnullexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElement-null-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-childElement-null-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElement-null-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElement-null-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+Test of firstElementChild and lastChildElement returning null
+
+Test.
+
+
+PASS Null test 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementnullxhtmlexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementchildElementnullxhtmlexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElement-null-xhtml-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-childElement-null-xhtml-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElement-null-xhtml-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElement-null-xhtml-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+Test of firstElementChild and lastChildElement returning null
+
+Test.
+
+
+PASS Null Test 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementnullxhtmlxhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementchildElementnullxhtmlxhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElement-null-xhtml.xhtml (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-childElement-null-xhtml.xhtml) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElement-null-xhtml.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElement-null-xhtml.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+&lt;head&gt;
+&lt;title&gt;Null Test&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Test of firstElementChild and lastChildElement returning null&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;parentEl&quot; style=&quot;font-weight:bold;&quot;&gt;Test.&lt;/p&gt;
+&lt;script&gt;&lt;![CDATA[
+test(function() {
+  var parentEl = document.getElementById(&quot;parentEl&quot;)
+  assert_equals(parentEl.firstElementChild, null)
+  assert_equals(parentEl.lastElementChild, null)
+})
+]]&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementnullhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementchildElementnullhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElement-null.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-childElement-null.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElement-null.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElement-null.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Null test&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;h1&gt;Test of firstElementChild and lastChildElement returning null&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;parentEl&quot; style=&quot;font-weight:bold;&quot;&gt;Test.&lt;/p&gt;
+&lt;script&gt;
+test(function() {
+  var parentEl = document.getElementById(&quot;parentEl&quot;)
+  assert_equals(parentEl.firstElementChild, null)
+  assert_equals(parentEl.lastElementChild, null)
+})
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementCountdynamicaddexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementchildElementCountdynamicaddexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-childElementCount-dynamic-add-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+Test of Dynamic Adding of Elements
+
+The result of this test is logged above.
+
+
+PASS Dynamic Adding of Elements 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementCountdynamicaddhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementchildElementCountdynamicaddhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-childElementCount-dynamic-add.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Dynamic Adding of Elements&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;h1&gt;Test of Dynamic Adding of Elements&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;parentEl&quot;&gt;The result of this test is
+&lt;span id=&quot;first_element_child&quot; style=&quot;font-weight:bold;&quot;&gt;logged above.&lt;/span&gt;&lt;/p&gt;
+&lt;script&gt;
+test(function() {
+  var parentEl = document.getElementById(&quot;parentEl&quot;);
+  var newChild = document.createElement(&quot;span&quot;);
+  parentEl.appendChild(newChild);
+  assert_equals(parentEl.childElementCount, 2)
+})
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementCountdynamicaddxhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementchildElementCountdynamicaddxhtmlxhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add.xhtml (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-childElementCount-dynamic-add-xhtml.xhtml) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-add.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+&lt;head&gt;
+&lt;title&gt;Dynamic Adding of Elements&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Test of Dynamic Adding of Elements&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;parentEl&quot;&gt;The result of this test is
+&lt;span id=&quot;first_element_child&quot; style=&quot;font-weight:bold;&quot;&gt;logged above.&lt;/span&gt;&lt;/p&gt;
+&lt;script&gt;&lt;![CDATA[
+test(function() {
+  var parentEl = document.getElementById(&quot;parentEl&quot;);
+  var newChild = document.createElement(&quot;span&quot;);
+  parentEl.appendChild(newChild);
+  assert_equals(parentEl.childElementCount, 2)
+})
+]]&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementCountdynamicremoveexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementchildElementCountdynamicremoveexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-remove-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-childElementCount-dynamic-remove-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-remove-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-remove-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+Test of Dynamic Removal of Elements
+
+The result of this test is unknown.
+
+
+PASS Dynamic Removal of Elements 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementCountdynamicremovexhtmlexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementchildElementCountdynamicremovexhtmlexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-remove-xhtml-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-childElementCount-dynamic-remove-xhtml-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-remove-xhtml-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-remove-xhtml-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+Test of Removal Adding of Elements
+
+The result of this test is logged above.
+
+
+PASS Dynamic Removal of Elements 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementCountdynamicremovexhtmlxhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementchildElementCountdynamicremovexhtmlxhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-remove-xhtml.xhtml (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-childElementCount-dynamic-remove-xhtml.xhtml) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-remove-xhtml.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-remove-xhtml.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+&lt;head&gt;
+&lt;title&gt;Dynamic Removal of Elements&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Test of Removal Adding of Elements&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;parentEl&quot;&gt;The result of this test is
+&lt;span id=&quot;first_element_child&quot; style=&quot;font-weight:bold;&quot;&gt;logged above.&lt;/span&gt;&lt;span id=&quot;last_element_child&quot;&gt; &lt;/span&gt;&lt;/p&gt;
+&lt;script&gt;&lt;![CDATA[
+test(function() {
+  var parentEl = document.getElementById(&quot;parentEl&quot;);
+  var lec = parentEl.lastElementChild;
+  parentEl.removeChild(lec);
+  assert_equals(parentEl.childElementCount, 1)
+})
+]]&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementCountdynamicremovehtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementchildElementCountdynamicremovehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-remove.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-childElementCount-dynamic-remove.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-remove.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-dynamic-remove.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Dynamic Removal of Elements&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;h1&gt;Test of Dynamic Removal of Elements&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;parentEl&quot;&gt;The result of this test is
+&lt;span id=&quot;first_element_child&quot; style=&quot;font-weight:bold;&quot;&gt;unknown.&lt;/span&gt;&lt;span id=&quot;last_element_child&quot;&gt; &lt;/span&gt;&lt;/p&gt;
+&lt;script&gt;
+test(function() {
+  var parentEl = document.getElementById(&quot;parentEl&quot;);
+  var lec = parentEl.lastElementChild;
+  parentEl.removeChild(lec);
+  assert_equals(parentEl.childElementCount, 1)
+})
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementCountexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementchildElementCountexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-childElementCount-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+Test of childElementCount
+
+The result of this test is given above.
+
+
+PASS childElementCount 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementCountnochildexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementchildElementCountnochildexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-nochild-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-childElementCount-nochild-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-nochild-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-nochild-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+Test of childElementCount with No Child Element Nodes
+
+Test.
+
+
+PASS childElementCount without Child Element Nodes 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementCountnochildhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementchildElementCountnochildhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-nochild.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-childElementCount-nochild.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-nochild.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-nochild.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;childElementCount without Child Element Nodes&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;h1&gt;Test of childElementCount with No Child Element Nodes&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;parentEl&quot; style=&quot;font-weight:bold;&quot;&gt;Test.&lt;/p&gt;
+&lt;script&gt;
+test(function() {
+  var parentEl = document.getElementById(&quot;parentEl&quot;)
+  assert_equals(parentEl.childElementCount, 0)
+})
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementCountnochildxhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementchildElementCountnochildxhtmlxhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-nochild.xhtml (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-childElementCount-nochild-xhtml.xhtml) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-nochild.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-nochild.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+&lt;head&gt;
+&lt;title&gt;childElementCount without Child Element Nodes&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Test of childElementCount with No Child Element Nodes&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;parentEl&quot; style=&quot;font-weight:bold;&quot;&gt;Test.&lt;/p&gt;
+&lt;script&gt;&lt;![CDATA[
+test(function() {
+  var parentEl = document.getElementById(&quot;parentEl&quot;)
+  assert_equals(parentEl.childElementCount, 0)
+})
+]]&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementCountxhtmlexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementchildElementCountxhtmlexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-xhtml-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-childElementCount-xhtml-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-xhtml-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-xhtml-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+Test of childElementCount
+
+The result of this test is unknown.
+
+
+PASS childElementCount 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementCountxhtmlxhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementchildElementCountxhtmlxhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-xhtml.xhtml (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-childElementCount-xhtml.xhtml) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-xhtml.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount-xhtml.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+&lt;head&gt;
+&lt;title&gt;childElementCount&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Test of childElementCount&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;parentEl&quot;&gt;The result of &lt;span id=&quot;first_element_child&quot;&gt;&lt;span&gt;this&lt;/span&gt; &lt;span&gt;test&lt;/span&gt;&lt;/span&gt; is
+&lt;span id=&quot;middle_element_child&quot; style=&quot;font-weight:bold;&quot;&gt;unknown.&lt;/span&gt;
+
+
+
+&lt;span id=&quot;last_element_child&quot; style=&quot;display:none;&quot;&gt;fnord&lt;/span&gt; &lt;/p&gt;
+&lt;script&gt;&lt;![CDATA[
+test(function() {
+  var parentEl = document.getElementById(&quot;parentEl&quot;)
+  assert_true(&quot;childElementCount&quot; in parentEl)
+  assert_equals(parentEl.childElementCount, 3)
+})
+]]&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildElementCounthtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementchildElementCounthtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-childElementCount.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-childElementCount.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;childElementCount&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;h1&gt;Test of childElementCount&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;parentEl&quot;&gt;The result of &lt;span id=&quot;first_element_child&quot;&gt;&lt;span&gt;this&lt;/span&gt; &lt;span&gt;test&lt;/span&gt;&lt;/span&gt; is
+&lt;span id=&quot;middle_element_child&quot; style=&quot;font-weight:bold;&quot;&gt;given above.&lt;/span&gt;
+
+
+
+&lt;span id=&quot;last_element_child&quot; style=&quot;display:none;&quot;&gt;fnord&lt;/span&gt; &lt;/p&gt;
+&lt;script&gt;
+test(function() {
+  var parentEl = document.getElementById(&quot;parentEl&quot;)
+  assert_true(&quot;childElementCount&quot; in parentEl)
+  assert_equals(parentEl.childElementCount, 3)
+})
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildrenexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementchildrenexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-children-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-children-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-children-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-children-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+
+
+PASS HTMLCollection edge cases 
+FAIL HTMLCollection edge cases 1 assert_array_equals: lengths differ, expected 3 got 4
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementchildrenhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementchildrenhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-children.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-children.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-children.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-children.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;HTMLCollection edge cases&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;div id=&quot;test&quot;&gt;&lt;img&gt;&lt;img id=foo&gt;&lt;img id=foo&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  var container = document.getElementById(&quot;test&quot;);
+  var result = container.children.item(&quot;foo&quot;);
+  assert_true(result instanceof Element, &quot;Expected an Element.&quot;);
+  assert_false(result.hasAttribute(&quot;id&quot;), &quot;Expected the IDless Element.&quot;)
+})
+test(function() {
+  var container = document.getElementById(&quot;test&quot;);
+  var list = container.children;
+  var result = [];
+  for (var p in list) {
+    if (list.hasOwnProperty(p)) {
+      result.push(p);
+    }
+  }
+  assert_array_equals(result, ['0', '1', '2']);
+  result = Object.getOwnPropertyNames(list);
+  assert_array_equals(result, ['0', '1', '2', 'foo']);
+});
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementclasslistexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementclasslistexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-classlist-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-classlist-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-classlist-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-classlist-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,66 @@
</span><ins>+
+PASS Element.classList must exist as an object 
+PASS Element.classList must exist as an object even if the element has no class attribute 
+PASS DOMTokenList should be exposed for prototyping 
+PASS prototyping DOMTokenList should work 
+PASS Element.classList must implement DOMTokenList 
+PASS CSS .foo selectors must not match elements without any class 
+FAIL classList must be correct for an element that has classes assert_equals: duplicates in initial string should be removed per https://dom.spec.whatwg.org/#concept-class expected 1 but got 2
+PASS classList.length must be 0 for an element that has no classes 
+PASS classList must not contain an undefined class 
+PASS classList.item() must return null for out-of-range index 
+PASS classList.item() must return null for negative index 
+PASS classList[index] must be undefined for out-of-range index 
+PASS classList[index] must be undefined for negative index 
+PASS className should contain initial markup whitespace 
+FAIL empty classList should return the empty string since the ordered set parser skip the whitespaces assert_equals: implicit expected &quot;&quot; but got &quot; &quot;
+PASS .contains(empty_string) must throw a SYNTAX_ERR 
+PASS .add(empty_string) must throw a SYNTAX_ERR 
+PASS .remove(empty_string) must throw a SYNTAX_ERR 
+PASS .toggle(empty_string) must throw a SYNTAX_ERR 
+PASS .contains(string_with_spaces) must throw an INVALID_CHARACTER_ERR 
+PASS .add(string_with_spaces) must throw an INVALID_CHARACTER_ERR 
+PASS .remove(string_with_spaces) must throw an INVALID_CHARACTER_ERR 
+PASS .toggle(string_with_spaces) must throw an INVALID_CHARACTER_ERR 
+PASS computed style must update when setting .className 
+PASS classList.contains must update when .className is changed 
+PASS classList.contains must be case sensitive 
+PASS classList.contains must not match when punctuation characters are added 
+PASS classList.add must not cause the CSS selector to stop matching 
+PASS classList.add must not remove existing classes 
+PASS classList.contains case sensitivity must match a case-specific string 
+PASS classList.length must correctly reflect the number of tokens 
+PASS classList.item(0) must return the first token 
+PASS classList.item must return case-sensitive strings and preserve token order 
+PASS classList[0] must return the first token 
+PASS classList[index] must return case-sensitive strings and preserve token order 
+PASS classList[index] must still be undefined for out-of-range index when earlier indexes exist 
+PASS className must update correctly when items have been added through classList 
+PASS classList must stringify correctly when items have been added 
+PASS classList.add should not add a token if it already exists 
+PASS classList.remove removes arguments passed, if they are present. 
+PASS classList.remove must remove existing tokens 
+PASS classList.remove must not break case-sensitive CSS selector matching 
+PASS classList.remove must remove duplicated tokens 
+PASS classList.remove must collapse whitespace around removed tokens 
+FAIL classList.remove must collapse whitespaces around each token assert_equals: implicit expected &quot;token1&quot; but got &quot; token1&quot;
+FAIL classList.remove must collapse whitespaces around each token and remove duplicates assert_equals: implicit expected &quot;token1&quot; but got &quot;  token1 token1  &quot;
+PASS classList.remove must collapse whitespace when removing duplicate tokens 
+FAIL classList.add must collapse whitespaces and remove duplicates when adding a token that already exists assert_equals: implicit expected &quot;token1&quot; but got &quot;  token1  token1  &quot;
+PASS classList.toggle must toggle tokens case-sensitively when adding 
+PASS classList.toggle must not break case-sensitive CSS selector matching 
+PASS classList.toggle must be able to remove tokens 
+PASS classList.toggle must be case-sensitive when removing tokens 
+PASS CSS class selectors must stop matching when all classes have been removed 
+PASS className must be empty when all classes have been removed 
+PASS classList must stringify to an empty string when all classes have been removed 
+PASS classList.item(0) must return null when all classes have been removed 
+PASS classList[0] must be undefined when all classes have been removed 
+PASS classList.add should treat &quot; &quot; as a space 
+FAIL classList.add should treat \t as a space assert_equals: expected &quot;a b&quot; but got &quot;a\tb&quot;
+FAIL classList.add should treat \r as a space assert_equals: expected &quot;a b&quot; but got &quot;a\rb&quot;
+FAIL classList.add should treat \n as a space assert_equals: expected &quot;a b&quot; but got &quot;a\nb&quot;
+FAIL classList.add should treat \f as a space assert_equals: expected &quot;a b&quot; but got &quot;a\fb&quot;
+PASS classList.length must be read-only 
+PASS classList must be read-only 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementclasslisthtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementclasslisthtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-classlist.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-classlist.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-classlist.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-classlist.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,309 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+  &lt;head class=&quot;test test&quot;&gt;
+    &lt;title class=&quot; &quot;&gt;Element.classList in case-sensitive documents&lt;/title&gt;
+    &lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#concept-class&quot;&gt;
+    &lt;script type=&quot;text/javascript&quot; src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+    &lt;script type=&quot;text/javascript&quot; src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+    &lt;style type=&quot;text/css&quot;&gt;
+.foo { font-style: italic; }
+    &lt;/style&gt;
+    &lt;script type=&quot;text/javascript&quot;&gt;
+var elem = document.getElementsByTagName('title')[0], secondelem = document.getElementsByTagName('head')[0];
+test(function () {
+  assert_equals( typeof elem.classList, 'object', 'critical test; ignore any results after this' );
+}, 'Element.classList must exist as an object');
+test(function () {
+  assert_equals( typeof document.documentElement.classList, 'object' );
+}, 'Element.classList must exist as an object even if the element has no class attribute');
+test(function () {
+  assert_true( !!window.DOMTokenList );
+}, 'DOMTokenList should be exposed for prototyping');
+test(function () {
+  DOMTokenList.prototype.customProperty = true;
+  assert_true( elem.classList.customProperty );
+}, 'prototyping DOMTokenList should work');
+test(function () {
+  assert_true( elem.classList instanceof window.DOMTokenList );
+  assert_equals( elem.classList.constructor, window.DOMTokenList );
+}, 'Element.classList must implement DOMTokenList');
+test(function () {
+  assert_not_equals( getComputedStyle(elem,null).fontStyle, 'italic', 'critical test; required by the testsuite' );
+}, 'CSS .foo selectors must not match elements without any class');
+test(function () {
+  assert_equals( secondelem.classList.length, 1, 'duplicates in initial string should be removed per https://dom.spec.whatwg.org/#concept-class' );
+  assert_equals( secondelem.classList.item(0), 'test' );
+  assert_true( secondelem.classList.contains('test') );
+}, 'classList must be correct for an element that has classes');
+test(function () {
+  assert_equals( elem.classList.length, 0 );
+}, 'classList.length must be 0 for an element that has no classes');
+test(function () {
+  assert_false( elem.classList.contains('foo') );
+}, 'classList must not contain an undefined class');
+test(function () {
+  assert_equals( elem.classList.item(0), null );
+}, 'classList.item() must return null for out-of-range index');
+test(function () {
+  assert_equals( elem.classList.item(-1), null );
+}, 'classList.item() must return null for negative index');
+test(function () {
+  /* the normative part of the spec states that:
+  &quot;unless tokens is empty, in which case there are no supported property indices&quot;
+  ...
+  &quot;The term[...] supported property indices [is] used as defined in the WebIDL specification.&quot;
+  WebIDL creates actual OwnProperties and then [] just acts as a normal property lookup */
+  assert_equals( elem.classList[0], undefined );
+}, 'classList[index] must be undefined for out-of-range index');
+test(function () {
+  assert_equals( elem.classList[-1], undefined );
+}, 'classList[index] must be undefined for negative index');
+test(function () {
+  assert_equals( elem.className, ' ' );
+}, 'className should contain initial markup whitespace');
+test(function () {
+  assert_equals( elem.classList + '', '', 'implicit' );
+  assert_equals( elem.classList.toString(), '', 'explicit' );
+}, 'empty classList should return the empty string since the ordered set parser skip the whitespaces');
+test(function () {
+  assert_throws( 'SYNTAX_ERR', function () { elem.classList.contains(''); } );
+}, '.contains(empty_string) must throw a SYNTAX_ERR');
+test(function () {
+  assert_throws( 'SYNTAX_ERR', function () { elem.classList.add(''); } );
+}, '.add(empty_string) must throw a SYNTAX_ERR');
+test(function () {
+  assert_throws( 'SYNTAX_ERR', function () { elem.classList.remove(''); } );
+}, '.remove(empty_string) must throw a SYNTAX_ERR');
+test(function () {
+  assert_throws( 'SYNTAX_ERR', function () { elem.classList.toggle(''); } );
+}, '.toggle(empty_string) must throw a SYNTAX_ERR');
+test(function () {
+  assert_throws( 'INVALID_CHARACTER_ERR', function () { elem.classList.contains('a b'); } );
+}, '.contains(string_with_spaces) must throw an INVALID_CHARACTER_ERR');
+test(function () {
+  assert_throws( 'INVALID_CHARACTER_ERR', function () { elem.classList.add('a b'); } );
+}, '.add(string_with_spaces) must throw an INVALID_CHARACTER_ERR');
+test(function () {
+  assert_throws( 'INVALID_CHARACTER_ERR', function () { elem.classList.remove('a b'); } );
+}, '.remove(string_with_spaces) must throw an INVALID_CHARACTER_ERR');
+test(function () {
+  assert_throws( 'INVALID_CHARACTER_ERR', function () { elem.classList.toggle('a b'); } );
+}, '.toggle(string_with_spaces) must throw an INVALID_CHARACTER_ERR');
+elem.className = 'foo';
+test(function () {
+  assert_equals( getComputedStyle(elem,null).fontStyle, 'italic', 'critical test; required by the testsuite' );
+}, 'computed style must update when setting .className');
+test(function () {
+  assert_true( elem.classList.contains('foo') );
+}, 'classList.contains must update when .className is changed');
+test(function () {
+  assert_false( elem.classList.contains('FOO') );
+}, 'classList.contains must be case sensitive');
+test(function () {
+  assert_false( elem.classList.contains('foo.') );
+  assert_false( elem.classList.contains('foo)') );
+  assert_false( elem.classList.contains('foo\'') );
+  assert_false( elem.classList.contains('foo$') );
+  assert_false( elem.classList.contains('foo~') );
+  assert_false( elem.classList.contains('foo?') );
+  assert_false( elem.classList.contains('foo\\') );
+}, 'classList.contains must not match when punctuation characters are added');
+test(function () {
+  elem.classList.add('FOO');
+  assert_equals( getComputedStyle(elem,null).fontStyle, 'italic' );
+}, 'classList.add must not cause the CSS selector to stop matching');
+test(function () {
+  assert_true( elem.classList.contains('foo') );
+}, 'classList.add must not remove existing classes');
+test(function () {
+  assert_true( elem.classList.contains('FOO') );
+}, 'classList.contains case sensitivity must match a case-specific string');
+test(function () {
+  assert_equals( elem.classList.length, 2 );
+}, 'classList.length must correctly reflect the number of tokens');
+test(function () {
+  assert_equals( elem.classList.item(0), 'foo' );
+}, 'classList.item(0) must return the first token');
+test(function () {
+  assert_equals( elem.classList.item(1), 'FOO' );
+}, 'classList.item must return case-sensitive strings and preserve token order');
+test(function () {
+  assert_equals( elem.classList[0], 'foo' );
+}, 'classList[0] must return the first token');
+test(function () {
+  assert_equals( elem.classList[1], 'FOO' );
+}, 'classList[index] must return case-sensitive strings and preserve token order');
+test(function () {
+  /* the normative part of the spec states that:
+  &quot;The object's supported property indices are the numbers in the range zero to the number of tokens in tokens minus one&quot;
+  ...
+  &quot;The term[...] supported property indices [is] used as defined in the WebIDL specification.&quot;
+  WebIDL creates actual OwnProperties and then [] just acts as a normal property lookup */
+  assert_equals( elem.classList[2], undefined );
+}, 'classList[index] must still be undefined for out-of-range index when earlier indexes exist');
+test(function () {
+  assert_equals( elem.className, 'foo FOO' );
+}, 'className must update correctly when items have been added through classList');
+test(function () {
+  assert_equals( elem.classList + '', 'foo FOO', 'implicit' );
+  assert_equals( elem.classList.toString(), 'foo FOO', 'explicit' );
+}, 'classList must stringify correctly when items have been added');
+test(function () {
+  elem.classList.add('foo');
+  assert_equals( elem.classList.length, 2 );
+  assert_equals( elem.classList + '', 'foo FOO', 'implicit' );
+  assert_equals( elem.classList.toString(), 'foo FOO', 'explicit' );
+}, 'classList.add should not add a token if it already exists');
+test(function () {
+  elem.classList.remove('bar');
+  assert_equals( elem.classList.length, 2 );
+  assert_equals( elem.classList + '', 'foo FOO', 'implicit' );
+  assert_equals( elem.classList.toString(), 'foo FOO', 'explicit' );
+}, 'classList.remove removes arguments passed, if they are present.');
+test(function () {
+  elem.classList.remove('foo');
+  assert_equals( elem.classList.length, 1 );
+  assert_equals( elem.classList + '', 'FOO', 'implicit' );
+  assert_equals( elem.classList.toString(), 'FOO', 'explicit' );
+  assert_false( elem.classList.contains('foo') );
+  assert_true( elem.classList.contains('FOO') );
+}, 'classList.remove must remove existing tokens');
+test(function () {
+  assert_not_equals( getComputedStyle(elem,null).fontStyle, 'italic' );
+}, 'classList.remove must not break case-sensitive CSS selector matching');
+test(function () {
+  secondelem.classList.remove('test');
+  assert_equals( secondelem.classList.length, 0 );
+  assert_false( secondelem.classList.contains('test') );
+}, 'classList.remove must remove duplicated tokens');
+test(function () {
+  secondelem.className = 'token1 token2 token3';
+  secondelem.classList.remove('token2');
+  assert_equals( secondelem.classList + '', 'token1 token3', 'implicit' );
+  assert_equals( secondelem.classList.toString(), 'token1 token3', 'explicit' );
+}, 'classList.remove must collapse whitespace around removed tokens');
+test(function () {
+  secondelem.className = ' token1 token2  ';
+  secondelem.classList.remove('token2');
+  assert_equals( secondelem.classList + '', 'token1', 'implicit' );
+  assert_equals( secondelem.classList.toString(), 'token1', 'explicit' );
+}, 'classList.remove must collapse whitespaces around each token');
+test(function () {
+  secondelem.className = '  token1  token2  token1  ';
+  secondelem.classList.remove('token2');
+  assert_equals( secondelem.classList + '', 'token1', 'implicit' );
+  assert_equals( secondelem.classList.toString(), 'token1', 'explicit' );
+}, 'classList.remove must collapse whitespaces around each token and remove duplicates');
+test(function () {
+  secondelem.className = '  token1  token2  token1  ';
+  secondelem.classList.remove('token1');
+  assert_equals( secondelem.classList + '', 'token2', 'implicit' );
+  assert_equals( secondelem.classList.toString(), 'token2', 'explicit' );
+}, 'classList.remove must collapse whitespace when removing duplicate tokens');
+test(function () {
+  secondelem.className = '  token1  token1  ';
+  secondelem.classList.add('token1');
+  assert_equals( secondelem.classList + '', 'token1', 'implicit' );
+  assert_equals( secondelem.classList.toString(), 'token1', 'explicit' );
+}, 'classList.add must collapse whitespaces and remove duplicates when adding a token that already exists');
+test(function () {
+  assert_true(elem.classList.toggle('foo'));
+  assert_equals( elem.classList.length, 2 );
+  assert_true( elem.classList.contains('foo') );
+  assert_true( elem.classList.contains('FOO') );
+}, 'classList.toggle must toggle tokens case-sensitively when adding');
+test(function () {
+  assert_equals( getComputedStyle(elem,null).fontStyle, 'italic' );
+}, 'classList.toggle must not break case-sensitive CSS selector matching');
+test(function () {
+  assert_false(elem.classList.toggle('foo'));
+}, 'classList.toggle must be able to remove tokens');
+test(function () {
+  //will return true if the last test incorrectly removed both
+  assert_false(elem.classList.toggle('FOO'));
+  assert_false( elem.classList.contains('foo') );
+  assert_false( elem.classList.contains('FOO') );
+}, 'classList.toggle must be case-sensitive when removing tokens');
+test(function () {
+  assert_not_equals( getComputedStyle(elem,null).fontStyle, 'italic' );
+}, 'CSS class selectors must stop matching when all classes have been removed');
+test(function () {
+  assert_equals( elem.className, '' );
+}, 'className must be empty when all classes have been removed');
+test(function () {
+  assert_equals( elem.classList + '', '', 'implicit' );
+  assert_equals( elem.classList.toString(), '', 'explicit' );
+}, 'classList must stringify to an empty string when all classes have been removed');
+test(function () {
+  assert_equals( elem.classList.item(0), null );
+}, 'classList.item(0) must return null when all classes have been removed');
+test(function () {
+  /* the normative part of the spec states that:
+  &quot;unless the length is zero, in which case there are no supported property indices&quot;
+  ...
+  &quot;The term[...] supported property indices [is] used as defined in the WebIDL specification.&quot;
+  WebIDL creates actual OwnProperties and then [] just acts as a normal property lookup */
+  assert_equals( elem.classList[0], undefined );
+}, 'classList[0] must be undefined when all classes have been removed');
+// The ordered set parser must skip ASCII whitespace (U+0009, U+000A, U+000C, U+000D, and U+0020.)
+test(function () {
+  var foo = document.createElement('div');
+  foo.className = 'a ';
+  foo.classList.add('b');
+  assert_equals(foo.className,'a b');
+}, 'classList.add should treat &quot; &quot; as a space');
+test(function () {
+  var foo = document.createElement('div');
+  foo.className = 'a\t';
+  foo.classList.add('b');
+  assert_equals(foo.className,'a b');
+}, 'classList.add should treat \\t as a space');
+test(function () {
+  var foo = document.createElement('div');
+  foo.className = 'a\r';
+  foo.classList.add('b');
+  assert_equals(foo.className,'a b');
+}, 'classList.add should treat \\r as a space');
+test(function () {
+  var foo = document.createElement('div');
+  foo.className = 'a\n';
+  foo.classList.add('b');
+  assert_equals(foo.className,'a b');
+}, 'classList.add should treat \\n as a space');
+test(function () {
+  var foo = document.createElement('div');
+  foo.className = 'a\f';
+  foo.classList.add('b');
+  assert_equals(foo.className,'a b');
+}, 'classList.add should treat \\f as a space');
+test(function () {
+  //WebIDL and ECMAScript 5 - a readonly property has a getter but not a setter
+  //ES5 makes [[Put]] fail but not throw
+  var failed = false;
+  secondelem.className = 'token1';
+  try {
+    secondelem.classList.length = 0;
+  } catch(e) {
+    failed = e;
+  }
+  assert_equals(secondelem.classList.length,1);
+  assert_false(failed,'an error was thrown');
+}, 'classList.length must be read-only');
+test(function () {
+  var failed = false, realList = secondelem.classList;
+  try {
+    secondelem.classList = '';
+  } catch(e) {
+    failed = e;
+  }
+  assert_equals(secondelem.classList,realList);
+  assert_false(failed,'an error was thrown');
+}, 'classList must be read-only');
+    &lt;/script&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+
+    &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+
+  &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementclosestexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementclosestexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-closest-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-closest-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-closest-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-closest-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+
+PASS Element.closest with context node 'test12' and selector 'select' 
+PASS Element.closest with context node 'test13' and selector 'fieldset' 
+PASS Element.closest with context node 'test13' and selector 'div' 
+PASS Element.closest with context node 'test3' and selector 'body' 
+PASS Element.closest with context node 'test4' and selector '[default]' 
+PASS Element.closest with context node 'test4' and selector '[selected]' 
+PASS Element.closest with context node 'test11' and selector '[selected]' 
+PASS Element.closest with context node 'test12' and selector '[name=&quot;form-a&quot;]' 
+PASS Element.closest with context node 'test13' and selector 'form[name=&quot;form-a&quot;]' 
+PASS Element.closest with context node 'test9' and selector 'input[required]' 
+PASS Element.closest with context node 'test9' and selector 'select[required]' 
+PASS Element.closest with context node 'test13' and selector 'div:not(.div1)' 
+PASS Element.closest with context node 'test6' and selector 'div.div3' 
+PASS Element.closest with context node 'test1' and selector 'div#test7' 
+PASS Element.closest with context node 'test12' and selector '.div3 &gt; .div2' 
+PASS Element.closest with context node 'test12' and selector '.div3 &gt; .div1' 
+PASS Element.closest with context node 'test9' and selector 'form &gt; input[required]' 
+PASS Element.closest with context node 'test12' and selector 'fieldset &gt; select[required]' 
+PASS Element.closest with context node 'test6' and selector 'input + fieldset' 
+PASS Element.closest with context node 'test3' and selector 'form + form' 
+PASS Element.closest with context node 'test5' and selector 'form + form' 
+PASS Element.closest with context node 'test10' and selector ':empty' 
+PASS Element.closest with context node 'test11' and selector ':last-child' 
+PASS Element.closest with context node 'test12' and selector ':first-child' 
+PASS Element.closest with context node 'test11' and selector ':invalid' 
+PASS Element.closest with context node 'test4' and selector ':scope' 
+PASS Element.closest with context node 'test4' and selector 'select &gt; :scope' 
+PASS Element.closest with context node 'test4' and selector 'div &gt; :scope' 
+FAIL Element.closest with context node 'test4' and selector ':has(&gt; :scope)' SyntaxError: DOM Exception 12
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementclosesthtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementclosesthtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-closest.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-closest.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-closest.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-closest.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,73 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;meta charset=utf8&gt;
+&lt;title&gt;Test for Element.closest&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;body id=&quot;body&quot;&gt;
+  &lt;div id=&quot;test8&quot; class=&quot;div3&quot; style=&quot;display:none&quot;&gt;
+    &lt;div id=&quot;test7&quot; class=&quot;div2&quot;&gt;
+      &lt;div id=&quot;test6&quot; class=&quot;div1&quot;&gt;
+        &lt;form id=&quot;test10&quot; class=&quot;form2&quot;&gt;&lt;/form&gt;
+        &lt;form id=&quot;test5&quot; class=&quot;form1&quot; name=&quot;form-a&quot;&gt;
+          &lt;input id=&quot;test1&quot; class=&quot;input1&quot; required&gt;
+          &lt;fieldset class=&quot;fieldset2&quot; id=&quot;test2&quot;&gt;
+            &lt;select id=&quot;test3&quot; class=&quot;select1&quot; required&gt;
+              &lt;option default id=&quot;test4&quot; value=&quot;&quot;&gt;Test4&lt;/option&gt;
+              &lt;option selected id=&quot;test11&quot;&gt;Test11&lt;/option&gt;
+              &lt;option id=&quot;test12&quot;&gt;Test12&lt;/option&gt;
+              &lt;option id=&quot;test13&quot;&gt;Test13&lt;/option&gt;
+            &lt;/select&gt;
+            &lt;input id=&quot;test9&quot; type=&quot;text&quot; required&gt;
+          &lt;/fieldset&gt;
+        &lt;/form&gt;
+      &lt;/div&gt;
+    &lt;/div&gt;
+  &lt;/div&gt;
+  &lt;div id=log&gt;&lt;/div&gt;
+&lt;script&gt;
+  do_test(&quot;select&quot;                     , &quot;test12&quot;, &quot;test3&quot;);
+  do_test(&quot;fieldset&quot;                   , &quot;test13&quot;, &quot;test2&quot;);
+  do_test(&quot;div&quot;                        , &quot;test13&quot;, &quot;test6&quot;);
+  do_test(&quot;body&quot;                       , &quot;test3&quot; , &quot;body&quot;);
+
+  do_test(&quot;[default]&quot;                  , &quot;test4&quot; , &quot;test4&quot;);
+  do_test(&quot;[selected]&quot;                 , &quot;test4&quot; , &quot;&quot;);
+  do_test(&quot;[selected]&quot;                 , &quot;test11&quot;, &quot;test11&quot;);
+  do_test('[name=&quot;form-a&quot;]'            , &quot;test12&quot;, &quot;test5&quot;);
+  do_test('form[name=&quot;form-a&quot;]'        , &quot;test13&quot;, &quot;test5&quot;);
+  do_test(&quot;input[required]&quot;            , &quot;test9&quot; , &quot;test9&quot;);
+  do_test(&quot;select[required]&quot;           , &quot;test9&quot; , &quot;&quot;);
+
+  do_test(&quot;div:not(.div1)&quot;             , &quot;test13&quot;, &quot;test7&quot;);
+  do_test(&quot;div.div3&quot;                   , &quot;test6&quot; , &quot;test8&quot;);
+  do_test(&quot;div#test7&quot;                  , &quot;test1&quot; , &quot;test7&quot;);
+
+  do_test(&quot;.div3 &gt; .div2&quot;              , &quot;test12&quot;, &quot;test7&quot;);
+  do_test(&quot;.div3 &gt; .div1&quot;              , &quot;test12&quot;, &quot;&quot;);
+  do_test(&quot;form &gt; input[required]&quot;     , &quot;test9&quot; , &quot;&quot;);
+  do_test(&quot;fieldset &gt; select[required]&quot;, &quot;test12&quot;, &quot;test3&quot;);
+
+  do_test(&quot;input + fieldset&quot;           , &quot;test6&quot; , &quot;&quot;);
+  do_test(&quot;form + form&quot;                , &quot;test3&quot; , &quot;test5&quot;);
+  do_test(&quot;form + form&quot;                , &quot;test5&quot; , &quot;test5&quot;);
+
+  do_test(&quot;:empty&quot;                     , &quot;test10&quot;, &quot;test10&quot;);
+  do_test(&quot;:last-child&quot;                , &quot;test11&quot;, &quot;test2&quot;);
+  do_test(&quot;:first-child&quot;               , &quot;test12&quot;, &quot;test3&quot;);
+  do_test(&quot;:invalid&quot;                   , &quot;test11&quot;, &quot;test2&quot;);
+
+  do_test(&quot;:scope&quot;                     , &quot;test4&quot;,  &quot;test4&quot;);
+  do_test(&quot;select &gt; :scope&quot;            , &quot;test4&quot;,  &quot;test4&quot;);
+  do_test(&quot;div &gt; :scope&quot;               , &quot;test4&quot;,  &quot;&quot;);
+  do_test(&quot;:has(&gt; :scope)&quot;             , &quot;test4&quot;,  &quot;test3&quot;);
+function do_test(aSelector, aElementId, aTargetId) {
+  test(function() {
+    var el = document.getElementById(aElementId).closest(aSelector);
+    if (el === null) {
+      assert_equals(&quot;&quot;, aTargetId, aSelector);
+    } else {
+      assert_equals(el.id, aTargetId, aSelector);
+    }
+  }, &quot;Element.closest with context node '&quot; + aElementId + &quot;' and selector '&quot; + aSelector + &quot;'&quot;);
+}
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementfirstElementChildentityxhtmlexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementfirstElementChildentityxhtmlexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-entity-xhtml-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-firstElementChild-entity-xhtml-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-entity-xhtml-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-entity-xhtml-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+Test of Entity References
+
+The result of this test is unknown.
+
+
+PASS Entity References 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementfirstElementChildentityxhtmlxhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementfirstElementChildentityxhtmlxhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-entity-xhtml.xhtml (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-firstElementChild-entity-xhtml.xhtml) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-entity-xhtml.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-entity-xhtml.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;
+        &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;
+[
+&lt;!ENTITY tree &quot;&lt;span id='first_element_child' style='font-weight:bold;'&gt;unknown.&lt;/span&gt;&quot;&gt;
+]&gt;
+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt;
+&lt;head&gt;
+&lt;title&gt;Entity References&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Test of Entity References&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;parentEl&quot;&gt;The result of this test is &amp;tree;&lt;/p&gt;
+&lt;script&gt;&lt;![CDATA[
+test(function() {
+  var parentEl = document.getElementById(&quot;parentEl&quot;)
+  var fec = parentEl.firstElementChild;
+  assert_true(!!fec)
+  assert_equals(fec.nodeType, 1)
+  assert_equals(fec.getAttribute(&quot;id&quot;), &quot;first_element_child&quot;)
+})
+]]&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementfirstElementChildexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementfirstElementChildexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-firstElementChild-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+Test of firstElementChild
+
+The result of this test is logged above.
+
+
+PASS firstElementChild 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementfirstElementChildnamespaceexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementfirstElementChildnamespaceexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-namespace-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-firstElementChild-namespace-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-namespace-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-namespace-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+Test of firstElementChild with namespaces
+
+The result of this test is a unknown.
+
+
+PASS firstElementChild with namespaces 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementfirstElementChildnamespacexhtmlexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementfirstElementChildnamespacexhtmlexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-namespace-xhtml-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-firstElementChild-namespace-xhtml-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-namespace-xhtml-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-namespace-xhtml-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+Test of firstElementChild with namespaces
+
+The result of this test is logged above.
+
+
+PASS firstElementChild with namespaces 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementfirstElementChildnamespacexhtmlxhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementfirstElementChildnamespacexhtmlxhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-namespace-xhtml.xhtml (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-firstElementChild-namespace-xhtml.xhtml) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-namespace-xhtml.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-namespace-xhtml.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;
+      xmlns:pickle=&quot;http://ns.example.org/pickle&quot;&gt;
+&lt;head&gt;
+&lt;title&gt;firstElementChild with namespaces&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Test of firstElementChild with namespaces&lt;/h1&gt;
+&lt;div id=&quot;parentEl&quot;&gt;
+  &lt;pickle:dill id=&quot;first_element_child&quot;/&gt;
+&lt;/div&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;parentEl&quot;&gt;The result of this test is
+&lt;span id=&quot;first_element_child&quot; style=&quot;font-weight:bold;&quot;&gt;logged above.&lt;/span&gt;&lt;/p&gt;
+&lt;script&gt;&lt;![CDATA[
+test(function() {
+  var parentEl = document.getElementById(&quot;parentEl&quot;);
+  var fec = parentEl.firstElementChild;
+  assert_true(!!fec)
+  assert_equals(fec.nodeType, 1)
+  assert_equals(fec.getAttribute(&quot;id&quot;), &quot;first_element_child&quot;)
+  assert_equals(fec.localName, &quot;dill&quot;)
+})
+]]&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementfirstElementChildnamespacehtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementfirstElementChildnamespacehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-namespace.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-firstElementChild-namespace.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-namespace.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild-namespace.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;firstElementChild with namespaces&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;h1&gt;Test of firstElementChild with namespaces&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;parentEl&quot;&gt;The result of this test is a unknown.&lt;/p&gt;
+&lt;script&gt;
+test(function() {
+  var parentEl = document.getElementById(&quot;parentEl&quot;)
+  var el = document.createElementNS(&quot;http://ns.example.org/pickle&quot;, &quot;pickle:dill&quot;)
+  el.setAttribute(&quot;id&quot;, &quot;first_element_child&quot;)
+  parentEl.appendChild(el)
+  var fec = parentEl.firstElementChild
+  assert_true(!!fec)
+  assert_equals(fec.nodeType, 1)
+  assert_equals(fec.getAttribute(&quot;id&quot;), &quot;first_element_child&quot;)
+  assert_equals(fec.localName, &quot;dill&quot;)
+})
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementfirstElementChildhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementfirstElementChildhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-firstElementChild.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;firstElementChild&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;h1&gt;Test of firstElementChild&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;parentEl&quot;&gt;The result of this test is
+&lt;span id=&quot;first_element_child&quot; style=&quot;font-weight:bold;&quot;&gt;logged above.&lt;/span&gt;&lt;/p&gt;
+&lt;script&gt;
+test(function() {
+  var parentEl = document.getElementById(&quot;parentEl&quot;);
+  var fec = parentEl.firstElementChild;
+  assert_true(!!fec)
+  assert_equals(fec.nodeType, 1)
+  assert_equals(fec.getAttribute(&quot;id&quot;), &quot;first_element_child&quot;)
+})
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementfirstElementChildxhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementfirstElementChildxhtmlxhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild.xhtml (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-firstElementChild-xhtml.xhtml) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-firstElementChild.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+&lt;head&gt;
+&lt;title&gt;firstElementChild&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Test of firstElementChild&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;parentEl&quot;&gt;The result of this test is
+&lt;span id=&quot;first_element_child&quot; style=&quot;font-weight:bold;&quot;&gt;logged above.&lt;/span&gt;&lt;/p&gt;
+&lt;script&gt;&lt;![CDATA[
+test(function() {
+  var parentEl = document.getElementById(&quot;parentEl&quot;);
+  var fec = parentEl.firstElementChild;
+  assert_true(!!fec)
+  assert_equals(fec.nodeType, 1)
+  assert_equals(fec.getAttribute(&quot;id&quot;), &quot;first_element_child&quot;)
+})
+]]&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementgetElementsByClassNameexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementgetElementsByClassNameexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByClassName-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-getElementsByClassName-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByClassName-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByClassName-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+PASS getElementsByClassName should work on disconnected subtrees. 
+PASS Interface should be correct. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementgetElementsByClassNamehtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementgetElementsByClassNamehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByClassName.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-getElementsByClassName.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByClassName.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByClassName.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;Element.getElementsByClassName&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  var a = document.createElement(&quot;a&quot;), b = document.createElement(&quot;b&quot;)
+  b.className = &quot;foo&quot;
+  a.appendChild(b)
+  var list = a.getElementsByClassName(&quot;foo&quot;)
+  assert_array_equals(list, [b])
+  var secondList = a.getElementsByClassName(&quot;foo&quot;)
+  assert_true(list === secondList || list !== secondList, &quot;Caching is allowed.&quot;)
+}, &quot;getElementsByClassName should work on disconnected subtrees.&quot;)
+test(function() {
+  var list = document.getElementsByClassName(&quot;foo&quot;)
+  assert_false(list instanceof NodeList, &quot;NodeList&quot;)
+  assert_true(list instanceof HTMLCollection, &quot;HTMLCollection&quot;)
+}, &quot;Interface should be correct.&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementgetElementsByTagNameexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementgetElementsByTagNameexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagName-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-getElementsByTagName-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagName-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagName-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+
+PASS Interfaces 
+PASS Caching is allowed 
+FAIL Shouldn't be able to set unsigned properties on a HTMLCollection (non-strict mode) assert_equals: expected (undefined) undefined but got (string) &quot;foopy&quot;
+FAIL Shouldn't be able to set unsigned properties on a HTMLCollection (strict mode) assert_throws: function &quot;function () {
+      &quot;use strict&quot;;
+      l[5] = &quot;foopy&quot;
+    }&quot; did not throw
+PASS Should be able to set expando shadowing a proto prop (item) 
+PASS Should be able to set expando shadowing a proto prop (namedItem) 
+FAIL hasOwnProperty, getOwnPropertyDescriptor, getOwnPropertyNames assert_array_equals: lengths differ, expected 2 got 3
+PASS HTML element with uppercase tagName never matches in HTML Documents 
+PASS Element in non-HTML namespace, no prefix, lowercase name 
+PASS Element in non-HTML namespace, no prefix, uppercase name 
+PASS Element in non-HTML namespace, prefix, lowercase name 
+PASS Element in non-HTML namespace, prefix, uppercase name 
+FAIL Element in HTML namespace, no prefix, non-ascii characters in name assert_equals: expected &quot;aÇ&quot; but got &quot;aç&quot;
+PASS Element in non-HTML namespace, non-ascii characters in name 
+PASS Element in HTML namespace, prefix, non-ascii characters in name 
+PASS Element in non-HTML namespace, prefix, non-ascii characters in name 
+PASS getElementsByTagName('*') 
+PASS Matching the context object 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementgetElementsByTagNamehtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementgetElementsByTagNamehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagName.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-getElementsByTagName.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagName.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagName.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Element.getElementsByTagName&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-element-getelementsbytagname&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;Document-Element-getElementsByTagName.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+var element;
+setup(function() {
+  element = document.createElement(&quot;div&quot;);
+  element.appendChild(document.createTextNode(&quot;text&quot;));
+  var p = element.appendChild(document.createElement(&quot;p&quot;));
+  p.appendChild(document.createElement(&quot;a&quot;))
+   .appendChild(document.createTextNode(&quot;link&quot;));
+  p.appendChild(document.createElement(&quot;b&quot;))
+   .appendChild(document.createTextNode(&quot;bold&quot;));
+  p.appendChild(document.createElement(&quot;em&quot;))
+   .appendChild(document.createElement(&quot;u&quot;))
+   .appendChild(document.createTextNode(&quot;emphasized&quot;));
+  element.appendChild(document.createComment(&quot;comment&quot;));
+});
+
+test_getElementsByTagName(element, element);
+
+test(function() {
+  assert_array_equals(element.getElementsByTagName(element.localName), []);
+}, &quot;Matching the context object&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementgetElementsByTagNameNSexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementgetElementsByTagNameNSexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagNameNS-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-getElementsByTagNameNS-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagNameNS-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagNameNS-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+
+PASS Element.getElementsByTagNameNS 
+PASS getElementsByTagNameNS('*', 'body') 
+PASS Empty string namespace 
+PASS body element in test namespace, no prefix 
+PASS body element in test namespace, prefix 
+PASS BODY element in test namespace, no prefix 
+PASS abc element in html namespace 
+PASS ABC element in html namespace 
+PASS AÇ, case sensitivity 
+PASS BODY element in test namespace, prefix 
+PASS getElementsByTagNameNS('http://www.w3.org/1999/xhtml', '*') 
+PASS getElementsByTagNameNS('*', '*') 
+PASS Empty lists 
+PASS Matching the context object (wildcard namespace) 
+PASS Matching the context object (specific namespace) 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementgetElementsByTagNameNShtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementgetElementsByTagNameNShtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagNameNS.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-getElementsByTagNameNS.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagNameNS.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-getElementsByTagNameNS.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,37 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Element.getElementsByTagNameNS&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-element-getelementsbytagnamens&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;Document-Element-getElementsByTagNameNS.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+var element;
+setup(function() {
+  element = document.createElement(&quot;div&quot;);
+  element.appendChild(document.createTextNode(&quot;text&quot;));
+  var p = element.appendChild(document.createElement(&quot;p&quot;));
+  p.appendChild(document.createElement(&quot;a&quot;))
+   .appendChild(document.createTextNode(&quot;link&quot;));
+  p.appendChild(document.createElement(&quot;b&quot;))
+   .appendChild(document.createTextNode(&quot;bold&quot;));
+  p.appendChild(document.createElement(&quot;em&quot;))
+   .appendChild(document.createElement(&quot;u&quot;))
+   .appendChild(document.createTextNode(&quot;emphasized&quot;));
+  element.appendChild(document.createComment(&quot;comment&quot;));
+});
+
+test_getElementsByTagNameNS(element, element);
+
+test(function() {
+  assert_array_equals(element.getElementsByTagNameNS(&quot;*&quot;, element.localName), []);
+}, &quot;Matching the context object (wildcard namespace)&quot;);
+
+test(function() {
+  assert_array_equals(
+    element.getElementsByTagNameNS(&quot;http://www.w3.org/1999/xhtml&quot;,
+                                   element.localName),
+    []);
+}, &quot;Matching the context object (specific namespace)&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementlastElementChildexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementlastElementChildexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-lastElementChild-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-lastElementChild-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-lastElementChild-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-lastElementChild-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+Test of lastElementChild
+
+The result of this test is logged above.
+
+
+PASS lastElementChild 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementlastElementChildxhtmlexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementlastElementChildxhtmlexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-lastElementChild-xhtml-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-lastElementChild-xhtml-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-lastElementChild-xhtml-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-lastElementChild-xhtml-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+Test of firstElementChild
+
+The result of this test is logged above.
+
+
+PASS firstElementChild 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementlastElementChildxhtmlxhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementlastElementChildxhtmlxhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-lastElementChild-xhtml.xhtml (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-lastElementChild-xhtml.xhtml) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-lastElementChild-xhtml.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-lastElementChild-xhtml.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+&lt;head&gt;
+&lt;title&gt;firstElementChild&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Test of firstElementChild&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;parentEl&quot;&gt;The result of &lt;span id=&quot;first_element_child&quot;&gt;this test&lt;/span&gt; is &lt;span id=&quot;last_element_child&quot; style=&quot;font-weight:bold;&quot;&gt;logged&lt;/span&gt; above.&lt;/p&gt;
+&lt;script&gt;&lt;![CDATA[
+test(function() {
+  var parentEl = document.getElementById(&quot;parentEl&quot;);
+  var lec = parentEl.lastElementChild;
+  assert_true(!!lec)
+  assert_equals(lec.nodeType, 1)
+  assert_equals(lec.getAttribute(&quot;id&quot;), &quot;last_element_child&quot;)
+})
+]]&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementlastElementChildhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementlastElementChildhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-lastElementChild.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-lastElementChild.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-lastElementChild.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-lastElementChild.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;lastElementChild&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;h1&gt;Test of lastElementChild&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;parentEl&quot;&gt;The result of &lt;span id=&quot;first_element_child&quot;&gt;this test&lt;/span&gt; is &lt;span id=&quot;last_element_child&quot; style=&quot;font-weight:bold;&quot;&gt;logged&lt;/span&gt; above.&lt;/p&gt;
+&lt;script&gt;
+test(function() {
+  var parentEl = document.getElementById(&quot;parentEl&quot;);
+  var lec = parentEl.lastElementChild;
+  assert_true(!!lec)
+  assert_equals(lec.nodeType, 1)
+  assert_equals(lec.getAttribute(&quot;id&quot;), &quot;last_element_child&quot;)
+})
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementmatchesexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementmatchesexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-matches-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-matches-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-matches-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-matches-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,737 @@
</span><ins>+This test requires JavaScript.
+
+PASS Selectors-API Level 2 Test Suite: HTML with Selectors Level 3 
+PASS Detached Element supports matches 
+PASS In-document Element supports matches 
+PASS DIV Element.matches(null) 
+PASS DIV Element.matches(undefined) 
+PASS DIV Element.matches no parameter 
+PASS NULL Element.matches(null) 
+PASS NULL Element.matches(undefined) 
+PASS NULL Element.matches no parameter 
+PASS UNDEFINED Element.matches(null) 
+PASS UNDEFINED Element.matches(undefined) 
+PASS UNDEFINED Element.matches no parameter 
+PASS Detached Element.matches: Empty String:  
+PASS Detached Element.matches: Invalid character: [ 
+PASS Detached Element.matches: Invalid character: ] 
+PASS Detached Element.matches: Invalid character: ( 
+PASS Detached Element.matches: Invalid character: ) 
+PASS Detached Element.matches: Invalid character: { 
+PASS Detached Element.matches: Invalid character: } 
+PASS Detached Element.matches: Invalid character: &lt; 
+PASS Detached Element.matches: Invalid character: &gt; 
+PASS Detached Element.matches: Invalid ID: # 
+PASS Detached Element.matches: Invalid group of selectors: div, 
+PASS Detached Element.matches: Invalid class: . 
+PASS Detached Element.matches: Invalid class: .5cm 
+PASS Detached Element.matches: Invalid class: ..test 
+PASS Detached Element.matches: Invalid class: .foo..quux 
+PASS Detached Element.matches: Invalid class: .bar. 
+PASS Detached Element.matches: Invalid combinator: div &amp; address, p 
+FAIL Detached Element.matches: Invalid combinator: div &gt;&gt; address, p assert_throws: function &quot;function () {
+          root.matches(q)
+        }&quot; did not throw
+PASS Detached Element.matches: Invalid combinator: div ++ address, p 
+PASS Detached Element.matches: Invalid combinator: div ~~ address, p 
+PASS Detached Element.matches: Invalid [att=value] selector: [*=test] 
+PASS Detached Element.matches: Invalid [att=value] selector: [*|*=test] 
+PASS Detached Element.matches: Invalid [att=value] selector: [class= space unquoted ] 
+PASS Detached Element.matches: Unknown pseudo-class: div:example 
+PASS Detached Element.matches: Unknown pseudo-class: :example 
+PASS Detached Element.matches: Unknown pseudo-element: div::example 
+PASS Detached Element.matches: Unknown pseudo-element: ::example 
+PASS Detached Element.matches: Invalid pseudo-element: :::before 
+FAIL Detached Element.matches: Undeclared namespace: ns|div assert_throws: function &quot;function () {
+          root.matches(q)
+        }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+FAIL Detached Element.matches: Undeclared namespace: :not(ns|div) assert_throws: function &quot;function () {
+          root.matches(q)
+        }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+PASS Detached Element.matches: Invalid namespace: ^|div 
+PASS Detached Element.matches: Invalid namespace: $|div 
+PASS In-document Element.matches: Empty String:  
+PASS In-document Element.matches: Invalid character: [ 
+PASS In-document Element.matches: Invalid character: ] 
+PASS In-document Element.matches: Invalid character: ( 
+PASS In-document Element.matches: Invalid character: ) 
+PASS In-document Element.matches: Invalid character: { 
+PASS In-document Element.matches: Invalid character: } 
+PASS In-document Element.matches: Invalid character: &lt; 
+PASS In-document Element.matches: Invalid character: &gt; 
+PASS In-document Element.matches: Invalid ID: # 
+PASS In-document Element.matches: Invalid group of selectors: div, 
+PASS In-document Element.matches: Invalid class: . 
+PASS In-document Element.matches: Invalid class: .5cm 
+PASS In-document Element.matches: Invalid class: ..test 
+PASS In-document Element.matches: Invalid class: .foo..quux 
+PASS In-document Element.matches: Invalid class: .bar. 
+PASS In-document Element.matches: Invalid combinator: div &amp; address, p 
+FAIL In-document Element.matches: Invalid combinator: div &gt;&gt; address, p assert_throws: function &quot;function () {
+          root.matches(q)
+        }&quot; did not throw
+PASS In-document Element.matches: Invalid combinator: div ++ address, p 
+PASS In-document Element.matches: Invalid combinator: div ~~ address, p 
+PASS In-document Element.matches: Invalid [att=value] selector: [*=test] 
+PASS In-document Element.matches: Invalid [att=value] selector: [*|*=test] 
+PASS In-document Element.matches: Invalid [att=value] selector: [class= space unquoted ] 
+PASS In-document Element.matches: Unknown pseudo-class: div:example 
+PASS In-document Element.matches: Unknown pseudo-class: :example 
+PASS In-document Element.matches: Unknown pseudo-element: div::example 
+PASS In-document Element.matches: Unknown pseudo-element: ::example 
+PASS In-document Element.matches: Invalid pseudo-element: :::before 
+FAIL In-document Element.matches: Undeclared namespace: ns|div assert_throws: function &quot;function () {
+          root.matches(q)
+        }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+FAIL In-document Element.matches: Undeclared namespace: :not(ns|div) assert_throws: function &quot;function () {
+          root.matches(q)
+        }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+PASS In-document Element.matches: Invalid namespace: ^|div 
+PASS In-document Element.matches: Invalid namespace: $|div 
+PASS In-document Element.matches: Type selector, matching html element (with no refNodes): html 
+PASS In-document Element.matches: Type selector, matching body element (with no refNodes): body 
+PASS In-document Element.matches: Universal selector, matching all children of element with specified ID (with no refNodes): #universal&gt;* 
+PASS In-document Element.matches: Universal selector, matching all grandchildren of element with specified ID (with no refNodes): #universal&gt;*&gt;* 
+PASS In-document Element.matches: Universal selector, matching all descendants of element with specified ID (with no refNodes): #universal * 
+PASS In-document Element.matches: Attribute presence selector, matching align attribute with value (with no refNodes): .attr-presence-div1[align] 
+PASS In-document Element.matches: Attribute presence selector, matching align attribute with empty value (with no refNodes): .attr-presence-div2[align] 
+PASS In-document Element.matches: Attribute presence selector, matching title attribute, case insensitivity (with no refNodes): #attr-presence [TiTlE] 
+PASS In-document Element.matches: Attribute presence selector, matching custom data-* attribute (with no refNodes): [data-attr-presence] 
+PASS In-document Element.matches: Attribute presence selector, matching attribute with non-ASCII characters (with no refNodes): ul[data-中文] 
+PASS In-document Element.matches: Attribute presence selector, matching option with selected attribute (with no refNodes): #attr-presence-select2 option[selected] 
+PASS In-document Element.matches: Attribute presence selector, matching multiple options with selected attributes (with no refNodes): #attr-presence-select3 option[selected] 
+PASS In-document Element.matches: Attribute value selector, matching align attribute with value (with no refNodes): #attr-value [align=&quot;center&quot;] 
+PASS In-document Element.matches: Attribute value selector, matching align attribute with empty value (with no refNodes): #attr-value [align=&quot;&quot;] 
+PASS In-document Element.matches: Attribute value selector, matching custom data-* attribute with unicode escaped value (with no refNodes): [data-attr-value=&quot;\e9&quot;] 
+PASS In-document Element.matches: Attribute value selector, matching custom data-* attribute with escaped character (with no refNodes): [data-attr-value_foo=&quot;\e9&quot;] 
+PASS In-document Element.matches: Attribute value selector with single-quoted value, matching multiple inputs with type attributes (with no refNodes): #attr-value input[type='hidden'],#attr-value input[type='radio'] 
+PASS In-document Element.matches: Attribute value selector with double-quoted value, matching multiple inputs with type attributes (with no refNodes): #attr-value input[type=&quot;hidden&quot;],#attr-value input[type='radio'] 
+PASS In-document Element.matches: Attribute value selector with unquoted value, matching multiple inputs with type attributes (with no refNodes): #attr-value input[type=hidden],#attr-value input[type=radio] 
+PASS In-document Element.matches: Attribute value selector, matching attribute with value using non-ASCII characters (with no refNodes): [data-attr-value=中文] 
+PASS In-document Element.matches: Attribute whitespace-separated list selector, matching class attribute with value (with no refNodes): #attr-whitespace [class~=&quot;div1&quot;] 
+PASS In-document Element.matches: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value (with no refNodes): [data-attr-whitespace~=&quot;\0000e9&quot;] 
+PASS In-document Element.matches: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character (with no refNodes): [data-attr-whitespace_foo~=&quot;\e9&quot;] 
+PASS In-document Element.matches: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes (with no refNodes): #attr-whitespace a[rel~='bookmark'],  #attr-whitespace a[rel~='nofollow'] 
+PASS In-document Element.matches: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes (with no refNodes): #attr-whitespace a[rel~=&quot;bookmark&quot;],#attr-whitespace a[rel~='nofollow'] 
+PASS In-document Element.matches: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes (with no refNodes): #attr-whitespace a[rel~=bookmark],    #attr-whitespace a[rel~=nofollow] 
+PASS In-document Element.matches: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters (with no refNodes): #attr-whitespace [title~=中文] 
+PASS In-document Element.matches: Attribute hyphen-separated list selector, matching lang attribute with exact value (with no refNodes): #attr-hyphen-div2[lang|=&quot;fr&quot;] 
+PASS In-document Element.matches: Attribute hyphen-separated list selector, matching lang attribute with partial value (with no refNodes): #attr-hyphen-div3[lang|=&quot;en&quot;] 
+PASS In-document Element.matches: Attribute begins with selector, matching href attributes beginning with specified substring (with no refNodes): #attr-begins a[href^=&quot;http://www&quot;] 
+PASS In-document Element.matches: Attribute begins with selector, matching lang attributes beginning with specified substring,  (with no refNodes): #attr-begins [lang^=&quot;en-&quot;] 
+PASS In-document Element.matches: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring (with no refNodes): #attr-begins [class^=' apple'] 
+PASS In-document Element.matches: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring (with no refNodes): #attr-begins [class^=&quot; apple&quot;] 
+PASS In-document Element.matches: Attribute ends with selector, matching href attributes ending with specified substring (with no refNodes): #attr-ends a[href$=&quot;.org&quot;] 
+PASS In-document Element.matches: Attribute ends with selector, matching lang attributes ending with specified substring,  (with no refNodes): #attr-ends [lang$=&quot;-CH&quot;] 
+PASS In-document Element.matches: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring (with no refNodes): #attr-ends [class$='apple '] 
+PASS In-document Element.matches: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring (with no refNodes): #attr-ends [class$=&quot;apple &quot;] 
+PASS In-document Element.matches: Attribute contains selector, matching href attributes beginning with specified substring (with no refNodes): #attr-contains a[href*=&quot;http://www&quot;] 
+PASS In-document Element.matches: Attribute contains selector, matching href attributes ending with specified substring (with no refNodes): #attr-contains a[href*=&quot;.org&quot;] 
+PASS In-document Element.matches: Attribute contains selector, matching href attributes containing specified substring (with no refNodes): #attr-contains a[href*=&quot;.example.&quot;] 
+PASS In-document Element.matches: Attribute contains selector, matching lang attributes beginning with specified substring,  (with no refNodes): #attr-contains [lang*=&quot;en-&quot;] 
+PASS In-document Element.matches: Attribute contains selector, matching lang attributes ending with specified substring,  (with no refNodes): #attr-contains [lang*=&quot;-CH&quot;] 
+PASS In-document Element.matches: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring (with no refNodes): #attr-contains [class*=' apple'] 
+PASS In-document Element.matches: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring (with no refNodes): #attr-contains [class*='orange '] 
+PASS In-document Element.matches: Attribute contains selector with single-quoted value, matching class attribute containing specified substring (with no refNodes): #attr-contains [class*='ple banana ora'] 
+PASS In-document Element.matches: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring (with no refNodes): #attr-contains [class*=&quot; apple&quot;] 
+PASS In-document Element.matches: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring (with no refNodes): #attr-contains [class*=&quot;orange &quot;] 
+PASS In-document Element.matches: Attribute contains selector with double-quoted value, matching class attribute containing specified substring (with no refNodes): #attr-contains [class*=&quot;ple banana ora&quot;] 
+PASS In-document Element.matches: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring (with no refNodes): #attr-contains [class*= apple] 
+PASS In-document Element.matches: Attribute contains selector with unquoted value, matching class attribute ending with specified substring (with no refNodes): #attr-contains [class*=orange ] 
+PASS In-document Element.matches: Attribute contains selector with unquoted value, matching class attribute containing specified substring (with no refNodes): #attr-contains [class*= banana ] 
+PASS In-document Element.matches: :root pseudo-class selector, matching document root element (with no refNodes): :root 
+PASS In-document Element.matches: :nth-child selector, matching the third child element (with no refNodes): #pseudo-nth-table1 :nth-child(3) 
+PASS In-document Element.matches: :nth-child selector, matching every third child element (with no refNodes): #pseudo-nth li:nth-child(3n) 
+PASS In-document Element.matches: :nth-child selector, matching every second child element, starting from the fourth (with no refNodes): #pseudo-nth li:nth-child(2n+4) 
+PASS In-document Element.matches: :nth-child selector, matching every fourth child element, starting from the third (with no refNodes): #pseudo-nth-p1 :nth-child(4n-1) 
+PASS In-document Element.matches: :nth-last-child selector, matching the third last child element (with no refNodes): #pseudo-nth-table1 :nth-last-child(3) 
+PASS In-document Element.matches: :nth-last-child selector, matching every third child element from the end (with no refNodes): #pseudo-nth li:nth-last-child(3n) 
+PASS In-document Element.matches: :nth-last-child selector, matching every second child element from the end, starting from the fourth last (with no refNodes): #pseudo-nth li:nth-last-child(2n+4) 
+PASS In-document Element.matches: :nth-last-child selector, matching every fourth element from the end, starting from the third last (with no refNodes): #pseudo-nth-p1 :nth-last-child(4n-1) 
+PASS In-document Element.matches: :nth-of-type selector, matching the third em element (with no refNodes): #pseudo-nth-p1 em:nth-of-type(3) 
+PASS In-document Element.matches: :nth-of-type selector, matching every second element of their type (with no refNodes): #pseudo-nth-p1 :nth-of-type(2n) 
+PASS In-document Element.matches: :nth-of-type selector, matching every second elemetn of their type, starting from the first (with no refNodes): #pseudo-nth-p1 span:nth-of-type(2n-1) 
+PASS In-document Element.matches: :nth-last-of-type selector, matching the thrid last em element (with no refNodes): #pseudo-nth-p1 em:nth-last-of-type(3) 
+PASS In-document Element.matches: :nth-last-of-type selector, matching every second last element of their type (with no refNodes): #pseudo-nth-p1 :nth-last-of-type(2n) 
+PASS In-document Element.matches: :nth-last-of-type selector, matching every second last element of their type, starting from the last (with no refNodes): #pseudo-nth-p1 span:nth-last-of-type(2n-1) 
+PASS In-document Element.matches: :first-of-type selector, matching the first em element (with no refNodes): #pseudo-nth-p1 em:first-of-type 
+PASS In-document Element.matches: :first-of-type selector, matching the first of every type of element (with no refNodes): #pseudo-nth-p1 :first-of-type 
+PASS In-document Element.matches: :first-of-type selector, matching the first td element in each table row (with no refNodes): #pseudo-nth-table1 tr :first-of-type 
+PASS In-document Element.matches: :last-of-type selector, matching the last em elemnet (with no refNodes): #pseudo-nth-p1 em:last-of-type 
+PASS In-document Element.matches: :last-of-type selector, matching the last of every type of element (with no refNodes): #pseudo-nth-p1 :last-of-type 
+PASS In-document Element.matches: :last-of-type selector, matching the last td element in each table row (with no refNodes): #pseudo-nth-table1 tr :last-of-type 
+PASS In-document Element.matches: :first-child pseudo-class selector, matching first child div element (with no refNodes): #pseudo-first-child div:first-child 
+PASS In-document Element.matches: :first-child pseudo-class selector, matching first-child of multiple elements (with no refNodes): #pseudo-first-child span:first-child 
+PASS In-document Element.matches: :last-child pseudo-class selector, matching last child div element (with no refNodes): #pseudo-last-child div:last-child 
+PASS In-document Element.matches: :last-child pseudo-class selector, matching first-child of multiple elements (with no refNodes): #pseudo-last-child span:last-child 
+PASS In-document Element.matches: :pseudo-only-child pseudo-class selector, matching all only-child elements (with no refNodes): #pseudo-only :only-child 
+PASS In-document Element.matches: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type (with no refNodes): #pseudo-only :only-of-type 
+PASS In-document Element.matches: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type (with no refNodes): #pseudo-only em:only-of-type 
+PASS In-document Element.matches: :empty pseudo-class selector, matching empty p elements (with no refNodes): #pseudo-empty p:empty 
+PASS In-document Element.matches: :empty pseudo-class selector, matching all empty elements (with no refNodes): #pseudo-empty :empty 
+PASS In-document Element.matches: :link and :visited pseudo-class selectors, matching a and area elements with href attributes (with no refNodes): #pseudo-link :link, #pseudo-link :visited 
+PASS In-document Element.matches: :link and :visited pseudo-class selectors, matching link elements with href attributes (with no refNodes): #head :link, #head :visited 
+PASS In-document Element.matches: :target pseudo-class selector, matching the element referenced by the URL fragment identifier (with no refNodes): :target 
+PASS In-document Element.matches: :lang pseudo-class selector, matching inherited language (with no refNodes): #pseudo-lang-div1:lang(en) 
+PASS In-document Element.matches: :lang pseudo-class selector, matching specified language with exact value (with no refNodes): #pseudo-lang-div2:lang(fr) 
+PASS In-document Element.matches: :lang pseudo-class selector, matching specified language with partial value (with no refNodes): #pseudo-lang-div3:lang(en) 
+PASS In-document Element.matches: :enabled pseudo-class selector, matching all enabled form controls (with no refNodes): #pseudo-ui :enabled 
+PASS In-document Element.matches: :enabled pseudo-class selector, matching all disabled form controls (with no refNodes): #pseudo-ui :disabled 
+PASS In-document Element.matches: :checked pseudo-class selector, matching checked radio buttons and checkboxes (with no refNodes): #pseudo-ui :checked 
+PASS In-document Element.matches: :not pseudo-class selector, matching  (with no refNodes): #not&gt;:not(div) 
+PASS In-document Element.matches: :not pseudo-class selector, matching  (with no refNodes): #not * :not(:first-child) 
+PASS In-document Element.matches: Class selector, matching element with specified class (with no refNodes): .class-p 
+PASS In-document Element.matches: Class selector, chained, matching only elements with all specified classes (with no refNodes): #class .apple.orange.banana 
+PASS In-document Element.matches: Class Selector, chained, with type selector (with no refNodes): div.apple.banana.orange 
+PASS In-document Element.matches: Class selector, matching element with class value using non-ASCII characters (with no refNodes): .台北Táiběi 
+PASS In-document Element.matches: Class selector, matching multiple elements with class value using non-ASCII characters (with no refNodes): .台北 
+PASS In-document Element.matches: Class selector, chained, matching element with multiple class values using non-ASCII characters (with no refNodes): .台北Táiběi.台北 
+PASS In-document Element.matches: Class selector, matching element with class with escaped character (with no refNodes): .foo\:bar 
+PASS In-document Element.matches: Class selector, matching element with class with escaped character (with no refNodes): .test\.foo\[5\]bar 
+PASS In-document Element.matches: ID selector, matching element with specified id (with no refNodes): #id #id-div1 
+PASS In-document Element.matches: ID selector, chained, matching element with specified id (with no refNodes): #id-div1, #id-div1 
+PASS In-document Element.matches: ID selector, chained, matching element with specified id (with no refNodes): #id-div1, #id-div2 
+PASS In-document Element.matches: ID Selector, chained, with type selector (with no refNodes): div#id-div1, div#id-div2 
+PASS In-document Element.matches: ID selector, matching multiple elements with duplicate id (with no refNodes): #id-li-duplicate 
+PASS In-document Element.matches: ID selector, matching id value using non-ASCII characters (with no refNodes): #台北Táiběi 
+PASS In-document Element.matches: ID selector, matching id value using non-ASCII characters (with no refNodes): #台北 
+PASS In-document Element.matches: ID selector, matching id values using non-ASCII characters (with no refNodes): #台北Táiběi, #台北 
+PASS In-document Element.matches: Descendant combinator, matching element that is a descendant of an element with id (with no refNodes): #descendant div 
+PASS In-document Element.matches: Descendant combinator, matching element with id that is a descendant of an element (with no refNodes): body #descendant-div1 
+PASS In-document Element.matches: Descendant combinator, matching element with id that is a descendant of an element (with no refNodes): div #descendant-div1 
+PASS In-document Element.matches: Descendant combinator, matching element with id that is a descendant of an element with id (with no refNodes): #descendant #descendant-div2 
+PASS In-document Element.matches: Descendant combinator, matching element with class that is a descendant of an element with id (with no refNodes): #descendant .descendant-div2 
+PASS In-document Element.matches: Descendant combinator, matching element with class that is a descendant of an element with class (with no refNodes): .descendant-div1 .descendant-div3 
+PASS In-document Element.matches: Descendant combinator, whitespace characters (with no refNodes): #descendant        
+#descendant-div2 
+PASS In-document Element.matches: Child combinator, matching element that is a child of an element with id (with no refNodes): #child&gt;div 
+PASS In-document Element.matches: Child combinator, matching element with id that is a child of an element (with no refNodes): div&gt;#child-div1 
+PASS In-document Element.matches: Child combinator, matching element with id that is a child of an element with id (with no refNodes): #child&gt;#child-div1 
+PASS In-document Element.matches: Child combinator, matching element with id that is a child of an element with class (with no refNodes): #child-div1&gt;.child-div2 
+PASS In-document Element.matches: Child combinator, matching element with class that is a child of an element with class (with no refNodes): .child-div1&gt;.child-div2 
+PASS In-document Element.matches: Child combinator, surrounded by whitespace (with no refNodes): #child-div1        
+&gt;        
+#child-div2 
+PASS In-document Element.matches: Child combinator, whitespace after (with no refNodes): #child-div1&gt;        
+#child-div2 
+PASS In-document Element.matches: Child combinator, whitespace before (with no refNodes): #child-div1        
+&gt;#child-div2 
+PASS In-document Element.matches: Child combinator, no whitespace (with no refNodes): #child-div1&gt;#child-div2 
+PASS In-document Element.matches: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id (with no refNodes): #adjacent-div2+div 
+PASS In-document Element.matches: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element (with no refNodes): div+#adjacent-div4 
+PASS In-document Element.matches: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id (with no refNodes): #adjacent-div2+#adjacent-div4 
+PASS In-document Element.matches: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id (with no refNodes): #adjacent-div2+.adjacent-div4 
+PASS In-document Element.matches: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class (with no refNodes): .adjacent-div2+.adjacent-div4 
+PASS In-document Element.matches: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element (with no refNodes): #adjacent div+p 
+PASS In-document Element.matches: Adjacent sibling combinator, surrounded by whitespace (with no refNodes): #adjacent-p2        
++        
+#adjacent-p3 
+PASS In-document Element.matches: Adjacent sibling combinator, whitespace after (with no refNodes): #adjacent-p2+        
+#adjacent-p3 
+PASS In-document Element.matches: Adjacent sibling combinator, whitespace before (with no refNodes): #adjacent-p2        
++#adjacent-p3 
+PASS In-document Element.matches: Adjacent sibling combinator, no whitespace (with no refNodes): #adjacent-p2+#adjacent-p3 
+PASS In-document Element.matches: General sibling combinator, matching element that is a sibling of an element with id (with no refNodes): #sibling-div2~div 
+PASS In-document Element.matches: General sibling combinator, matching element with id that is a sibling of an element (with no refNodes): div~#sibling-div4 
+PASS In-document Element.matches: General sibling combinator, matching element with id that is a sibling of an element with id (with no refNodes): #sibling-div2~#sibling-div4 
+PASS In-document Element.matches: General sibling combinator, matching element with class that is a sibling of an element with id (with no refNodes): #sibling-div2~.sibling-div 
+PASS In-document Element.matches: General sibling combinator, matching p element that is a sibling of a div element (with no refNodes): #sibling div~p 
+PASS In-document Element.matches: General sibling combinator, surrounded by whitespace (with no refNodes): #sibling-p2        
+~        
+#sibling-p3 
+PASS In-document Element.matches: General sibling combinator, whitespace after (with no refNodes): #sibling-p2~        
+#sibling-p3 
+PASS In-document Element.matches: General sibling combinator, whitespace before (with no refNodes): #sibling-p2        
+~#sibling-p3 
+PASS In-document Element.matches: General sibling combinator, no whitespace (with no refNodes): #sibling-p2~#sibling-p3 
+PASS In-document Element.matches: Syntax, group of selectors separator, surrounded by whitespace (with no refNodes): #group em        

+,        

+#group strong 
+PASS In-document Element.matches: Syntax, group of selectors separator, whitespace after (with no refNodes): #group em,        
+#group strong 
+PASS In-document Element.matches: Syntax, group of selectors separator, whitespace before (with no refNodes): #group em        
+,#group strong 
+PASS In-document Element.matches: Syntax, group of selectors separator, no whitespace (with no refNodes): #group em,#group strong 
+PASS Detached Element.matches: Universal selector, matching all children of element with specified ID (with no refNodes): #universal&gt;* 
+PASS Detached Element.matches: Universal selector, matching all grandchildren of element with specified ID (with no refNodes): #universal&gt;*&gt;* 
+PASS Detached Element.matches: Universal selector, matching all descendants of element with specified ID (with no refNodes): #universal * 
+PASS Detached Element.matches: Attribute presence selector, matching align attribute with value (with no refNodes): .attr-presence-div1[align] 
+PASS Detached Element.matches: Attribute presence selector, matching align attribute with empty value (with no refNodes): .attr-presence-div2[align] 
+PASS Detached Element.matches: Attribute presence selector, matching title attribute, case insensitivity (with no refNodes): #attr-presence [TiTlE] 
+PASS Detached Element.matches: Attribute presence selector, matching custom data-* attribute (with no refNodes): [data-attr-presence] 
+PASS Detached Element.matches: Attribute presence selector, matching attribute with non-ASCII characters (with no refNodes): ul[data-中文] 
+PASS Detached Element.matches: Attribute presence selector, matching option with selected attribute (with no refNodes): #attr-presence-select2 option[selected] 
+PASS Detached Element.matches: Attribute presence selector, matching multiple options with selected attributes (with no refNodes): #attr-presence-select3 option[selected] 
+PASS Detached Element.matches: Attribute value selector, matching align attribute with value (with no refNodes): #attr-value [align=&quot;center&quot;] 
+PASS Detached Element.matches: Attribute value selector, matching align attribute with empty value (with no refNodes): #attr-value [align=&quot;&quot;] 
+PASS Detached Element.matches: Attribute value selector, matching custom data-* attribute with unicode escaped value (with no refNodes): [data-attr-value=&quot;\e9&quot;] 
+PASS Detached Element.matches: Attribute value selector, matching custom data-* attribute with escaped character (with no refNodes): [data-attr-value_foo=&quot;\e9&quot;] 
+PASS Detached Element.matches: Attribute value selector with single-quoted value, matching multiple inputs with type attributes (with no refNodes): #attr-value input[type='hidden'],#attr-value input[type='radio'] 
+PASS Detached Element.matches: Attribute value selector with double-quoted value, matching multiple inputs with type attributes (with no refNodes): #attr-value input[type=&quot;hidden&quot;],#attr-value input[type='radio'] 
+PASS Detached Element.matches: Attribute value selector with unquoted value, matching multiple inputs with type attributes (with no refNodes): #attr-value input[type=hidden],#attr-value input[type=radio] 
+PASS Detached Element.matches: Attribute value selector, matching attribute with value using non-ASCII characters (with no refNodes): [data-attr-value=中文] 
+PASS Detached Element.matches: Attribute whitespace-separated list selector, matching class attribute with value (with no refNodes): #attr-whitespace [class~=&quot;div1&quot;] 
+PASS Detached Element.matches: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value (with no refNodes): [data-attr-whitespace~=&quot;\0000e9&quot;] 
+PASS Detached Element.matches: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character (with no refNodes): [data-attr-whitespace_foo~=&quot;\e9&quot;] 
+PASS Detached Element.matches: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes (with no refNodes): #attr-whitespace a[rel~='bookmark'],  #attr-whitespace a[rel~='nofollow'] 
+PASS Detached Element.matches: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes (with no refNodes): #attr-whitespace a[rel~=&quot;bookmark&quot;],#attr-whitespace a[rel~='nofollow'] 
+PASS Detached Element.matches: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes (with no refNodes): #attr-whitespace a[rel~=bookmark],    #attr-whitespace a[rel~=nofollow] 
+PASS Detached Element.matches: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters (with no refNodes): #attr-whitespace [title~=中文] 
+PASS Detached Element.matches: Attribute hyphen-separated list selector, matching lang attribute with exact value (with no refNodes): #attr-hyphen-div2[lang|=&quot;fr&quot;] 
+PASS Detached Element.matches: Attribute hyphen-separated list selector, matching lang attribute with partial value (with no refNodes): #attr-hyphen-div3[lang|=&quot;en&quot;] 
+PASS Detached Element.matches: Attribute begins with selector, matching href attributes beginning with specified substring (with no refNodes): #attr-begins a[href^=&quot;http://www&quot;] 
+PASS Detached Element.matches: Attribute begins with selector, matching lang attributes beginning with specified substring,  (with no refNodes): #attr-begins [lang^=&quot;en-&quot;] 
+PASS Detached Element.matches: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring (with no refNodes): #attr-begins [class^=' apple'] 
+PASS Detached Element.matches: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring (with no refNodes): #attr-begins [class^=&quot; apple&quot;] 
+PASS Detached Element.matches: Attribute ends with selector, matching href attributes ending with specified substring (with no refNodes): #attr-ends a[href$=&quot;.org&quot;] 
+PASS Detached Element.matches: Attribute ends with selector, matching lang attributes ending with specified substring,  (with no refNodes): #attr-ends [lang$=&quot;-CH&quot;] 
+PASS Detached Element.matches: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring (with no refNodes): #attr-ends [class$='apple '] 
+PASS Detached Element.matches: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring (with no refNodes): #attr-ends [class$=&quot;apple &quot;] 
+PASS Detached Element.matches: Attribute contains selector, matching href attributes beginning with specified substring (with no refNodes): #attr-contains a[href*=&quot;http://www&quot;] 
+PASS Detached Element.matches: Attribute contains selector, matching href attributes ending with specified substring (with no refNodes): #attr-contains a[href*=&quot;.org&quot;] 
+PASS Detached Element.matches: Attribute contains selector, matching href attributes containing specified substring (with no refNodes): #attr-contains a[href*=&quot;.example.&quot;] 
+PASS Detached Element.matches: Attribute contains selector, matching lang attributes beginning with specified substring,  (with no refNodes): #attr-contains [lang*=&quot;en-&quot;] 
+PASS Detached Element.matches: Attribute contains selector, matching lang attributes ending with specified substring,  (with no refNodes): #attr-contains [lang*=&quot;-CH&quot;] 
+PASS Detached Element.matches: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring (with no refNodes): #attr-contains [class*=' apple'] 
+PASS Detached Element.matches: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring (with no refNodes): #attr-contains [class*='orange '] 
+PASS Detached Element.matches: Attribute contains selector with single-quoted value, matching class attribute containing specified substring (with no refNodes): #attr-contains [class*='ple banana ora'] 
+PASS Detached Element.matches: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring (with no refNodes): #attr-contains [class*=&quot; apple&quot;] 
+PASS Detached Element.matches: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring (with no refNodes): #attr-contains [class*=&quot;orange &quot;] 
+PASS Detached Element.matches: Attribute contains selector with double-quoted value, matching class attribute containing specified substring (with no refNodes): #attr-contains [class*=&quot;ple banana ora&quot;] 
+PASS Detached Element.matches: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring (with no refNodes): #attr-contains [class*= apple] 
+PASS Detached Element.matches: Attribute contains selector with unquoted value, matching class attribute ending with specified substring (with no refNodes): #attr-contains [class*=orange ] 
+PASS Detached Element.matches: Attribute contains selector with unquoted value, matching class attribute containing specified substring (with no refNodes): #attr-contains [class*= banana ] 
+PASS Detached Element.matches: :nth-child selector, matching the third child element (with no refNodes): #pseudo-nth-table1 :nth-child(3) 
+PASS Detached Element.matches: :nth-child selector, matching every third child element (with no refNodes): #pseudo-nth li:nth-child(3n) 
+PASS Detached Element.matches: :nth-child selector, matching every second child element, starting from the fourth (with no refNodes): #pseudo-nth li:nth-child(2n+4) 
+PASS Detached Element.matches: :nth-child selector, matching every fourth child element, starting from the third (with no refNodes): #pseudo-nth-p1 :nth-child(4n-1) 
+PASS Detached Element.matches: :nth-last-child selector, matching the third last child element (with no refNodes): #pseudo-nth-table1 :nth-last-child(3) 
+PASS Detached Element.matches: :nth-last-child selector, matching every third child element from the end (with no refNodes): #pseudo-nth li:nth-last-child(3n) 
+PASS Detached Element.matches: :nth-last-child selector, matching every second child element from the end, starting from the fourth last (with no refNodes): #pseudo-nth li:nth-last-child(2n+4) 
+PASS Detached Element.matches: :nth-last-child selector, matching every fourth element from the end, starting from the third last (with no refNodes): #pseudo-nth-p1 :nth-last-child(4n-1) 
+PASS Detached Element.matches: :nth-of-type selector, matching the third em element (with no refNodes): #pseudo-nth-p1 em:nth-of-type(3) 
+PASS Detached Element.matches: :nth-of-type selector, matching every second element of their type (with no refNodes): #pseudo-nth-p1 :nth-of-type(2n) 
+PASS Detached Element.matches: :nth-of-type selector, matching every second elemetn of their type, starting from the first (with no refNodes): #pseudo-nth-p1 span:nth-of-type(2n-1) 
+PASS Detached Element.matches: :nth-last-of-type selector, matching the thrid last em element (with no refNodes): #pseudo-nth-p1 em:nth-last-of-type(3) 
+PASS Detached Element.matches: :nth-last-of-type selector, matching every second last element of their type (with no refNodes): #pseudo-nth-p1 :nth-last-of-type(2n) 
+PASS Detached Element.matches: :nth-last-of-type selector, matching every second last element of their type, starting from the last (with no refNodes): #pseudo-nth-p1 span:nth-last-of-type(2n-1) 
+PASS Detached Element.matches: :first-of-type selector, matching the first em element (with no refNodes): #pseudo-nth-p1 em:first-of-type 
+PASS Detached Element.matches: :first-of-type selector, matching the first of every type of element (with no refNodes): #pseudo-nth-p1 :first-of-type 
+PASS Detached Element.matches: :first-of-type selector, matching the first td element in each table row (with no refNodes): #pseudo-nth-table1 tr :first-of-type 
+PASS Detached Element.matches: :last-of-type selector, matching the last em elemnet (with no refNodes): #pseudo-nth-p1 em:last-of-type 
+PASS Detached Element.matches: :last-of-type selector, matching the last of every type of element (with no refNodes): #pseudo-nth-p1 :last-of-type 
+PASS Detached Element.matches: :last-of-type selector, matching the last td element in each table row (with no refNodes): #pseudo-nth-table1 tr :last-of-type 
+PASS Detached Element.matches: :first-child pseudo-class selector, matching first child div element (with no refNodes): #pseudo-first-child div:first-child 
+PASS Detached Element.matches: :first-child pseudo-class selector, matching first-child of multiple elements (with no refNodes): #pseudo-first-child span:first-child 
+PASS Detached Element.matches: :last-child pseudo-class selector, matching last child div element (with no refNodes): #pseudo-last-child div:last-child 
+PASS Detached Element.matches: :last-child pseudo-class selector, matching first-child of multiple elements (with no refNodes): #pseudo-last-child span:last-child 
+PASS Detached Element.matches: :pseudo-only-child pseudo-class selector, matching all only-child elements (with no refNodes): #pseudo-only :only-child 
+PASS Detached Element.matches: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type (with no refNodes): #pseudo-only :only-of-type 
+PASS Detached Element.matches: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type (with no refNodes): #pseudo-only em:only-of-type 
+PASS Detached Element.matches: :empty pseudo-class selector, matching empty p elements (with no refNodes): #pseudo-empty p:empty 
+PASS Detached Element.matches: :empty pseudo-class selector, matching all empty elements (with no refNodes): #pseudo-empty :empty 
+PASS Detached Element.matches: :link and :visited pseudo-class selectors, matching a and area elements with href attributes (with no refNodes): #pseudo-link :link, #pseudo-link :visited 
+PASS Detached Element.matches: :lang pseudo-class selector, matching specified language with exact value (with no refNodes): #pseudo-lang-div2:lang(fr) 
+PASS Detached Element.matches: :lang pseudo-class selector, matching specified language with partial value (with no refNodes): #pseudo-lang-div3:lang(en) 
+PASS Detached Element.matches: :enabled pseudo-class selector, matching all enabled form controls (with no refNodes): #pseudo-ui :enabled 
+PASS Detached Element.matches: :enabled pseudo-class selector, matching all disabled form controls (with no refNodes): #pseudo-ui :disabled 
+PASS Detached Element.matches: :checked pseudo-class selector, matching checked radio buttons and checkboxes (with no refNodes): #pseudo-ui :checked 
+PASS Detached Element.matches: :not pseudo-class selector, matching  (with no refNodes): #not&gt;:not(div) 
+PASS Detached Element.matches: :not pseudo-class selector, matching  (with no refNodes): #not * :not(:first-child) 
+PASS Detached Element.matches: Class selector, matching element with specified class (with no refNodes): .class-p 
+PASS Detached Element.matches: Class selector, chained, matching only elements with all specified classes (with no refNodes): #class .apple.orange.banana 
+PASS Detached Element.matches: Class Selector, chained, with type selector (with no refNodes): div.apple.banana.orange 
+PASS Detached Element.matches: Class selector, matching element with class value using non-ASCII characters (with no refNodes): .台北Táiběi 
+PASS Detached Element.matches: Class selector, matching multiple elements with class value using non-ASCII characters (with no refNodes): .台北 
+PASS Detached Element.matches: Class selector, chained, matching element with multiple class values using non-ASCII characters (with no refNodes): .台北Táiběi.台北 
+PASS Detached Element.matches: Class selector, matching element with class with escaped character (with no refNodes): .foo\:bar 
+PASS Detached Element.matches: Class selector, matching element with class with escaped character (with no refNodes): .test\.foo\[5\]bar 
+PASS Detached Element.matches: ID selector, matching element with specified id (with no refNodes): #id #id-div1 
+PASS Detached Element.matches: ID selector, chained, matching element with specified id (with no refNodes): #id-div1, #id-div1 
+PASS Detached Element.matches: ID selector, chained, matching element with specified id (with no refNodes): #id-div1, #id-div2 
+PASS Detached Element.matches: ID Selector, chained, with type selector (with no refNodes): div#id-div1, div#id-div2 
+PASS Detached Element.matches: ID selector, matching multiple elements with duplicate id (with no refNodes): #id-li-duplicate 
+PASS Detached Element.matches: ID selector, matching id value using non-ASCII characters (with no refNodes): #台北Táiběi 
+PASS Detached Element.matches: ID selector, matching id value using non-ASCII characters (with no refNodes): #台北 
+PASS Detached Element.matches: ID selector, matching id values using non-ASCII characters (with no refNodes): #台北Táiběi, #台北 
+PASS Detached Element.matches: Descendant combinator, matching element that is a descendant of an element with id (with no refNodes): #descendant div 
+PASS Detached Element.matches: Descendant combinator, matching element with id that is a descendant of an element (with no refNodes): div #descendant-div1 
+PASS Detached Element.matches: Descendant combinator, matching element with id that is a descendant of an element with id (with no refNodes): #descendant #descendant-div2 
+PASS Detached Element.matches: Descendant combinator, matching element with class that is a descendant of an element with id (with no refNodes): #descendant .descendant-div2 
+PASS Detached Element.matches: Descendant combinator, matching element with class that is a descendant of an element with class (with no refNodes): .descendant-div1 .descendant-div3 
+PASS Detached Element.matches: Descendant combinator, whitespace characters (with no refNodes): #descendant        
+#descendant-div2 
+PASS Detached Element.matches: Child combinator, matching element that is a child of an element with id (with no refNodes): #child&gt;div 
+PASS Detached Element.matches: Child combinator, matching element with id that is a child of an element (with no refNodes): div&gt;#child-div1 
+PASS Detached Element.matches: Child combinator, matching element with id that is a child of an element with id (with no refNodes): #child&gt;#child-div1 
+PASS Detached Element.matches: Child combinator, matching element with id that is a child of an element with class (with no refNodes): #child-div1&gt;.child-div2 
+PASS Detached Element.matches: Child combinator, matching element with class that is a child of an element with class (with no refNodes): .child-div1&gt;.child-div2 
+PASS Detached Element.matches: Child combinator, surrounded by whitespace (with no refNodes): #child-div1        
+&gt;        
+#child-div2 
+PASS Detached Element.matches: Child combinator, whitespace after (with no refNodes): #child-div1&gt;        
+#child-div2 
+PASS Detached Element.matches: Child combinator, whitespace before (with no refNodes): #child-div1        
+&gt;#child-div2 
+PASS Detached Element.matches: Child combinator, no whitespace (with no refNodes): #child-div1&gt;#child-div2 
+PASS Detached Element.matches: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id (with no refNodes): #adjacent-div2+div 
+PASS Detached Element.matches: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element (with no refNodes): div+#adjacent-div4 
+PASS Detached Element.matches: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id (with no refNodes): #adjacent-div2+#adjacent-div4 
+PASS Detached Element.matches: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id (with no refNodes): #adjacent-div2+.adjacent-div4 
+PASS Detached Element.matches: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class (with no refNodes): .adjacent-div2+.adjacent-div4 
+PASS Detached Element.matches: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element (with no refNodes): #adjacent div+p 
+PASS Detached Element.matches: Adjacent sibling combinator, surrounded by whitespace (with no refNodes): #adjacent-p2        
++        
+#adjacent-p3 
+PASS Detached Element.matches: Adjacent sibling combinator, whitespace after (with no refNodes): #adjacent-p2+        
+#adjacent-p3 
+PASS Detached Element.matches: Adjacent sibling combinator, whitespace before (with no refNodes): #adjacent-p2        
++#adjacent-p3 
+PASS Detached Element.matches: Adjacent sibling combinator, no whitespace (with no refNodes): #adjacent-p2+#adjacent-p3 
+PASS Detached Element.matches: General sibling combinator, matching element that is a sibling of an element with id (with no refNodes): #sibling-div2~div 
+PASS Detached Element.matches: General sibling combinator, matching element with id that is a sibling of an element (with no refNodes): div~#sibling-div4 
+PASS Detached Element.matches: General sibling combinator, matching element with id that is a sibling of an element with id (with no refNodes): #sibling-div2~#sibling-div4 
+PASS Detached Element.matches: General sibling combinator, matching element with class that is a sibling of an element with id (with no refNodes): #sibling-div2~.sibling-div 
+PASS Detached Element.matches: General sibling combinator, matching p element that is a sibling of a div element (with no refNodes): #sibling div~p 
+PASS Detached Element.matches: General sibling combinator, surrounded by whitespace (with no refNodes): #sibling-p2        
+~        
+#sibling-p3 
+PASS Detached Element.matches: General sibling combinator, whitespace after (with no refNodes): #sibling-p2~        
+#sibling-p3 
+PASS Detached Element.matches: General sibling combinator, whitespace before (with no refNodes): #sibling-p2        
+~#sibling-p3 
+PASS Detached Element.matches: General sibling combinator, no whitespace (with no refNodes): #sibling-p2~#sibling-p3 
+PASS Detached Element.matches: Syntax, group of selectors separator, surrounded by whitespace (with no refNodes): #group em        

+,        

+#group strong 
+PASS Detached Element.matches: Syntax, group of selectors separator, whitespace after (with no refNodes): #group em,        
+#group strong 
+PASS Detached Element.matches: Syntax, group of selectors separator, whitespace before (with no refNodes): #group em        
+,#group strong 
+PASS Detached Element.matches: Syntax, group of selectors separator, no whitespace (with no refNodes): #group em,#group strong 
+PASS Fragment Element.matches: Universal selector, matching all children of element with specified ID (with no refNodes): #universal&gt;* 
+PASS Fragment Element.matches: Universal selector, matching all grandchildren of element with specified ID (with no refNodes): #universal&gt;*&gt;* 
+PASS Fragment Element.matches: Universal selector, matching all descendants of element with specified ID (with no refNodes): #universal * 
+PASS Fragment Element.matches: Attribute presence selector, matching align attribute with value (with no refNodes): .attr-presence-div1[align] 
+PASS Fragment Element.matches: Attribute presence selector, matching align attribute with empty value (with no refNodes): .attr-presence-div2[align] 
+PASS Fragment Element.matches: Attribute presence selector, matching title attribute, case insensitivity (with no refNodes): #attr-presence [TiTlE] 
+PASS Fragment Element.matches: Attribute presence selector, matching custom data-* attribute (with no refNodes): [data-attr-presence] 
+PASS Fragment Element.matches: Attribute presence selector, matching attribute with non-ASCII characters (with no refNodes): ul[data-中文] 
+PASS Fragment Element.matches: Attribute presence selector, matching option with selected attribute (with no refNodes): #attr-presence-select2 option[selected] 
+PASS Fragment Element.matches: Attribute presence selector, matching multiple options with selected attributes (with no refNodes): #attr-presence-select3 option[selected] 
+PASS Fragment Element.matches: Attribute value selector, matching align attribute with value (with no refNodes): #attr-value [align=&quot;center&quot;] 
+PASS Fragment Element.matches: Attribute value selector, matching align attribute with empty value (with no refNodes): #attr-value [align=&quot;&quot;] 
+PASS Fragment Element.matches: Attribute value selector, matching custom data-* attribute with unicode escaped value (with no refNodes): [data-attr-value=&quot;\e9&quot;] 
+PASS Fragment Element.matches: Attribute value selector, matching custom data-* attribute with escaped character (with no refNodes): [data-attr-value_foo=&quot;\e9&quot;] 
+PASS Fragment Element.matches: Attribute value selector with single-quoted value, matching multiple inputs with type attributes (with no refNodes): #attr-value input[type='hidden'],#attr-value input[type='radio'] 
+PASS Fragment Element.matches: Attribute value selector with double-quoted value, matching multiple inputs with type attributes (with no refNodes): #attr-value input[type=&quot;hidden&quot;],#attr-value input[type='radio'] 
+PASS Fragment Element.matches: Attribute value selector with unquoted value, matching multiple inputs with type attributes (with no refNodes): #attr-value input[type=hidden],#attr-value input[type=radio] 
+PASS Fragment Element.matches: Attribute value selector, matching attribute with value using non-ASCII characters (with no refNodes): [data-attr-value=中文] 
+PASS Fragment Element.matches: Attribute whitespace-separated list selector, matching class attribute with value (with no refNodes): #attr-whitespace [class~=&quot;div1&quot;] 
+PASS Fragment Element.matches: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value (with no refNodes): [data-attr-whitespace~=&quot;\0000e9&quot;] 
+PASS Fragment Element.matches: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character (with no refNodes): [data-attr-whitespace_foo~=&quot;\e9&quot;] 
+PASS Fragment Element.matches: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes (with no refNodes): #attr-whitespace a[rel~='bookmark'],  #attr-whitespace a[rel~='nofollow'] 
+PASS Fragment Element.matches: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes (with no refNodes): #attr-whitespace a[rel~=&quot;bookmark&quot;],#attr-whitespace a[rel~='nofollow'] 
+PASS Fragment Element.matches: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes (with no refNodes): #attr-whitespace a[rel~=bookmark],    #attr-whitespace a[rel~=nofollow] 
+PASS Fragment Element.matches: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters (with no refNodes): #attr-whitespace [title~=中文] 
+PASS Fragment Element.matches: Attribute hyphen-separated list selector, matching lang attribute with exact value (with no refNodes): #attr-hyphen-div2[lang|=&quot;fr&quot;] 
+PASS Fragment Element.matches: Attribute hyphen-separated list selector, matching lang attribute with partial value (with no refNodes): #attr-hyphen-div3[lang|=&quot;en&quot;] 
+PASS Fragment Element.matches: Attribute begins with selector, matching href attributes beginning with specified substring (with no refNodes): #attr-begins a[href^=&quot;http://www&quot;] 
+PASS Fragment Element.matches: Attribute begins with selector, matching lang attributes beginning with specified substring,  (with no refNodes): #attr-begins [lang^=&quot;en-&quot;] 
+PASS Fragment Element.matches: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring (with no refNodes): #attr-begins [class^=' apple'] 
+PASS Fragment Element.matches: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring (with no refNodes): #attr-begins [class^=&quot; apple&quot;] 
+PASS Fragment Element.matches: Attribute ends with selector, matching href attributes ending with specified substring (with no refNodes): #attr-ends a[href$=&quot;.org&quot;] 
+PASS Fragment Element.matches: Attribute ends with selector, matching lang attributes ending with specified substring,  (with no refNodes): #attr-ends [lang$=&quot;-CH&quot;] 
+PASS Fragment Element.matches: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring (with no refNodes): #attr-ends [class$='apple '] 
+PASS Fragment Element.matches: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring (with no refNodes): #attr-ends [class$=&quot;apple &quot;] 
+PASS Fragment Element.matches: Attribute contains selector, matching href attributes beginning with specified substring (with no refNodes): #attr-contains a[href*=&quot;http://www&quot;] 
+PASS Fragment Element.matches: Attribute contains selector, matching href attributes ending with specified substring (with no refNodes): #attr-contains a[href*=&quot;.org&quot;] 
+PASS Fragment Element.matches: Attribute contains selector, matching href attributes containing specified substring (with no refNodes): #attr-contains a[href*=&quot;.example.&quot;] 
+PASS Fragment Element.matches: Attribute contains selector, matching lang attributes beginning with specified substring,  (with no refNodes): #attr-contains [lang*=&quot;en-&quot;] 
+PASS Fragment Element.matches: Attribute contains selector, matching lang attributes ending with specified substring,  (with no refNodes): #attr-contains [lang*=&quot;-CH&quot;] 
+PASS Fragment Element.matches: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring (with no refNodes): #attr-contains [class*=' apple'] 
+PASS Fragment Element.matches: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring (with no refNodes): #attr-contains [class*='orange '] 
+PASS Fragment Element.matches: Attribute contains selector with single-quoted value, matching class attribute containing specified substring (with no refNodes): #attr-contains [class*='ple banana ora'] 
+PASS Fragment Element.matches: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring (with no refNodes): #attr-contains [class*=&quot; apple&quot;] 
+PASS Fragment Element.matches: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring (with no refNodes): #attr-contains [class*=&quot;orange &quot;] 
+PASS Fragment Element.matches: Attribute contains selector with double-quoted value, matching class attribute containing specified substring (with no refNodes): #attr-contains [class*=&quot;ple banana ora&quot;] 
+PASS Fragment Element.matches: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring (with no refNodes): #attr-contains [class*= apple] 
+PASS Fragment Element.matches: Attribute contains selector with unquoted value, matching class attribute ending with specified substring (with no refNodes): #attr-contains [class*=orange ] 
+PASS Fragment Element.matches: Attribute contains selector with unquoted value, matching class attribute containing specified substring (with no refNodes): #attr-contains [class*= banana ] 
+PASS Fragment Element.matches: :nth-child selector, matching the third child element (with no refNodes): #pseudo-nth-table1 :nth-child(3) 
+PASS Fragment Element.matches: :nth-child selector, matching every third child element (with no refNodes): #pseudo-nth li:nth-child(3n) 
+PASS Fragment Element.matches: :nth-child selector, matching every second child element, starting from the fourth (with no refNodes): #pseudo-nth li:nth-child(2n+4) 
+PASS Fragment Element.matches: :nth-child selector, matching every fourth child element, starting from the third (with no refNodes): #pseudo-nth-p1 :nth-child(4n-1) 
+PASS Fragment Element.matches: :nth-last-child selector, matching the third last child element (with no refNodes): #pseudo-nth-table1 :nth-last-child(3) 
+PASS Fragment Element.matches: :nth-last-child selector, matching every third child element from the end (with no refNodes): #pseudo-nth li:nth-last-child(3n) 
+PASS Fragment Element.matches: :nth-last-child selector, matching every second child element from the end, starting from the fourth last (with no refNodes): #pseudo-nth li:nth-last-child(2n+4) 
+PASS Fragment Element.matches: :nth-last-child selector, matching every fourth element from the end, starting from the third last (with no refNodes): #pseudo-nth-p1 :nth-last-child(4n-1) 
+PASS Fragment Element.matches: :nth-of-type selector, matching the third em element (with no refNodes): #pseudo-nth-p1 em:nth-of-type(3) 
+PASS Fragment Element.matches: :nth-of-type selector, matching every second element of their type (with no refNodes): #pseudo-nth-p1 :nth-of-type(2n) 
+PASS Fragment Element.matches: :nth-of-type selector, matching every second elemetn of their type, starting from the first (with no refNodes): #pseudo-nth-p1 span:nth-of-type(2n-1) 
+PASS Fragment Element.matches: :nth-last-of-type selector, matching the thrid last em element (with no refNodes): #pseudo-nth-p1 em:nth-last-of-type(3) 
+PASS Fragment Element.matches: :nth-last-of-type selector, matching every second last element of their type (with no refNodes): #pseudo-nth-p1 :nth-last-of-type(2n) 
+PASS Fragment Element.matches: :nth-last-of-type selector, matching every second last element of their type, starting from the last (with no refNodes): #pseudo-nth-p1 span:nth-last-of-type(2n-1) 
+PASS Fragment Element.matches: :first-of-type selector, matching the first em element (with no refNodes): #pseudo-nth-p1 em:first-of-type 
+PASS Fragment Element.matches: :first-of-type selector, matching the first of every type of element (with no refNodes): #pseudo-nth-p1 :first-of-type 
+PASS Fragment Element.matches: :first-of-type selector, matching the first td element in each table row (with no refNodes): #pseudo-nth-table1 tr :first-of-type 
+PASS Fragment Element.matches: :last-of-type selector, matching the last em elemnet (with no refNodes): #pseudo-nth-p1 em:last-of-type 
+PASS Fragment Element.matches: :last-of-type selector, matching the last of every type of element (with no refNodes): #pseudo-nth-p1 :last-of-type 
+PASS Fragment Element.matches: :last-of-type selector, matching the last td element in each table row (with no refNodes): #pseudo-nth-table1 tr :last-of-type 
+PASS Fragment Element.matches: :first-child pseudo-class selector, matching first child div element (with no refNodes): #pseudo-first-child div:first-child 
+PASS Fragment Element.matches: :first-child pseudo-class selector, matching first-child of multiple elements (with no refNodes): #pseudo-first-child span:first-child 
+PASS Fragment Element.matches: :last-child pseudo-class selector, matching last child div element (with no refNodes): #pseudo-last-child div:last-child 
+PASS Fragment Element.matches: :last-child pseudo-class selector, matching first-child of multiple elements (with no refNodes): #pseudo-last-child span:last-child 
+PASS Fragment Element.matches: :pseudo-only-child pseudo-class selector, matching all only-child elements (with no refNodes): #pseudo-only :only-child 
+PASS Fragment Element.matches: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type (with no refNodes): #pseudo-only :only-of-type 
+PASS Fragment Element.matches: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type (with no refNodes): #pseudo-only em:only-of-type 
+PASS Fragment Element.matches: :empty pseudo-class selector, matching empty p elements (with no refNodes): #pseudo-empty p:empty 
+PASS Fragment Element.matches: :empty pseudo-class selector, matching all empty elements (with no refNodes): #pseudo-empty :empty 
+PASS Fragment Element.matches: :link and :visited pseudo-class selectors, matching a and area elements with href attributes (with no refNodes): #pseudo-link :link, #pseudo-link :visited 
+PASS Fragment Element.matches: :lang pseudo-class selector, matching specified language with exact value (with no refNodes): #pseudo-lang-div2:lang(fr) 
+PASS Fragment Element.matches: :lang pseudo-class selector, matching specified language with partial value (with no refNodes): #pseudo-lang-div3:lang(en) 
+PASS Fragment Element.matches: :enabled pseudo-class selector, matching all enabled form controls (with no refNodes): #pseudo-ui :enabled 
+PASS Fragment Element.matches: :enabled pseudo-class selector, matching all disabled form controls (with no refNodes): #pseudo-ui :disabled 
+PASS Fragment Element.matches: :checked pseudo-class selector, matching checked radio buttons and checkboxes (with no refNodes): #pseudo-ui :checked 
+PASS Fragment Element.matches: :not pseudo-class selector, matching  (with no refNodes): #not&gt;:not(div) 
+PASS Fragment Element.matches: :not pseudo-class selector, matching  (with no refNodes): #not * :not(:first-child) 
+PASS Fragment Element.matches: Class selector, matching element with specified class (with no refNodes): .class-p 
+PASS Fragment Element.matches: Class selector, chained, matching only elements with all specified classes (with no refNodes): #class .apple.orange.banana 
+PASS Fragment Element.matches: Class Selector, chained, with type selector (with no refNodes): div.apple.banana.orange 
+PASS Fragment Element.matches: Class selector, matching element with class value using non-ASCII characters (with no refNodes): .台北Táiběi 
+PASS Fragment Element.matches: Class selector, matching multiple elements with class value using non-ASCII characters (with no refNodes): .台北 
+PASS Fragment Element.matches: Class selector, chained, matching element with multiple class values using non-ASCII characters (with no refNodes): .台北Táiběi.台北 
+PASS Fragment Element.matches: Class selector, matching element with class with escaped character (with no refNodes): .foo\:bar 
+PASS Fragment Element.matches: Class selector, matching element with class with escaped character (with no refNodes): .test\.foo\[5\]bar 
+PASS Fragment Element.matches: ID selector, matching element with specified id (with no refNodes): #id #id-div1 
+PASS Fragment Element.matches: ID selector, chained, matching element with specified id (with no refNodes): #id-div1, #id-div1 
+PASS Fragment Element.matches: ID selector, chained, matching element with specified id (with no refNodes): #id-div1, #id-div2 
+PASS Fragment Element.matches: ID Selector, chained, with type selector (with no refNodes): div#id-div1, div#id-div2 
+PASS Fragment Element.matches: ID selector, matching multiple elements with duplicate id (with no refNodes): #id-li-duplicate 
+PASS Fragment Element.matches: ID selector, matching id value using non-ASCII characters (with no refNodes): #台北Táiběi 
+PASS Fragment Element.matches: ID selector, matching id value using non-ASCII characters (with no refNodes): #台北 
+PASS Fragment Element.matches: ID selector, matching id values using non-ASCII characters (with no refNodes): #台北Táiběi, #台北 
+PASS Fragment Element.matches: Descendant combinator, matching element that is a descendant of an element with id (with no refNodes): #descendant div 
+PASS Fragment Element.matches: Descendant combinator, matching element with id that is a descendant of an element (with no refNodes): div #descendant-div1 
+PASS Fragment Element.matches: Descendant combinator, matching element with id that is a descendant of an element with id (with no refNodes): #descendant #descendant-div2 
+PASS Fragment Element.matches: Descendant combinator, matching element with class that is a descendant of an element with id (with no refNodes): #descendant .descendant-div2 
+PASS Fragment Element.matches: Descendant combinator, matching element with class that is a descendant of an element with class (with no refNodes): .descendant-div1 .descendant-div3 
+PASS Fragment Element.matches: Descendant combinator, whitespace characters (with no refNodes): #descendant        
+#descendant-div2 
+PASS Fragment Element.matches: Child combinator, matching element that is a child of an element with id (with no refNodes): #child&gt;div 
+PASS Fragment Element.matches: Child combinator, matching element with id that is a child of an element (with no refNodes): div&gt;#child-div1 
+PASS Fragment Element.matches: Child combinator, matching element with id that is a child of an element with id (with no refNodes): #child&gt;#child-div1 
+PASS Fragment Element.matches: Child combinator, matching element with id that is a child of an element with class (with no refNodes): #child-div1&gt;.child-div2 
+PASS Fragment Element.matches: Child combinator, matching element with class that is a child of an element with class (with no refNodes): .child-div1&gt;.child-div2 
+PASS Fragment Element.matches: Child combinator, surrounded by whitespace (with no refNodes): #child-div1        
+&gt;        
+#child-div2 
+PASS Fragment Element.matches: Child combinator, whitespace after (with no refNodes): #child-div1&gt;        
+#child-div2 
+PASS Fragment Element.matches: Child combinator, whitespace before (with no refNodes): #child-div1        
+&gt;#child-div2 
+PASS Fragment Element.matches: Child combinator, no whitespace (with no refNodes): #child-div1&gt;#child-div2 
+PASS Fragment Element.matches: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id (with no refNodes): #adjacent-div2+div 
+PASS Fragment Element.matches: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element (with no refNodes): div+#adjacent-div4 
+PASS Fragment Element.matches: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id (with no refNodes): #adjacent-div2+#adjacent-div4 
+PASS Fragment Element.matches: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id (with no refNodes): #adjacent-div2+.adjacent-div4 
+PASS Fragment Element.matches: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class (with no refNodes): .adjacent-div2+.adjacent-div4 
+PASS Fragment Element.matches: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element (with no refNodes): #adjacent div+p 
+PASS Fragment Element.matches: Adjacent sibling combinator, surrounded by whitespace (with no refNodes): #adjacent-p2        
++        
+#adjacent-p3 
+PASS Fragment Element.matches: Adjacent sibling combinator, whitespace after (with no refNodes): #adjacent-p2+        
+#adjacent-p3 
+PASS Fragment Element.matches: Adjacent sibling combinator, whitespace before (with no refNodes): #adjacent-p2        
++#adjacent-p3 
+PASS Fragment Element.matches: Adjacent sibling combinator, no whitespace (with no refNodes): #adjacent-p2+#adjacent-p3 
+PASS Fragment Element.matches: General sibling combinator, matching element that is a sibling of an element with id (with no refNodes): #sibling-div2~div 
+PASS Fragment Element.matches: General sibling combinator, matching element with id that is a sibling of an element (with no refNodes): div~#sibling-div4 
+PASS Fragment Element.matches: General sibling combinator, matching element with id that is a sibling of an element with id (with no refNodes): #sibling-div2~#sibling-div4 
+PASS Fragment Element.matches: General sibling combinator, matching element with class that is a sibling of an element with id (with no refNodes): #sibling-div2~.sibling-div 
+PASS Fragment Element.matches: General sibling combinator, matching p element that is a sibling of a div element (with no refNodes): #sibling div~p 
+PASS Fragment Element.matches: General sibling combinator, surrounded by whitespace (with no refNodes): #sibling-p2        
+~        
+#sibling-p3 
+PASS Fragment Element.matches: General sibling combinator, whitespace after (with no refNodes): #sibling-p2~        
+#sibling-p3 
+PASS Fragment Element.matches: General sibling combinator, whitespace before (with no refNodes): #sibling-p2        
+~#sibling-p3 
+PASS Fragment Element.matches: General sibling combinator, no whitespace (with no refNodes): #sibling-p2~#sibling-p3 
+PASS Fragment Element.matches: Syntax, group of selectors separator, surrounded by whitespace (with no refNodes): #group em        

+,        

+#group strong 
+PASS Fragment Element.matches: Syntax, group of selectors separator, whitespace after (with no refNodes): #group em,        
+#group strong 
+PASS Fragment Element.matches: Syntax, group of selectors separator, whitespace before (with no refNodes): #group em        
+,#group strong 
+PASS Fragment Element.matches: Syntax, group of selectors separator, no whitespace (with no refNodes): #group em,#group strong 
+FAIL In-document Element.matches: Universal selector, matching all children of the specified reference element (with refNode Element): &gt;* SyntaxError: DOM Exception 12
+FAIL In-document Element.matches: Universal selector, matching all grandchildren of the specified reference element (with refNode Element): &gt;*&gt;* SyntaxError: DOM Exception 12
+FAIL In-document Element.matches: Universal selector, matching all descendants of the specified reference element (with refNode Element): * assert_false: The element #universal should not match the selector. expected false got true
+PASS In-document Element.matches: Attribute presence selector, matching align attribute with value (with refNode Element): .attr-presence-div1[align] 
+PASS In-document Element.matches: Attribute presence selector, matching align attribute with empty value (with refNode Element): .attr-presence-div2[align] 
+PASS In-document Element.matches: Attribute presence selector, matching title attribute, case insensitivity (with refNode Element): [TiTlE] 
+PASS In-document Element.matches: Attribute presence selector, matching custom data-* attribute (with refNode Element): [data-attr-presence] 
+PASS In-document Element.matches: Attribute presence selector, matching attribute with non-ASCII characters (with refNode Element): ul[data-中文] 
+PASS In-document Element.matches: Attribute presence selector, matching option with selected attribute (with refNode Element): #attr-presence-select2 option[selected] 
+PASS In-document Element.matches: Attribute presence selector, matching multiple options with selected attributes (with refNode Element): #attr-presence-select3 option[selected] 
+PASS In-document Element.matches: Attribute value selector, matching align attribute with value (with refNode Element): [align=&quot;center&quot;] 
+PASS In-document Element.matches: Attribute value selector, matching align attribute with empty value (with refNode Element): [align=&quot;&quot;] 
+PASS In-document Element.matches: Attribute value selector, matching custom data-* attribute with unicode escaped value (with refNode Element): [data-attr-value=&quot;\e9&quot;] 
+PASS In-document Element.matches: Attribute value selector, matching custom data-* attribute with escaped character (with refNode Element): [data-attr-value_foo=&quot;\e9&quot;] 
+PASS In-document Element.matches: Attribute value selector with single-quoted value, matching multiple inputs with type attributes (with refNode Element): input[type='hidden'],#attr-value input[type='radio'] 
+PASS In-document Element.matches: Attribute value selector with double-quoted value, matching multiple inputs with type attributes (with refNode Element): input[type=&quot;hidden&quot;],#attr-value input[type='radio'] 
+PASS In-document Element.matches: Attribute value selector with unquoted value, matching multiple inputs with type attributes (with refNode Element): input[type=hidden],#attr-value input[type=radio] 
+PASS In-document Element.matches: Attribute value selector, matching attribute with value using non-ASCII characters (with refNode Element): [data-attr-value=中文] 
+PASS In-document Element.matches: Attribute whitespace-separated list selector, matching class attribute with value (with refNode Element): [class~=&quot;div1&quot;] 
+PASS In-document Element.matches: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value (with refNode Element): [data-attr-whitespace~=&quot;\0000e9&quot;] 
+PASS In-document Element.matches: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character (with refNode Element): [data-attr-whitespace_foo~=&quot;\e9&quot;] 
+PASS In-document Element.matches: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes (with refNode Element): a[rel~='bookmark'],  #attr-whitespace a[rel~='nofollow'] 
+PASS In-document Element.matches: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes (with refNode Element): a[rel~=&quot;bookmark&quot;],#attr-whitespace a[rel~='nofollow'] 
+PASS In-document Element.matches: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes (with refNode Element): a[rel~=bookmark],    #attr-whitespace a[rel~=nofollow] 
+PASS In-document Element.matches: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters (with refNode Element): [title~=中文] 
+PASS In-document Element.matches: Attribute hyphen-separated list selector, matching lang attribute with exact value (with refNode Element): #attr-hyphen-div2[lang|=&quot;fr&quot;] 
+PASS In-document Element.matches: Attribute hyphen-separated list selector, matching lang attribute with partial value (with refNode Element): #attr-hyphen-div3[lang|=&quot;en&quot;] 
+PASS In-document Element.matches: Attribute begins with selector, matching href attributes beginning with specified substring (with refNode Element): a[href^=&quot;http://www&quot;] 
+PASS In-document Element.matches: Attribute begins with selector, matching lang attributes beginning with specified substring,  (with refNode Element): [lang^=&quot;en-&quot;] 
+PASS In-document Element.matches: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring (with refNode Element): [class^=' apple'] 
+PASS In-document Element.matches: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring (with refNode Element): [class^=&quot; apple&quot;] 
+PASS In-document Element.matches: Attribute ends with selector, matching href attributes ending with specified substring (with refNode Element): a[href$=&quot;.org&quot;] 
+PASS In-document Element.matches: Attribute ends with selector, matching lang attributes ending with specified substring,  (with refNode Element): [lang$=&quot;-CH&quot;] 
+PASS In-document Element.matches: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring (with refNode Element): [class$='apple '] 
+PASS In-document Element.matches: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring (with refNode Element): [class$=&quot;apple &quot;] 
+PASS In-document Element.matches: Attribute contains selector, matching href attributes beginning with specified substring (with refNode Element): a[href*=&quot;http://www&quot;] 
+PASS In-document Element.matches: Attribute contains selector, matching href attributes ending with specified substring (with refNode Element): a[href*=&quot;.org&quot;] 
+PASS In-document Element.matches: Attribute contains selector, matching href attributes containing specified substring (with refNode Element): a[href*=&quot;.example.&quot;] 
+PASS In-document Element.matches: Attribute contains selector, matching lang attributes beginning with specified substring,  (with refNode Element): [lang*=&quot;en-&quot;] 
+PASS In-document Element.matches: Attribute contains selector, matching lang attributes ending with specified substring,  (with refNode Element): [lang*=&quot;-CH&quot;] 
+PASS In-document Element.matches: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring (with refNode Element): [class*=' apple'] 
+PASS In-document Element.matches: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring (with refNode Element): [class*='orange '] 
+PASS In-document Element.matches: Attribute contains selector with single-quoted value, matching class attribute containing specified substring (with refNode Element): [class*='ple banana ora'] 
+PASS In-document Element.matches: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring (with refNode Element): [class*=&quot; apple&quot;] 
+PASS In-document Element.matches: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring (with refNode Element): [class*=&quot;orange &quot;] 
+PASS In-document Element.matches: Attribute contains selector with double-quoted value, matching class attribute containing specified substring (with refNode Element): [class*=&quot;ple banana ora&quot;] 
+PASS In-document Element.matches: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring (with refNode Element): [class*= apple] 
+PASS In-document Element.matches: Attribute contains selector with unquoted value, matching class attribute ending with specified substring (with refNode Element): [class*=orange ] 
+PASS In-document Element.matches: Attribute contains selector with unquoted value, matching class attribute containing specified substring (with refNode Element): [class*= banana ] 
+PASS In-document Element.matches: :nth-child selector, matching the third child element (with refNode Element): :nth-child(3) 
+PASS In-document Element.matches: :nth-child selector, matching every third child element (with refNode Element): li:nth-child(3n) 
+PASS In-document Element.matches: :nth-child selector, matching every second child element, starting from the fourth (with refNode Element): li:nth-child(2n+4) 
+PASS In-document Element.matches: :nth-child selector, matching every fourth child element, starting from the third (with refNode Element): :nth-child(4n-1) 
+PASS In-document Element.matches: :nth-last-child selector, matching the third last child element (with refNode Element): :nth-last-child(3) 
+PASS In-document Element.matches: :nth-last-child selector, matching every third child element from the end (with refNode Element): li:nth-last-child(3n) 
+PASS In-document Element.matches: :nth-last-child selector, matching every second child element from the end, starting from the fourth last (with refNode Element): li:nth-last-child(2n+4) 
+PASS In-document Element.matches: :nth-last-child selector, matching every fourth element from the end, starting from the third last (with refNode Element): :nth-last-child(4n-1) 
+PASS In-document Element.matches: :nth-of-type selector, matching the third em element (with refNode Element): em:nth-of-type(3) 
+PASS In-document Element.matches: :nth-of-type selector, matching every second element of their type (with refNode Element): :nth-of-type(2n) 
+PASS In-document Element.matches: :nth-of-type selector, matching every second elemetn of their type, starting from the first (with refNode Element): span:nth-of-type(2n-1) 
+PASS In-document Element.matches: :nth-last-of-type selector, matching the thrid last em element (with refNode Element): em:nth-last-of-type(3) 
+PASS In-document Element.matches: :nth-last-of-type selector, matching every second last element of their type (with refNode Element): :nth-last-of-type(2n) 
+PASS In-document Element.matches: :nth-last-of-type selector, matching every second last element of their type, starting from the last (with refNode Element): span:nth-last-of-type(2n-1) 
+PASS In-document Element.matches: :first-of-type selector, matching the first em element (with refNode Element): em:first-of-type 
+PASS In-document Element.matches: :first-of-type selector, matching the first of every type of element (with refNode Element): :first-of-type 
+PASS In-document Element.matches: :first-of-type selector, matching the first td element in each table row (with refNode Element): tr :first-of-type 
+PASS In-document Element.matches: :last-of-type selector, matching the last em elemnet (with refNode Element): em:last-of-type 
+PASS In-document Element.matches: :last-of-type selector, matching the last of every type of element (with refNode Element): :last-of-type 
+PASS In-document Element.matches: :last-of-type selector, matching the last td element in each table row (with refNode Element): tr :last-of-type 
+PASS In-document Element.matches: :first-child pseudo-class selector, matching first child div element (with refNode Element): div:first-child 
+PASS In-document Element.matches: :first-child pseudo-class selector, matching first-child of multiple elements (with refNode Element): span:first-child 
+PASS In-document Element.matches: :last-child pseudo-class selector, matching last child div element (with refNode Element): div:last-child 
+PASS In-document Element.matches: :last-child pseudo-class selector, matching first-child of multiple elements (with refNode Element): span:last-child 
+PASS In-document Element.matches: :pseudo-only-child pseudo-class selector, matching all only-child elements (with refNode Element): :only-child 
+PASS In-document Element.matches: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type (with refNode Element):  :only-of-type 
+PASS In-document Element.matches: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type (with refNode Element):  em:only-of-type 
+PASS In-document Element.matches: :empty pseudo-class selector, matching empty p elements (with refNode Element): p:empty 
+PASS In-document Element.matches: :empty pseudo-class selector, matching all empty elements (with refNode Element): :empty 
+PASS In-document Element.matches: :link and :visited pseudo-class selectors, matching a and area elements with href attributes (with refNode Element):  :link, #pseudo-link :visited 
+PASS In-document Element.matches: :link and :visited pseudo-class selectors, matching link elements with href attributes (with refNode Element):  :link, #head :visited 
+PASS In-document Element.matches: :lang pseudo-class selector, matching inherited language (1) (with no refNodes): #pseudo-lang-div1:lang(en) 
+PASS In-document Element.matches: :lang pseudo-class selector, matching specified language with exact value (1) (with no refNodes): #pseudo-lang-div2:lang(fr) 
+PASS In-document Element.matches: :lang pseudo-class selector, matching specified language with partial value (1) (with no refNodes): #pseudo-lang-div3:lang(en) 
+PASS In-document Element.matches: :enabled pseudo-class selector, matching all enabled form controls (1) (with no refNodes): #pseudo-ui :enabled 
+PASS In-document Element.matches: :enabled pseudo-class selector, matching all disabled form controls (1) (with no refNodes): #pseudo-ui :disabled 
+PASS In-document Element.matches: :checked pseudo-class selector, matching checked radio buttons and checkboxes (1) (with no refNodes): #pseudo-ui :checked 
+PASS In-document Element.matches: :not pseudo-class selector, matching (1) (with no refNodes): #not&gt;:not(div) 
+PASS In-document Element.matches: :not pseudo-class selector, matching (1) (with no refNodes): #not * :not(:first-child) 
+PASS In-document Element.matches: Class selector, matching element with specified class (1) (with no refNodes): .class-p 
+PASS In-document Element.matches: Class selector, chained, matching only elements with all specified classes (1) (with no refNodes): #class .apple.orange.banana 
+PASS In-document Element.matches: Class Selector, chained, with type selector (1) (with no refNodes): div.apple.banana.orange 
+FAIL In-document Element.matches: Class selector, matching element with class value using non-ASCII characters (with no refNodes): .台北Táiběi assert_true: The element #class-span1 should match the selector. expected true got false
+PASS In-document Element.matches: Class selector, matching multiple elements with class value using non-ASCII characters (1) (with no refNodes): .台北 
+FAIL In-document Element.matches: Class selector, chained, matching element with multiple class values using non-ASCII characters (with no refNodes): .台北Táiběi.台北 assert_true: The element #class-span1 should match the selector. expected true got false
+PASS In-document Element.matches: Class selector, matching element with class with escaped character (1) (with no refNodes): .foo\:bar 
+PASS In-document Element.matches: Class selector, matching element with class with escaped character (1) (with no refNodes): .test\.foo\[5\]bar 
+PASS In-document Element.matches: ID selector, matching element with specified id (1) (with no refNodes): #id #id-div1 
+PASS In-document Element.matches: ID selector, chained, matching element with specified id (1) (with no refNodes): #id-div1, #id-div1 
+PASS In-document Element.matches: ID selector, chained, matching element with specified id (1) (with no refNodes): #id-div1, #id-div2 
+PASS In-document Element.matches: ID Selector, chained, with type selector (1) (with no refNodes): div#id-div1, div#id-div2 
+PASS In-document Element.matches: ID selector, matching multiple elements with duplicate id (1) (with no refNodes): #id-li-duplicate 
+FAIL In-document Element.matches: ID selector, matching id value using non-ASCII characters (with no refNodes): #台北Táiběi null is not an object (evaluating 'element.matches')
+PASS In-document Element.matches: ID selector, matching id value using non-ASCII characters (1) (with no refNodes): #台北 
+FAIL In-document Element.matches: ID selector, matching id values using non-ASCII characters (with no refNodes): #台北Táiběi, #台北 null is not an object (evaluating 'element.matches')
+PASS In-document Element.matches: Descendant combinator, matching element that is a descendant of an element with id (1) (with no refNodes): #descendant div 
+PASS In-document Element.matches: Descendant combinator, matching element with id that is a descendant of an element (1) (with no refNodes): body #descendant-div1 
+PASS In-document Element.matches: Descendant combinator, matching element with id that is a descendant of an element (1) (with no refNodes): div #descendant-div1 
+PASS In-document Element.matches: Descendant combinator, matching element with id that is a descendant of an element with id (1) (with no refNodes): #descendant #descendant-div2 
+PASS In-document Element.matches: Descendant combinator, matching element with class that is a descendant of an element with id (1) (with no refNodes): #descendant .descendant-div2 
+PASS In-document Element.matches: Descendant combinator, matching element with class that is a descendant of an element with class (1) (with no refNodes): .descendant-div1 .descendant-div3 
+PASS In-document Element.matches: Descendant combinator, whitespace characters (1) (with no refNodes): #descendant        
+#descendant-div2 
+PASS In-document Element.matches: Child combinator, matching element that is a child of an element with id (1) (with no refNodes): #child&gt;div 
+PASS In-document Element.matches: Child combinator, matching element with id that is a child of an element (1) (with no refNodes): div&gt;#child-div1 
+PASS In-document Element.matches: Child combinator, matching element with id that is a child of an element with id (1) (with no refNodes): #child&gt;#child-div1 
+PASS In-document Element.matches: Child combinator, matching element with id that is a child of an element with class (1) (with no refNodes): #child-div1&gt;.child-div2 
+PASS In-document Element.matches: Child combinator, matching element with class that is a child of an element with class (1) (with no refNodes): .child-div1&gt;.child-div2 
+PASS In-document Element.matches: Child combinator, surrounded by whitespace (1) (with no refNodes): #child-div1        
+&gt;        
+#child-div2 
+PASS In-document Element.matches: Child combinator, whitespace after (1) (with no refNodes): #child-div1&gt;        
+#child-div2 
+PASS In-document Element.matches: Child combinator, whitespace before (1) (with no refNodes): #child-div1        
+&gt;#child-div2 
+PASS In-document Element.matches: Child combinator, no whitespace (1) (with no refNodes): #child-div1&gt;#child-div2 
+PASS In-document Element.matches: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id (1) (with no refNodes): #adjacent-div2+div 
+PASS In-document Element.matches: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element (1) (with no refNodes): div+#adjacent-div4 
+PASS In-document Element.matches: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id (1) (with no refNodes): #adjacent-div2+#adjacent-div4 
+PASS In-document Element.matches: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id (1) (with no refNodes): #adjacent-div2+.adjacent-div4 
+PASS In-document Element.matches: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class (1) (with no refNodes): .adjacent-div2+.adjacent-div4 
+PASS In-document Element.matches: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element (1) (with no refNodes): #adjacent div+p 
+PASS In-document Element.matches: Adjacent sibling combinator, surrounded by whitespace (1) (with no refNodes): #adjacent-p2        
++        
+#adjacent-p3 
+PASS In-document Element.matches: Adjacent sibling combinator, whitespace after (1) (with no refNodes): #adjacent-p2+        
+#adjacent-p3 
+PASS In-document Element.matches: Adjacent sibling combinator, whitespace before (1) (with no refNodes): #adjacent-p2        
++#adjacent-p3 
+PASS In-document Element.matches: Adjacent sibling combinator, no whitespace (1) (with no refNodes): #adjacent-p2+#adjacent-p3 
+PASS In-document Element.matches: General sibling combinator, matching element that is a sibling of an element with id (1) (with no refNodes): #sibling-div2~div 
+PASS In-document Element.matches: General sibling combinator, matching element with id that is a sibling of an element (1) (with no refNodes): div~#sibling-div4 
+PASS In-document Element.matches: General sibling combinator, matching element with id that is a sibling of an element with id (1) (with no refNodes): #sibling-div2~#sibling-div4 
+PASS In-document Element.matches: General sibling combinator, matching element with class that is a sibling of an element with id (1) (with no refNodes): #sibling-div2~.sibling-div 
+PASS In-document Element.matches: General sibling combinator, matching p element that is a sibling of a div element (1) (with no refNodes): #sibling div~p 
+PASS In-document Element.matches: General sibling combinator, surrounded by whitespace (1) (with no refNodes): #sibling-p2        
+~        
+#sibling-p3 
+PASS In-document Element.matches: General sibling combinator, whitespace after (1) (with no refNodes): #sibling-p2~        
+#sibling-p3 
+PASS In-document Element.matches: General sibling combinator, whitespace before (1) (with no refNodes): #sibling-p2        
+~#sibling-p3 
+PASS In-document Element.matches: General sibling combinator, no whitespace (1) (with no refNodes): #sibling-p2~#sibling-p3 
+PASS In-document Element.matches: Syntax, group of selectors separator, surrounded by whitespace (1) (with no refNodes): #group em        

+,        

+#group strong 
+PASS In-document Element.matches: Syntax, group of selectors separator, whitespace after (1) (with no refNodes): #group em,        
+#group strong 
+PASS In-document Element.matches: Syntax, group of selectors separator, whitespace before (1) (with no refNodes): #group em        
+,#group strong 
+PASS In-document Element.matches: Syntax, group of selectors separator, no whitespace (1) (with no refNodes): #group em,#group strong 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementmatcheshtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementmatcheshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-matches.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-matches.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-matches.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-matches.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,87 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;UTF-8&quot;&gt;
+&lt;title&gt;Selectors-API Level 2 Test Suite: HTML with Selectors Level 3&lt;/title&gt;
+&lt;!-- Selectors API Test Suite Version 3 --&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/dom/nodes/selectors.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/dom/nodes/ParentNode-querySelector-All.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;Element-matches.js&quot;&gt;&lt;/script&gt;
+&lt;style&gt;iframe { visibility: hidden; position: absolute; }&lt;/style&gt;
+
+&lt;div id=&quot;log&quot;&gt;This test requires JavaScript.&lt;/div&gt;
+
+&lt;script&gt;
+async_test(function() {
+  var frame = document.createElement(&quot;iframe&quot;);
+  frame.onload = this.step_func_done(init);
+  frame.src = &quot;/dom/nodes/resources/ParentNode-querySelector-All-content.html#target&quot;;
+  document.body.appendChild(frame);
+});
+
+function init(e) {
+  /*
+   * This test suite tests Selectors API methods in 4 different contexts:
+   * 1. Document node
+   * 2. In-document Element node
+   * 3. Detached Element node (an element with no parent, not in the document)
+   * 4. Document Fragment node
+   *
+   * For each context, the following tests are run:
+   *
+   * The interface check tests ensure that each type of node exposes the Selectors API methods.
+   *
+   * The matches() tests are run
+   * All the selectors tested for both the valid and invalid selector tests are found in selectors.js.
+   * See comments in that file for documentation of the format used.
+   *
+   * The level2-lib.js file contains all the common test functions for running each of the aforementioned tests
+   */
+
+  var docType  = &quot;html&quot;; // Only run tests suitable for HTML
+
+  // Prepare the nodes for testing
+  var doc = e.target.contentDocument;                 // Document Node tests
+
+  var element = doc.getElementById(&quot;root&quot;);   // In-document Element Node tests
+
+  //Setup the namespace tests
+  setupSpecialElements(doc, element);
+
+  var outOfScope = element.cloneNode(true);   // Append this to the body before running the in-document
+                                               // Element tests, but after running the Document tests. This
+                                               // tests that no elements that are not descendants of element
+                                               // are selected.
+
+  traverse(outOfScope, function(elem) {        // Annotate each element as being a clone; used for verifying
+    elem.setAttribute(&quot;data-clone&quot;, &quot;&quot;);     // that none of these elements ever match.
+  });
+
+
+  var detached = element.cloneNode(true);     // Detached Element Node tests
+
+  var fragment = doc.createDocumentFragment(); // Fragment Node tests
+  fragment.appendChild(element.cloneNode(true));
+
+  // Setup Tests
+  interfaceCheckMatches(&quot;Document&quot;, doc);
+  interfaceCheckMatches(&quot;Detached Element&quot;, detached);
+  interfaceCheckMatches(&quot;Fragment&quot;, fragment);
+  interfaceCheckMatches(&quot;In-document Element&quot;, element);
+
+  runSpecialMatchesTests(&quot;DIV Element&quot;, element);
+  runSpecialMatchesTests(&quot;NULL Element&quot;, document.createElement(&quot;null&quot;));
+  runSpecialMatchesTests(&quot;UNDEFINED Element&quot;, document.createElement(&quot;undefined&quot;));
+
+  runInvalidSelectorTestMatches(&quot;Document&quot;, doc, invalidSelectors);
+  runInvalidSelectorTestMatches(&quot;Detached Element&quot;, detached, invalidSelectors);
+  runInvalidSelectorTestMatches(&quot;Fragment&quot;, fragment, invalidSelectors);
+  runInvalidSelectorTestMatches(&quot;In-document Element&quot;, element, invalidSelectors);
+
+  runMatchesTest(&quot;In-document&quot;, doc, validSelectors, &quot;html&quot;);
+  runMatchesTest(&quot;Detached&quot;, detached, validSelectors, &quot;html&quot;);
+  runMatchesTest(&quot;Fragment&quot;, fragment, validSelectors, &quot;html&quot;);
+
+  runMatchesTest(&quot;In-document&quot;, doc, scopedSelectors, &quot;html&quot;);
+}
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementmatchesjsfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementmatchesjs"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-matches.js (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-matches.js) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-matches.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-matches.js        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,127 @@
</span><ins>+/*
+ * Check that the matches() method exists on the given Node
+ */
+function interfaceCheckMatches(type, obj) {
+  if (obj.nodeType === obj.ELEMENT_NODE) {
+    test(function() {
+      assert_idl_attribute(obj, &quot;matches&quot;, type + &quot; supports matches&quot;);
+    }, type + &quot; supports matches&quot;)
+  }
+}
+
+function runSpecialMatchesTests(type, element) {
+  test(function() { // 1
+    if (element.tagName.toLowerCase() === &quot;null&quot;) {
+      assert_true(element.matches(null), &quot;An element with the tag name '&quot; + element.tagName.toLowerCase() + &quot;' should match.&quot;);
+    } else {
+      assert_false(element.matches(null), &quot;An element with the tag name '&quot; + element.tagName.toLowerCase() + &quot;' should not match.&quot;);
+    }
+  }, type + &quot;.matches(null)&quot;)
+
+  test(function() { // 2
+    if (element.tagName.toLowerCase() === &quot;undefined&quot;) {
+      assert_true(element.matches(undefined), &quot;An element with the tag name '&quot; + element.tagName.toLowerCase() + &quot;' should match.&quot;);
+    } else {
+      assert_false(element.matches(undefined), &quot;An element with the tag name '&quot; + element.tagName.toLowerCase() + &quot;' should not match.&quot;);
+    }
+  }, type + &quot;.matches(undefined)&quot;)
+
+  test(function() { // 3
+    assert_throws(TypeError(), function() {
+      element.matches();
+    }, &quot;This should throw a TypeError.&quot;)
+  }, type + &quot;.matches no parameter&quot;)
+}
+
+/*
+ * Execute queries with the specified invalid selectors for matches()
+ * Only run these tests when errors are expected. Don't run for valid selector tests.
+ */
+function runInvalidSelectorTestMatches(type, root, selectors) {
+  if (root.nodeType === root.ELEMENT_NODE) {
+    for (var i = 0; i &lt; selectors.length; i++) {
+      var s = selectors[i];
+      var n = s[&quot;name&quot;];
+      var q = s[&quot;selector&quot;];
+
+      test(function() {
+        assert_throws(&quot;SyntaxError&quot;, function() {
+          root.matches(q)
+        })
+      }, type + &quot;.matches: &quot; + n + &quot;: &quot; + q);
+    }
+  }
+}
+
+function runMatchesTest(type, root, selectors, docType) {
+  var nodeType = getNodeType(root);
+
+  for (var i = 0; i &lt; selectors.length; i++) {
+    var s = selectors[i];
+    var n = s[&quot;name&quot;];
+    var q = s[&quot;selector&quot;];
+    var e = s[&quot;expect&quot;];
+    var u = s[&quot;unexpected&quot;];
+
+    var ctx = s[&quot;ctx&quot;];
+    var ref = s[&quot;ref&quot;];
+
+    if ((!s[&quot;exclude&quot;] || (s[&quot;exclude&quot;].indexOf(nodeType) === -1 &amp;&amp; s[&quot;exclude&quot;].indexOf(docType) === -1))
+     &amp;&amp; (s[&quot;testType&quot;] &amp; TEST_MATCH) ) {
+
+      if (ctx &amp;&amp; !ref) {
+        test(function() {
+          var j, element, refNode;
+          for (j = 0; j &lt; e.length; j++) {
+            element = root.querySelector(&quot;#&quot; + e[j]);
+            refNode = root.querySelector(ctx);
+            assert_true(element.matches(q, refNode), &quot;The element #&quot; + e[j] + &quot; should match the selector.&quot;)
+          }
+
+          if (u) {
+            for (j = 0; j &lt; u.length; j++) {
+              element = root.querySelector(&quot;#&quot; + u[j]);
+              refNode = root.querySelector(ctx);
+              assert_false(element.matches(q, refNode), &quot;The element #&quot; + u[j] + &quot; should not match the selector.&quot;)
+            }
+          }
+        }, type + &quot; Element.matches: &quot; + n + &quot; (with refNode Element): &quot; + q);
+      }
+
+      if (ref) {
+        test(function() {
+          var j, element, refNodes;
+          for (j = 0; j &lt; e.length; j++) {
+            element = root.querySelector(&quot;#&quot; + e[j]);
+            refNodes = root.querySelectorAll(ref);
+            assert_true(element.matches(q, refNodes), &quot;The element #&quot; + e[j] + &quot; should match the selector.&quot;)
+          }
+
+          if (u) {
+            for (j = 0; j &lt; u.length; j++) {
+              element = root.querySelector(&quot;#&quot; + u[j]);
+              refNodes = root.querySelectorAll(ref);
+              assert_false(element.matches(q, refNodes), &quot;The element #&quot; + u[j] + &quot; should not match the selector.&quot;)
+            }
+          }
+        }, type + &quot; Element.matches: &quot; + n + &quot; (with refNodes NodeList): &quot; + q);
+      }
+
+      if (!ctx &amp;&amp; !ref) {
+        test(function() {
+          for (var j = 0; j &lt; e.length; j++) {
+            var element = root.querySelector(&quot;#&quot; + e[j]);
+            assert_true(element.matches(q), &quot;The element #&quot; + e[j] + &quot; should match the selector.&quot;)
+          }
+
+          if (u) {
+            for (j = 0; j &lt; u.length; j++) {
+              element = root.querySelector(&quot;#&quot; + u[j]);
+              assert_false(element.matches(q), &quot;The element #&quot; + u[j] + &quot; should not match the selector.&quot;)
+            }
+          }
+        }, type + &quot; Element.matches: &quot; + n + &quot; (with no refNodes): &quot; + q);
+      }
+    }
+  }
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementnextElementSiblingexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementnextElementSiblingexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-nextElementSibling-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-nextElementSibling-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-nextElementSibling-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-nextElementSibling-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+Test of nextElementSibling
+
+The result of this test is unknown.
+
+
+PASS nextElementSibling 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementnextElementSiblinghtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementnextElementSiblinghtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-nextElementSibling.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-nextElementSibling.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-nextElementSibling.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-nextElementSibling.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;nextElementSibling&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;h1&gt;Test of nextElementSibling&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;parentEl&quot;&gt;The result of &lt;span id=&quot;first_element_child&quot;&gt;this test&lt;/span&gt; is &lt;span id=&quot;last_element_child&quot; style=&quot;font-weight:bold;&quot;&gt;unknown.&lt;/span&gt;&lt;/p&gt;
+&lt;script&gt;
+test(function() {
+  var parentEl = document.getElementById(&quot;parentEl&quot;);
+  var fec = document.getElementById(&quot;first_element_child&quot;);
+  var nes = fec.nextElementSibling;
+  assert_true(!!nes)
+  assert_equals(nes.nodeType, 1)
+  assert_equals(nes.getAttribute(&quot;id&quot;), &quot;last_element_child&quot;)
+})
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementnextElementSiblingxhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementnextElementSiblingxhtmlxhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-nextElementSibling.xhtml (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-nextElementSibling-xhtml.xhtml) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-nextElementSibling.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-nextElementSibling.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+&lt;head&gt;
+&lt;title&gt;nextElementSibling&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Test of nextElementSibling&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;parentEl&quot;&gt;The result of &lt;span id=&quot;first_element_child&quot;&gt;this test&lt;/span&gt; is &lt;span id=&quot;last_element_child&quot; style=&quot;font-weight:bold;&quot;&gt;unknown.&lt;/span&gt;&lt;/p&gt;
+&lt;script&gt;&lt;![CDATA[
+test(function() {
+  var parentEl = document.getElementById(&quot;parentEl&quot;);
+  var fec = document.getElementById(&quot;first_element_child&quot;);
+  var nes = fec.nextElementSibling;
+  assert_true(!!nes)
+  assert_equals(nes.nodeType, 1)
+  assert_equals(nes.getAttribute(&quot;id&quot;), &quot;last_element_child&quot;)
+})
+]]&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementpreviousElementSiblingexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementpreviousElementSiblingexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-previousElementSibling-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-previousElementSibling-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-previousElementSibling-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-previousElementSibling-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+Test of previousElementSibling
+
+The result of this test is unknown.
+
+
+PASS previousElementSibling 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementpreviousElementSiblinghtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementpreviousElementSiblinghtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-previousElementSibling.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-previousElementSibling.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-previousElementSibling.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-previousElementSibling.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;previousElementSibling&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;h1&gt;Test of previousElementSibling&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;parentEl&quot;&gt;The result of &lt;span id=&quot;first_element_child&quot;&gt;this test&lt;/span&gt; is
+&lt;span id=&quot;middle_element_child&quot; style=&quot;font-weight:bold;&quot;&gt;unknown.&lt;/span&gt;
+
+
+
+&lt;span id=&quot;last_element_child&quot; style=&quot;display:none;&quot;&gt;fnord&lt;/span&gt; &lt;/p&gt;
+&lt;script&gt;
+test(function() {
+  var parentEl = document.getElementById(&quot;parentEl&quot;);
+  var lec = document.getElementById(&quot;last_element_child&quot;);
+  var pes = lec.previousElementSibling;
+  assert_true(!!pes)
+  assert_equals(pes.nodeType, 1)
+  assert_equals(pes.getAttribute(&quot;id&quot;), &quot;middle_element_child&quot;)
+})
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementpreviousElementSiblingxhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementpreviousElementSiblingxhtmlxhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-previousElementSibling.xhtml (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-previousElementSibling-xhtml.xhtml) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-previousElementSibling.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-previousElementSibling.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,28 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+&lt;head&gt;
+&lt;title&gt;previousElementSibling&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Test of previousElementSibling&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;parentEl&quot;&gt;The result of &lt;span id=&quot;first_element_child&quot;&gt;this test&lt;/span&gt; is
+&lt;span id=&quot;middle_element_child&quot; style=&quot;font-weight:bold;&quot;&gt;unknown.&lt;/span&gt;
+
+
+
+&lt;span id=&quot;last_element_child&quot; style=&quot;display:none;&quot;&gt;fnord&lt;/span&gt; &lt;/p&gt;
+&lt;script&gt;&lt;![CDATA[
+test(function() {
+  var parentEl = document.getElementById(&quot;parentEl&quot;);
+  var lec = document.getElementById(&quot;last_element_child&quot;);
+  var pes = lec.previousElementSibling;
+  assert_true(!!pes)
+  assert_equals(pes.nodeType, 1)
+  assert_equals(pes.getAttribute(&quot;id&quot;), &quot;middle_element_child&quot;)
+})
+]]&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementremoveexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementremoveexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-remove-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-remove-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-remove-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-remove-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+PASS element should support remove() 
+PASS remove() should work if element doesn't have a parent 
+PASS remove() should work if element does have a parent 
+PASS remove() should work if element does have a parent and siblings 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementremovehtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementremovehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-remove.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-remove.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-remove.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-remove.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Element.remove&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-childnode-remove&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;ChildNode-remove.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script&gt;
+var node, parentNode;
+setup(function() {
+  node = document.createElement(&quot;div&quot;);
+  parentNode = document.createElement(&quot;div&quot;);
+});
+testRemove(node, parentNode, &quot;element&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementremoveAttributeNSexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementremoveAttributeNSexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-removeAttributeNS-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-removeAttributeNS-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-removeAttributeNS-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-removeAttributeNS-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS removeAttributeNS should take a local name. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementremoveAttributeNShtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementremoveAttributeNShtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-removeAttributeNS.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-removeAttributeNS.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-removeAttributeNS.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-removeAttributeNS.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;Element.removeAttributeNS&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;attributes.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+var XML = &quot;http://www.w3.org/XML/1998/namespace&quot;
+
+test(function() {
+  var el = document.createElement(&quot;foo&quot;)
+  el.setAttributeNS(XML, &quot;a:bb&quot;, &quot;pass&quot;)
+  attr_is(el.attributes[0], &quot;pass&quot;, &quot;bb&quot;, XML, &quot;a&quot;, &quot;a:bb&quot;)
+  el.removeAttributeNS(XML, &quot;a:bb&quot;)
+  assert_equals(el.attributes.length, 1)
+  attr_is(el.attributes[0], &quot;pass&quot;, &quot;bb&quot;, XML, &quot;a&quot;, &quot;a:bb&quot;)
+}, &quot;removeAttributeNS should take a local name.&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementsiblingElementnullexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementsiblingElementnullexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-siblingElement-null-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-siblingElement-null-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-siblingElement-null-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-siblingElement-null-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+Test of previousElementSibling and nextElementSibling returning null
+
+The result of this test is unknown.
+
+
+PASS Null test 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementsiblingElementnullxhtmlexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementsiblingElementnullxhtmlexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-siblingElement-null-xhtml-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-siblingElement-null-xhtml-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-siblingElement-null-xhtml-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-siblingElement-null-xhtml-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+Test of previousElementSibling and nextElementSibling returning null
+
+The result of this test is unknown.
+
+
+PASS Null Test 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementsiblingElementnullxhtmlxhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementsiblingElementnullxhtmlxhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-siblingElement-null-xhtml.xhtml (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-siblingElement-null-xhtml.xhtml) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-siblingElement-null-xhtml.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-siblingElement-null-xhtml.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+&lt;head&gt;
+&lt;title&gt;Null Test&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Test of previousElementSibling and nextElementSibling returning null&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;parentEl&quot;&gt;The result of this test is &lt;span id=&quot;first_element_child&quot; style=&quot;font-weight:bold;&quot;&gt;unknown.&lt;/span&gt;&lt;/p&gt;
+&lt;script&gt;&lt;![CDATA[
+test(function() {
+  var fec = document.getElementById(&quot;first_element_child&quot;);
+  assert_equals(fec.previousElementSibling, null)
+  assert_equals(fec.nextElementSibling, null)
+})
+]]&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementsiblingElementnullhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementsiblingElementnullhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-siblingElement-null.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-siblingElement-null.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-siblingElement-null.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-siblingElement-null.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Null test&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;h1&gt;Test of previousElementSibling and nextElementSibling returning null&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;p id=&quot;parentEl&quot;&gt;The result of this test is &lt;span id=&quot;first_element_child&quot; style=&quot;font-weight:bold;&quot;&gt;unknown.&lt;/span&gt;&lt;/p&gt;
+&lt;script&gt;
+test(function() {
+  var fec = document.getElementById(&quot;first_element_child&quot;);
+  assert_equals(fec.previousElementSibling, null)
+  assert_equals(fec.nextElementSibling, null)
+})
+&lt;/script&gt;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementtagNameexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementtagNameexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-tagName-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-tagName-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-tagName-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-tagName-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+
+FAIL tagName should upper-case for HTML elements in HTML documents. assert_equals: expected &quot;X:B&quot; but got &quot;x:b&quot;
+PASS tagName should not upper-case for SVG elements in HTML documents. 
+PASS tagName should be updated when changing ownerDocument 
+PASS tagName should be updated when changing ownerDocument (createDocument without prefix) 
+FAIL tagName should be updated when changing ownerDocument (createDocument with prefix) assert_equals: tagName should be uppercase in HTML expected &quot;FOO:DIV&quot; but got &quot;foo:div&quot;
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesElementtagNamehtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesElementtagNamehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-tagName.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Element-tagName.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-tagName.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-tagName.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,50 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;Element.tagName&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  var HTMLNS = &quot;http://www.w3.org/1999/xhtml&quot;
+  assert_equals(document.createElementNS(HTMLNS, &quot;I&quot;).tagName, &quot;I&quot;)
+  assert_equals(document.createElementNS(HTMLNS, &quot;i&quot;).tagName, &quot;I&quot;)
+  assert_equals(document.createElementNS(HTMLNS, &quot;x:b&quot;).tagName, &quot;X:B&quot;)
+}, &quot;tagName should upper-case for HTML elements in HTML documents.&quot;)
+
+test(function() {
+  var SVGNS = &quot;http://www.w3.org/2000/svg&quot;
+  assert_equals(document.createElementNS(SVGNS, &quot;svg&quot;).tagName, &quot;svg&quot;)
+  assert_equals(document.createElementNS(SVGNS, &quot;SVG&quot;).tagName, &quot;SVG&quot;)
+  assert_equals(document.createElementNS(SVGNS, &quot;s:svg&quot;).tagName, &quot;s:svg&quot;)
+  assert_equals(document.createElementNS(SVGNS, &quot;s:SVG&quot;).tagName, &quot;s:SVG&quot;)
+}, &quot;tagName should not upper-case for SVG elements in HTML documents.&quot;)
+
+test(function() {
+  if (&quot;DOMParser&quot; in window) {
+    var xmlel = new DOMParser()
+      .parseFromString('&lt;div xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;Test&lt;/div&gt;', 'text/xml')
+      .documentElement;
+    assert_equals(xmlel.tagName, &quot;div&quot;, &quot;tagName should be lowercase in XML&quot;)
+    var htmlel = document.importNode(xmlel, true)
+    assert_equals(htmlel.tagName, &quot;DIV&quot;, &quot;tagName should be uppercase in HTML&quot;)
+  }
+}, &quot;tagName should be updated when changing ownerDocument&quot;)
+
+test(function() {
+  var xmlel = document.implementation
+    .createDocument(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;div&quot;, null)
+    .documentElement;
+  assert_equals(xmlel.tagName, &quot;div&quot;, &quot;tagName should be lowercase in XML&quot;)
+  var htmlel = document.importNode(xmlel, true)
+  assert_equals(htmlel.tagName, &quot;DIV&quot;, &quot;tagName should be uppercase in HTML&quot;)
+}, &quot;tagName should be updated when changing ownerDocument (createDocument without prefix)&quot;)
+
+test(function() {
+  var xmlel = document.implementation
+    .createDocument(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;foo:div&quot;, null)
+    .documentElement;
+  assert_equals(xmlel.tagName, &quot;foo:div&quot;, &quot;tagName should be lowercase in XML&quot;)
+  var htmlel = document.importNode(xmlel, true)
+  assert_equals(htmlel.tagName, &quot;FOO:DIV&quot;, &quot;tagName should be uppercase in HTML&quot;)
+}, &quot;tagName should be updated when changing ownerDocument (createDocument with prefix)&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesMutationObserverattributesexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesMutationObserverattributesexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-attributes-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/MutationObserver-attributes-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-attributes-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-attributes-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,46 @@
</span><ins>+MutationObservers: attributes mutations
+
+
+PASS attributes Element.id: update, no oldValue, mutation 
+PASS attributes Element.id: update mutation 
+PASS attributes Element.id: empty string update mutation 
+PASS attributes Element.id: same value mutation 
+PASS attributes Element.unknown: IDL attribute no mutation 
+PASS attributes HTMLInputElement.type: type update mutation 
+PASS attributes Element.className: new value mutation 
+PASS attributes Element.className: empty string update mutation 
+PASS attributes Element.className: same value mutation 
+PASS attributes Element.className: same multiple values mutation 
+PASS attributes Element.classList.add: single token addition mutation 
+PASS attributes Element.classList.add: multiple tokens addition mutation 
+PASS attributes Element.classList.add: syntax err/no mutation 
+PASS attributes Element.classList.add: invalid character/no mutation 
+FAIL attributes Element.classList.add: same value mutation assert_equals: mutation records must match expected 2 but got 1
+PASS attributes Element.classList.remove: single token removal mutation 
+PASS attributes Element.classList.remove: multiple tokens removal mutation 
+FAIL attributes Element.classList.remove: missing token removal mutation assert_equals: mutation records must match expected 2 but got 1
+PASS attributes Element.classList.toggle: token removal mutation 
+PASS attributes Element.classList.toggle: token addition mutation 
+PASS attributes Element.classList.toggle: forced token removal mutation 
+PASS attributes Element.classList.toggle: forced missing token removal no mutation 
+PASS attributes Element.classList.toggle: forced existing token addition no mutation 
+PASS attributes Element.classList.toggle: forced token addition mutation 
+PASS attributes Element.attributes.value: update mutation 
+PASS attributes Element.attributes.value: same id mutation 
+PASS attributes Element.setAttribute: id mutation 
+PASS attributes Element.setAttribute: same class mutation 
+PASS attributes Element.setAttribute: classname mutation 
+PASS attributes Element.removeAttribute: removal mutation 
+PASS attributes Element.removeAttribute: removal no mutation 
+PASS childList HTMLInputElement.removeAttribute: type removal mutation 
+PASS attributes Element.setAttributeNS: creation mutation 
+PASS attributes Element.setAttributeNS: prefixed attribute creation mutation 
+PASS attributes Element.removeAttributeNS: removal mutation 
+PASS attributes Element.removeAttributeNS: removal no mutation 
+PASS attributes Element.removeAttributeNS: prefixed attribute removal no mutation 
+PASS attributes/attributeFilter Element.id/Element.className: update mutation 
+PASS attributes/attributeFilter Element.id/Element.className: multiple filter update mutation 
+PASS attributeOldValue alone Element.id: update mutation 
+PASS attributeFilter alone Element.id/Element.className: multiple filter update mutation 
+PASS childList false: no childList mutation 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesMutationObserverattributeshtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesMutationObserverattributeshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-attributes.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/MutationObserver-attributes.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-attributes.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-attributes.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,406 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;MutationObservers: attributes mutations&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;mutationobservers.js&quot;&gt;&lt;/script&gt;
+&lt;h1&gt;MutationObservers: attributes mutations&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+
+&lt;section style=&quot;display: none&quot;&gt;
+&lt;p id='n'&gt;&lt;/p&gt;
+
+&lt;p id='n00'&gt;&lt;/p&gt;
+&lt;p id='n01'&gt;&lt;/p&gt;
+&lt;p id='n02'&gt;&lt;/p&gt;
+&lt;p id='n03'&gt;&lt;/p&gt;
+&lt;input id=&quot;n04&quot; type=&quot;text&quot;&gt;
+
+&lt;p id='n10'&gt;&lt;/p&gt;
+&lt;p id='n11'&gt;&lt;/p&gt;
+&lt;p id='n12' class='c01'&gt;&lt;/p&gt;
+&lt;p id='n13' class='c01 c02'&gt;&lt;/p&gt;
+
+&lt;p id='n20'&gt;&lt;/p&gt;
+&lt;p id='n21'&gt;&lt;/p&gt;
+&lt;p id='n22'&gt;&lt;/p&gt;
+&lt;p id='n23'&gt;&lt;/p&gt;
+&lt;p id='n24' class=&quot;c01 c02&quot;&gt;&lt;/p&gt;
+
+&lt;p id='n30' class=&quot;c01 c02&quot;&gt;&lt;/p&gt;
+&lt;p id='n31' class=&quot;c01 c02&quot;&gt;&lt;/p&gt;
+&lt;p id='n32' class=&quot;c01 c02&quot;&gt;&lt;/p&gt;
+
+&lt;p id='n40' class=&quot;c01 c02&quot;&gt;&lt;/p&gt;
+&lt;p id='n41' class=&quot;c01 c02&quot;&gt;&lt;/p&gt;
+&lt;p id='n42' class=&quot;c01 c02&quot;&gt;&lt;/p&gt;
+&lt;p id='n43' class=&quot;c01 c02&quot;&gt;&lt;/p&gt;
+&lt;p id='n44' class=&quot;c01 c02&quot;&gt;&lt;/p&gt;
+&lt;p id='n45' class=&quot;c01 c02&quot;&gt;&lt;/p&gt;
+
+&lt;p id='n50' class=&quot;c01 c02&quot;&gt;&lt;/p&gt;
+&lt;p id='n51'&gt;&lt;/p&gt;
+
+&lt;p id='n60'&gt;&lt;/p&gt;
+&lt;p id='n61' class=&quot;c01&quot;&gt;&lt;/p&gt;
+&lt;p id='n62'&gt;&lt;/p&gt;
+
+&lt;p id='n70' class=&quot;c01&quot;&gt;&lt;/p&gt;
+&lt;p id='n71'&gt;&lt;/p&gt;
+&lt;input id=&quot;n72&quot; type=&quot;text&quot;&gt;
+
+&lt;p id='n80'&gt;&lt;/p&gt;
+&lt;p id='n81'&gt;&lt;/p&gt;
+
+&lt;p id='n90'&gt;&lt;/p&gt;
+&lt;p id='n91'&gt;&lt;/p&gt;
+&lt;p id='n92'&gt;&lt;/p&gt;
+
+&lt;p id='n1000'&gt;&lt;/p&gt;
+&lt;p id='n1001' class='c01'&gt;&lt;/p&gt;
+
+&lt;p id='n2000'&gt;&lt;/p&gt;
+&lt;p id='n2001' class='c01'&gt;&lt;/p&gt;
+
+&lt;p id='n3000'&gt;&lt;/p&gt;
+
+&lt;/section&gt;
+
+&lt;script&gt;
+
+var n = document.getElementById('n');
+
+runMutationTest(n,
+                  {&quot;attributes&quot;:true},
+                  [{type: &quot;attributes&quot;, attributeName: &quot;id&quot;}],
+                  function() { n.id = &quot;n000&quot;;},
+                  &quot;attributes Element.id: update, no oldValue, mutation&quot;);
+
+var n00 = document.getElementById('n00');
+runMutationTest(n00,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;n00&quot;, attributeName: &quot;id&quot;}],
+                  function() { n00.id = &quot;n000&quot;;},
+                  &quot;attributes Element.id: update mutation&quot;);
+
+var n01 = document.getElementById('n01');
+runMutationTest(n01,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;n01&quot;, attributeName: &quot;id&quot;}],
+                  function() { n01.id = &quot;&quot;;},
+                  &quot;attributes Element.id: empty string update mutation&quot;);
+
+var n02 = document.getElementById('n02');
+runMutationTest(n02,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;n02&quot;, attributeName: &quot;id&quot;}, {type: &quot;attributes&quot;, attributeName: &quot;class&quot;}],
+                  function() { n02.id = &quot;n02&quot;; n02.setAttribute(&quot;class&quot;, &quot;c01&quot;);},
+                  &quot;attributes Element.id: same value mutation&quot;);
+
+var n03 = document.getElementById('n03');
+runMutationTest(n03,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;n03&quot;, attributeName: &quot;id&quot;}],
+                  function() { n03.unknown = &quot;c02&quot;; n03.id = &quot;n030&quot;;},
+                  &quot;attributes Element.unknown: IDL attribute no mutation&quot;);
+
+var n04 = document.getElementById('n04');
+runMutationTest(n04,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;text&quot;, attributeName: &quot;type&quot;}, {type: &quot;attributes&quot;, oldValue: &quot;n04&quot;, attributeName: &quot;id&quot;}],
+                  function() { n04.type = &quot;unknown&quot;; n04.id = &quot;n040&quot;;},
+                  &quot;attributes HTMLInputElement.type: type update mutation&quot;);
+
+  var n10 = document.getElementById('n10');
+runMutationTest(n10,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, attributeName: &quot;class&quot;}],
+                  function() { n10.className = &quot;c01&quot;;},
+                  &quot;attributes Element.className: new value mutation&quot;);
+
+  var n11 = document.getElementById('n11');
+runMutationTest(n11,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, attributeName: &quot;class&quot;}],
+                  function() { n11.className = &quot;&quot;;},
+                  &quot;attributes Element.className: empty string update mutation&quot;);
+
+  var n12 = document.getElementById('n12');
+runMutationTest(n12,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;c01&quot;, attributeName: &quot;class&quot;}],
+                  function() { n12.className = &quot;c01&quot;;},
+                  &quot;attributes Element.className: same value mutation&quot;);
+
+  var n13 = document.getElementById('n13');
+runMutationTest(n13,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;c01 c02&quot;, attributeName: &quot;class&quot;}],
+                  function() { n13.className = &quot;c01 c02&quot;;},
+                  &quot;attributes Element.className: same multiple values mutation&quot;);
+
+  var n20 = document.getElementById('n20');
+runMutationTest(n20,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, attributeName: &quot;class&quot;}],
+                  function() { n20.classList.add(&quot;c01&quot;);},
+                  &quot;attributes Element.classList.add: single token addition mutation&quot;);
+
+  var n21 = document.getElementById('n21');
+runMutationTest(n21,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, attributeName: &quot;class&quot;}],
+                  function() { n21.classList.add(&quot;c01&quot;, &quot;c02&quot;, &quot;c03&quot;);},
+                  &quot;attributes Element.classList.add: multiple tokens addition mutation&quot;);
+
+  var n22 = document.getElementById('n22');
+runMutationTest(n22,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;n22&quot;, attributeName: &quot;id&quot;}],
+                  function() { try { n22.classList.add(&quot;c01&quot;, &quot;&quot;, &quot;c03&quot;); } catch (e) { };
+                               n22.id = &quot;n220&quot;; },
+                  &quot;attributes Element.classList.add: syntax err/no mutation&quot;);
+
+  var n23 = document.getElementById('n23');
+runMutationTest(n23,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;n23&quot;, attributeName: &quot;id&quot;}],
+                  function() { try { n23.classList.add(&quot;c01&quot;, &quot;c 02&quot;, &quot;c03&quot;); } catch (e) { };
+                               n23.id = &quot;n230&quot;; },
+                  &quot;attributes Element.classList.add: invalid character/no mutation&quot;);
+
+  var n24 = document.getElementById('n24');
+runMutationTest(n24,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;c01 c02&quot;, attributeName: &quot;class&quot;}, {type: &quot;attributes&quot;, oldValue: &quot;n24&quot;, attributeName: &quot;id&quot;}],
+                  function() { n24.classList.add(&quot;c02&quot;); n24.id = &quot;n240&quot;;},
+                  &quot;attributes Element.classList.add: same value mutation&quot;);
+
+  var n30 = document.getElementById('n30');
+runMutationTest(n30,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;c01 c02&quot;, attributeName: &quot;class&quot;}],
+                  function() { n30.classList.remove(&quot;c01&quot;);},
+                  &quot;attributes Element.classList.remove: single token removal mutation&quot;);
+
+  var n31 = document.getElementById('n31');
+runMutationTest(n31,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;c01 c02&quot;, attributeName: &quot;class&quot;}],
+                  function() { n31.classList.remove(&quot;c01&quot;, &quot;c02&quot;);},
+                  &quot;attributes Element.classList.remove: multiple tokens removal mutation&quot;);
+
+  var n32 = document.getElementById('n32');
+runMutationTest(n32,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;c01 c02&quot;, attributeName: &quot;class&quot;}, {type: &quot;attributes&quot;, oldValue: &quot;n32&quot;, attributeName: &quot;id&quot;}],
+                  function() { n32.classList.remove(&quot;c03&quot;); n32.id = &quot;n320&quot;;},
+                  &quot;attributes Element.classList.remove: missing token removal mutation&quot;);
+
+  var n40 = document.getElementById('n40');
+runMutationTest(n40,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;c01 c02&quot;, attributeName: &quot;class&quot;}],
+                  function() { n40.classList.toggle(&quot;c01&quot;);},
+                  &quot;attributes Element.classList.toggle: token removal mutation&quot;);
+
+  var n41 = document.getElementById('n41');
+runMutationTest(n41,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;c01 c02&quot;, attributeName: &quot;class&quot;}],
+                  function() { n41.classList.toggle(&quot;c03&quot;);},
+                  &quot;attributes Element.classList.toggle: token addition mutation&quot;);
+
+  var n42 = document.getElementById('n42');
+runMutationTest(n42,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;c01 c02&quot;, attributeName: &quot;class&quot;}],
+                  function() { n42.classList.toggle(&quot;c01&quot;, false);},
+                  &quot;attributes Element.classList.toggle: forced token removal mutation&quot;);
+
+  var n43 = document.getElementById('n43');
+runMutationTest(n43,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;n43&quot;, attributeName: &quot;id&quot;}],
+                  function() { n43.classList.toggle(&quot;c03&quot;, false); n43.id = &quot;n430&quot;; },
+                  &quot;attributes Element.classList.toggle: forced missing token removal no mutation&quot;);
+
+  var n44 = document.getElementById('n44');
+runMutationTest(n44,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;n44&quot;, attributeName: &quot;id&quot;}],
+                  function() { n44.classList.toggle(&quot;c01&quot;, true); n44.id = &quot;n440&quot;; },
+                  &quot;attributes Element.classList.toggle: forced existing token addition no mutation&quot;);
+
+  var n45 = document.getElementById('n45');
+runMutationTest(n45,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;c01 c02&quot;, attributeName: &quot;class&quot;}],
+                  function() { n45.classList.toggle(&quot;c03&quot;, true);},
+                  &quot;attributes Element.classList.toggle: forced token addition mutation&quot;);
+
+  var n50 = document.getElementById('n50');
+runMutationTest(n50,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;c01 c02&quot;, attributeName: &quot;class&quot;}],
+                  function() {
+                    for (var i = 0; i &lt; n50.attributes.length; i++) {
+                      var attr = n50.attributes[i];
+                      if (attr.localName === &quot;class&quot;) {
+                        attr.value = &quot;c03&quot;;
+                      }
+                    };
+                  },
+                  &quot;attributes Element.attributes.value: update mutation&quot;);
+
+  var n51 = document.getElementById('n51');
+runMutationTest(n51,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;n51&quot;, attributeName: &quot;id&quot;}],
+                  function() {
+                    n51.attributes[0].value = &quot;n51&quot;;
+                  },
+                  &quot;attributes Element.attributes.value: same id mutation&quot;);
+
+  var n60 = document.getElementById('n60');
+runMutationTest(n60,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;n60&quot;, attributeName: &quot;id&quot;}],
+                  function() {
+                    n60.setAttribute(&quot;id&quot;, &quot;n601&quot;);
+                  },
+                  &quot;attributes Element.setAttribute: id mutation&quot;);
+
+  var n61 = document.getElementById('n61');
+runMutationTest(n61,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;c01&quot;, attributeName: &quot;class&quot;}],
+                  function() {
+                    n61.setAttribute(&quot;class&quot;, &quot;c01&quot;);
+                  },
+                  &quot;attributes Element.setAttribute: same class mutation&quot;);
+
+  var n62 = document.getElementById('n62');
+runMutationTest(n62,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, attributeName: &quot;classname&quot;}],
+                  function() {
+                    n62.setAttribute(&quot;classname&quot;, &quot;c01&quot;);
+                  },
+                  &quot;attributes Element.setAttribute: classname mutation&quot;);
+
+  var n70 = document.getElementById('n70');
+runMutationTest(n70,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;c01&quot;, attributeName: &quot;class&quot;}],
+                  function() {
+                    n70.removeAttribute(&quot;class&quot;);
+                  },
+                  &quot;attributes Element.removeAttribute: removal mutation&quot;);
+
+  var n71 = document.getElementById('n71');
+runMutationTest(n71,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;n71&quot;, attributeName: &quot;id&quot;}],
+                  function() {
+                    n71.removeAttribute(&quot;class&quot;);
+                    n71.id = &quot;n710&quot;;
+                  },
+                  &quot;attributes Element.removeAttribute: removal no mutation&quot;);
+
+  var n72 = document.getElementById('n72');
+runMutationTest(n72,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;text&quot;, attributeName: &quot;type&quot;}, {type: &quot;attributes&quot;, oldValue: &quot;n72&quot;, attributeName: &quot;id&quot;}],
+                  function() {
+                    n72.removeAttribute(&quot;type&quot;);
+                    n72.id = &quot;n720&quot;;
+                  },
+                  &quot;childList HTMLInputElement.removeAttribute: type removal mutation&quot;);
+
+  var n80 = document.getElementById('n80');
+runMutationTest(n80,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, attributeName: &quot;private&quot;, attributeNamespace: &quot;http://example.org/&quot;}],
+                  function() {
+                    n80.setAttributeNS(&quot;http://example.org/&quot;, &quot;private&quot;, &quot;42&quot;);
+                  },
+                  &quot;attributes Element.setAttributeNS: creation mutation&quot;);
+
+  var n81 = document.getElementById('n81');
+runMutationTest(n81,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, attributeName: &quot;lang&quot;, attributeNamespace: &quot;http://www.w3.org/XML/1998/namespace&quot;}],
+                  function() {
+                    n81.setAttributeNS(&quot;http://www.w3.org/XML/1998/namespace&quot;, &quot;xml:lang&quot;, &quot;42&quot;);
+                  },
+                  &quot;attributes Element.setAttributeNS: prefixed attribute creation mutation&quot;);
+
+  var n90 = document.getElementById('n90');
+  n90.setAttributeNS(&quot;http://example.org/&quot;, &quot;private&quot;, &quot;42&quot;);
+runMutationTest(n90,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;42&quot;, attributeName: &quot;private&quot;, attributeNamespace: &quot;http://example.org/&quot;}],
+                  function() {
+                    n90.removeAttributeNS(&quot;http://example.org/&quot;, &quot;private&quot;);
+                  },
+                  &quot;attributes Element.removeAttributeNS: removal mutation&quot;);
+
+  var n91 = document.getElementById('n91');
+runMutationTest(n91,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;n91&quot;, attributeName: &quot;id&quot;}],
+                  function() {
+                    n91.removeAttributeNS(&quot;http://example.org/&quot;, &quot;private&quot;);
+                    n91.id = &quot;n910&quot;;
+                  },
+                  &quot;attributes Element.removeAttributeNS: removal no mutation&quot;);
+
+  var n92 = document.getElementById('n92');
+runMutationTest(n92,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;n92&quot;, attributeName: &quot;id&quot;}],
+                  function() {
+                    n92.removeAttributeNS(&quot;http://www.w3.org/XML/1998/namespace&quot;, &quot;xml:lang&quot;);
+                    n92.id = &quot;n920&quot;;
+                  },
+                  &quot;attributes Element.removeAttributeNS: prefixed attribute removal no mutation&quot;);
+
+  var n1000 = document.getElementById('n1000');
+runMutationTest(n1000,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true,&quot;attributeFilter&quot;: [&quot;id&quot;]},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;n1000&quot;, attributeName: &quot;id&quot;}],
+                  function() { n1000.id = &quot;abc&quot;; n1000.className = &quot;c01&quot;},
+                  &quot;attributes/attributeFilter Element.id/Element.className: update mutation&quot;);
+
+  var n1001 = document.getElementById('n1001');
+runMutationTest(n1001,
+                  {&quot;attributes&quot;:true, &quot;attributeOldValue&quot;: true,&quot;attributeFilter&quot;: [&quot;id&quot;, &quot;class&quot;]},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;n1001&quot;, attributeName: &quot;id&quot;},
+                   {type: &quot;attributes&quot;, oldValue: &quot;c01&quot;, attributeName: &quot;class&quot;}],
+                  function() { n1001.id = &quot;abc&quot;; n1001.className = &quot;c02&quot;; n1001.setAttribute(&quot;lang&quot;, &quot;fr&quot;);},
+                  &quot;attributes/attributeFilter Element.id/Element.className: multiple filter update mutation&quot;);
+
+  var n2000 = document.getElementById('n2000');
+runMutationTest(n2000,
+                  {&quot;attributeOldValue&quot;: true},
+                  [{type: &quot;attributes&quot;, oldValue: &quot;n2000&quot;, attributeName: &quot;id&quot;}],
+                  function() { n2000.id = &quot;abc&quot;;},
+                  &quot;attributeOldValue alone Element.id: update mutation&quot;);
+
+  var n2001 = document.getElementById('n2001');
+runMutationTest(n2001,
+                  {&quot;attributeFilter&quot;: [&quot;id&quot;, &quot;class&quot;]},
+                  [{type: &quot;attributes&quot;, attributeName: &quot;id&quot;},
+                   {type: &quot;attributes&quot;, attributeName: &quot;class&quot;}],
+                  function() { n2001.id = &quot;abcd&quot;; n2001.className = &quot;c02&quot;; n2001.setAttribute(&quot;lang&quot;, &quot;fr&quot;);},
+                  &quot;attributeFilter alone Element.id/Element.className: multiple filter update mutation&quot;);
+
+  var n3000 = document.getElementById('n3000');
+runMutationTest(n3000,
+                  {&quot;subtree&quot;: true, &quot;childList&quot;:false, &quot;attributes&quot; : true},
+                  [{type: &quot;attributes&quot;, attributeName: &quot;id&quot; }],
+                  function() { n3000.textContent = &quot;CHANGED&quot;; n3000.id = &quot;abc&quot;;},
+                  &quot;childList false: no childList mutation&quot;);
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesMutationObservercharacterDataexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesMutationObservercharacterDataexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-characterData-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/MutationObserver-characterData-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-characterData-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-characterData-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,27 @@
</span><ins>+MutationObservers: characterData mutations
+
+
+PASS characterData Text.data: simple mutation without oldValue 
+PASS characterData Text.data: simple mutation 
+PASS characterData Text.appendData: simple mutation 
+PASS characterData Text.appendData: empty string mutation 
+PASS characterData Text.appendData: null string mutation 
+PASS characterData Text.insertData: simple mutation 
+PASS characterData Text.insertData: empty string mutation 
+PASS characterData Text.insertData: null string mutation 
+PASS characterData Text.deleteData: simple mutation 
+PASS characterData Text.deleteData: empty mutation 
+PASS characterData Text.replaceData: simple mutation 
+PASS characterData Text.replaceData: empty mutation 
+PASS characterData ProcessingInstruction: data mutations 
+PASS characterData Comment: data mutations 
+PASS Range (r70) is created 
+PASS characterData Range.deleteContents: child and data removal mutation 
+PASS Range (r71) is created 
+PASS characterData Range.deleteContents: child and data removal mutation (2) 
+PASS Range (r80) is created 
+PASS characterData Range.extractContents: child and data removal mutation 
+PASS Range (r81) is created 
+PASS characterData Range.extractContents: child and data removal mutation (2) 
+PASS characterData/characterDataOldValue alone Text.data: simple mutation 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesMutationObservercharacterDatahtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesMutationObservercharacterDatahtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-characterData.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/MutationObserver-characterData.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-characterData.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-characterData.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,215 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;MutationObservers: characterData mutations&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;mutationobservers.js&quot;&gt;&lt;/script&gt;
+&lt;h1&gt;MutationObservers: characterData mutations&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+
+&lt;section style=&quot;display: none&quot;&gt;
+
+&lt;p id='n'&gt;text content&lt;/p&gt;
+
+&lt;p id='n00'&gt;text content&lt;/p&gt;
+
+&lt;p id='n10'&gt;CHAN&lt;/p&gt;
+&lt;p id='n11'&gt;CHANGED&lt;/p&gt;
+&lt;p id='n12'&gt;CHANGED&lt;/p&gt;
+
+&lt;p id='n20'&gt;CHGED&lt;/p&gt;
+&lt;p id='n21'&gt;CHANGED&lt;/p&gt;
+&lt;p id='n22'&gt;CHANGED&lt;/p&gt;
+
+&lt;p id='n30'&gt;CCCHANGED&lt;/p&gt;
+&lt;p id='n31'&gt;CHANGED&lt;/p&gt;
+
+&lt;p id='n40'&gt;CCCHANGED&lt;/p&gt;
+&lt;p id='n41'&gt;CHANGED&lt;/p&gt;
+
+&lt;p id=&quot;n50&quot;&gt;&lt;?processing data?&gt;&lt;/p&gt;
+
+&lt;p id=&quot;n60&quot;&gt;&lt;!-- data --&gt;&lt;/p&gt;
+
+&lt;p id='n70'&gt;CHANN&lt;/p&gt;
+&lt;p id='n71'&gt;CHANN&lt;/p&gt;
+
+&lt;p id='n80'&gt;CHANN&lt;/p&gt;
+&lt;p id='n81'&gt;CHANN&lt;/p&gt;
+
+&lt;p id='n90'&gt;CHANN&lt;/p&gt;
+
+&lt;/section&gt;
+
+&lt;script&gt;
+  var n = document.getElementById('n').firstChild;
+runMutationTest(n,
+                  {&quot;characterData&quot;:true},
+                  [{type: &quot;characterData&quot;}],
+                  function() { n.data = &quot;NEW VALUE&quot;; },
+                  &quot;characterData Text.data: simple mutation without oldValue&quot;);
+
+  var n00 = document.getElementById('n00').firstChild;
+runMutationTest(n00,
+                  {&quot;characterData&quot;:true,&quot;characterDataOldValue&quot;:true},
+                  [{type: &quot;characterData&quot;, oldValue: &quot;text content&quot; }],
+                  function() { n00.data = &quot;CHANGED&quot;; },
+                  &quot;characterData Text.data: simple mutation&quot;);
+
+  var n10 = document.getElementById('n10').firstChild;
+runMutationTest(n10,
+                  {&quot;characterData&quot;:true,&quot;characterDataOldValue&quot;:true},
+                  [{type: &quot;characterData&quot;, oldValue: &quot;CHAN&quot; }],
+                  function() { n10.appendData(&quot;GED&quot;); },
+                  &quot;characterData Text.appendData: simple mutation&quot;);
+
+  var n11 = document.getElementById('n11').firstChild;
+runMutationTest(n11,
+                  {&quot;characterData&quot;:true,&quot;characterDataOldValue&quot;:true},
+                  [{type: &quot;characterData&quot;, oldValue: &quot;CHANGED&quot; }],
+                  function() { n11.appendData(&quot;&quot;); },
+                  &quot;characterData Text.appendData: empty string mutation&quot;);
+
+  var n12 = document.getElementById('n12').firstChild;
+runMutationTest(n12,
+                  {&quot;characterData&quot;:true,&quot;characterDataOldValue&quot;:true},
+                  [{type: &quot;characterData&quot;, oldValue: &quot;CHANGED&quot; }],
+                  function() { n12.appendData(null); },
+                  &quot;characterData Text.appendData: null string mutation&quot;);
+
+  var n20 = document.getElementById('n20').firstChild;
+runMutationTest(n20,
+                  {&quot;characterData&quot;:true,&quot;characterDataOldValue&quot;:true},
+                  [{type: &quot;characterData&quot;, oldValue: &quot;CHGED&quot; }],
+                  function() { n20.insertData(2, &quot;AN&quot;); },
+                  &quot;characterData Text.insertData: simple mutation&quot;);
+
+  var n21 = document.getElementById('n21').firstChild;
+runMutationTest(n21,
+                  {&quot;characterData&quot;:true,&quot;characterDataOldValue&quot;:true},
+                  [{type: &quot;characterData&quot;, oldValue: &quot;CHANGED&quot; }],
+                  function() { n21.insertData(2, &quot;&quot;); },
+                  &quot;characterData Text.insertData: empty string mutation&quot;);
+
+  var n22 = document.getElementById('n22').firstChild;
+runMutationTest(n22,
+                  {&quot;characterData&quot;:true,&quot;characterDataOldValue&quot;:true},
+                  [{type: &quot;characterData&quot;, oldValue: &quot;CHANGED&quot; }],
+                  function() { n22.insertData(2, null); },
+                  &quot;characterData Text.insertData: null string mutation&quot;);
+
+  var n30 = document.getElementById('n30').firstChild;
+runMutationTest(n30,
+                  {&quot;characterData&quot;:true,&quot;characterDataOldValue&quot;:true},
+                  [{type: &quot;characterData&quot;, oldValue: &quot;CCCHANGED&quot; }],
+                  function() { n30.deleteData(0, 2); },
+                  &quot;characterData Text.deleteData: simple mutation&quot;);
+
+  var n31 = document.getElementById('n31').firstChild;
+runMutationTest(n31,
+                  {&quot;characterData&quot;:true,&quot;characterDataOldValue&quot;:true},
+                  [{type: &quot;characterData&quot;, oldValue: &quot;CHANGED&quot; }, {type: &quot;characterData&quot;, oldValue: &quot;CHANGED&quot; }],
+                  function() { n31.deleteData(0, 0); n31.data = &quot;n31&quot;; },
+                  &quot;characterData Text.deleteData: empty mutation&quot;);
+
+  var n40 = document.getElementById('n40').firstChild;
+runMutationTest(n40,
+                  {&quot;characterData&quot;:true,&quot;characterDataOldValue&quot;:true},
+                  [{type: &quot;characterData&quot;, oldValue: &quot;CCCHANGED&quot; }],
+                  function() { n40.replaceData(0, 2, &quot;CH&quot;); },
+                  &quot;characterData Text.replaceData: simple mutation&quot;);
+
+  var n41 = document.getElementById('n41').firstChild;
+runMutationTest(n41,
+                  {&quot;characterData&quot;:true,&quot;characterDataOldValue&quot;:true},
+                  [{type: &quot;characterData&quot;, oldValue: &quot;CHANGED&quot; }],
+                  function() { n41.replaceData(0, 0, &quot;CH&quot;); },
+                  &quot;characterData Text.replaceData: empty mutation&quot;);
+
+  var n50 = document.getElementById('n50').firstChild;
+runMutationTest(n50,
+                  {&quot;characterData&quot;:true,&quot;characterDataOldValue&quot;:true},
+                  [{type: &quot;characterData&quot;, oldValue: &quot;?processing data?&quot; },{type: &quot;characterData&quot;, oldValue: &quot;CHANGED&quot; },{type: &quot;characterData&quot;, oldValue: &quot;CHANGED&quot; }],
+                  function() {
+                    n50.data = &quot;CHANGED&quot;;
+                    n50.deleteData(0, 0);
+                    n50.replaceData(0, 2, &quot;CH&quot;); },
+                  &quot;characterData ProcessingInstruction: data mutations&quot;);
+
+  var n60 = document.getElementById('n60').firstChild;
+runMutationTest(n60,
+                  {&quot;characterData&quot;:true,&quot;characterDataOldValue&quot;:true},
+                  [{type: &quot;characterData&quot;, oldValue: &quot; data &quot; },{type: &quot;characterData&quot;, oldValue: &quot;CHANGED&quot; },{type: &quot;characterData&quot;, oldValue: &quot;CHANGED&quot; }],
+                  function() {
+                    n60.data = &quot;CHANGED&quot;;
+                    n60.deleteData(0, 0);
+                    n60.replaceData(0, 2, &quot;CH&quot;); },
+                  &quot;characterData Comment: data mutations&quot;);
+
+  var n70 = document.getElementById('n70');
+  var r70 = null;
+  test(function () {
+    n70.appendChild(document.createTextNode(&quot;NNN&quot;));
+    n70.appendChild(document.createTextNode(&quot;NGED&quot;));
+    r70 = document.createRange();
+    r70.setStart(n70.firstChild, 4);
+    r70.setEnd(n70.lastChild, 1);
+   }, &quot;Range (r70) is created&quot;);
+runMutationTest(n70.firstChild,
+                  {&quot;characterData&quot;:true,&quot;characterDataOldValue&quot;:true},
+                  [{type: &quot;characterData&quot;, oldValue: &quot;CHANN&quot; }],
+                  function() { r70.deleteContents(); },
+                  &quot;characterData Range.deleteContents: child and data removal mutation&quot;);
+
+  var n71 = document.getElementById('n71');
+  var r71 = null;
+  test(function () {
+    n71.appendChild(document.createTextNode(&quot;NNN&quot;));
+    n71.appendChild(document.createTextNode(&quot;NGED&quot;));
+    r71 = document.createRange();
+    r71.setStart(n71.firstChild, 4);
+    r71.setEnd(n71.lastChild, 1);
+   }, &quot;Range (r71) is created&quot;);
+runMutationTest(n71.lastChild,
+                  {&quot;characterData&quot;:true,&quot;characterDataOldValue&quot;:true},
+                  [{type: &quot;characterData&quot;, oldValue: &quot;NGED&quot;}],
+                  function() { r71.deleteContents(); },
+                  &quot;characterData Range.deleteContents: child and data removal mutation (2)&quot;);
+
+  var n80 = document.getElementById('n80');
+  var r80 = null;
+  test(function () {
+    n80.appendChild(document.createTextNode(&quot;NNN&quot;));
+    n80.appendChild(document.createTextNode(&quot;NGED&quot;));
+    r80 = document.createRange();
+    r80.setStart(n80.firstChild, 4);
+    r80.setEnd(n80.lastChild, 1);
+   }, &quot;Range (r80) is created&quot;);
+runMutationTest(n80.firstChild,
+                  {&quot;characterData&quot;:true,&quot;characterDataOldValue&quot;:true},
+                  [{type: &quot;characterData&quot;, oldValue: &quot;CHANN&quot; }],
+                  function() { r80.extractContents(); },
+                  &quot;characterData Range.extractContents: child and data removal mutation&quot;);
+
+  var n81 = document.getElementById('n81');
+  var r81 = null;
+  test(function () {
+    n81.appendChild(document.createTextNode(&quot;NNN&quot;));
+    n81.appendChild(document.createTextNode(&quot;NGED&quot;));
+    r81 = document.createRange();
+    r81.setStart(n81.firstChild, 4);
+    r81.setEnd(n81.lastChild, 1);
+   }, &quot;Range (r81) is created&quot;);
+runMutationTest(n81.lastChild,
+                  {&quot;characterData&quot;:true,&quot;characterDataOldValue&quot;:true},
+                  [{type: &quot;characterData&quot;, oldValue: &quot;NGED&quot; }],
+                  function() { r81.extractContents(); },
+                  &quot;characterData Range.extractContents: child and data removal mutation (2)&quot;);
+
+  var n90 = document.getElementById('n90').firstChild;
+runMutationTest(n90,
+                  {&quot;characterDataOldValue&quot;:true},
+                  [{type: &quot;characterData&quot;, oldValue: &quot;CHANN&quot; }],
+                  function() { n90.data = &quot;CHANGED&quot;; },
+                  &quot;characterData/characterDataOldValue alone Text.data: simple mutation&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesMutationObserverchildListexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesMutationObserverchildListexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-childList-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/MutationObserver-childList-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-childList-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-childList-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+MutationObservers: childList mutations
+
+
+PASS childList Node.nodeValue: no mutation 
+PASS childList Node.textContent: replace content mutation 
+PASS childList Node.textContent: no previous content mutation 
+PASS childList Node.textContent: textContent no mutation 
+PASS childList Node.textContent: empty string mutation 
+PASS childList Node.normalize mutation 
+PASS childList Node.normalize mutations 
+PASS childList Node.insertBefore: addition mutation 
+PASS childList Node.insertBefore: removal mutation 
+PASS childList Node.insertBefore: removal and addition mutations 
+PASS childList Node.insertBefore: fragment addition mutations 
+PASS childList Node.insertBefore: fragment removal mutations 
+PASS childList Node.insertBefore: last child addition mutation 
+PASS childList Node.appendChild: addition mutation 
+PASS childList Node.appendChild: removal mutation 
+PASS childList Node.appendChild: removal and addition mutations 
+PASS childList Node.appendChild: fragment addition mutations 
+PASS childList Node.appendChild: fragment removal mutations 
+PASS childList Node.appendChild: addition outside document tree mutation 
+PASS childList Node.replaceChild: replacement mutation 
+PASS childList Node.replaceChild: removal mutation 
+FAIL childList Node.replaceChild: internal replacement mutation assert_equals: mutation records must match expected 2 but got 1
+PASS childList Node.removeChild: removal mutation 
+PASS Range (r70) is created 
+PASS childList Range.deleteContents: child removal mutation 
+PASS Range (r71) is created 
+PASS childList Range.deleteContents: child and data removal mutation 
+PASS Range (r80) is created 
+PASS childList Range.extractContents: child removal mutation 
+PASS Range (r81) is created 
+PASS childList Range.extractContents: child and data removal mutation 
+PASS Range (r90) is created 
+PASS childList Range.insertNode: child insertion mutation 
+PASS Range (r91) is created 
+PASS childList Range.insertNode: children insertion mutation 
+PASS Range (r100) is created 
+PASS childList Range.surroundContents: children removal and addition mutation 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesMutationObserverchildListhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesMutationObserverchildListhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-childList.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/MutationObserver-childList.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-childList.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-childList.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,423 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;MutationObservers: childList mutations&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;mutationobservers.js&quot;&gt;&lt;/script&gt;
+&lt;h1&gt;MutationObservers: childList mutations&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+
+&lt;section style=&quot;display: none&quot;&gt;
+&lt;p id='dummies'&gt;
+&lt;span id='d30'&gt;text content&lt;/span&gt;
+&lt;span id='d35'&gt;text content&lt;/span&gt;
+&lt;span id='d40'&gt;text content&lt;/span&gt;
+&lt;span id='d45'&gt;text content&lt;/span&gt;
+&lt;span id='d50'&gt;text content&lt;/span&gt;
+&lt;span id='d51'&gt;text content&lt;/span&gt;
+&lt;/p&gt;
+
+&lt;/section&gt;
+&lt;section style=&quot;display: none&quot;&gt;
+&lt;p id='n00'&gt;&lt;span&gt;text content&lt;/span&gt;&lt;/p&gt;
+
+&lt;p id='n10'&gt;&lt;span&gt;text content&lt;/span&gt;&lt;/p&gt;
+&lt;p id='n11'&gt;&lt;/p&gt;
+&lt;p id='n12'&gt;&lt;/p&gt;
+&lt;p id='n13'&gt;&lt;span&gt;text content&lt;/span&gt;&lt;/p&gt;
+
+&lt;p id='n20'&gt;PAS&lt;/p&gt;
+&lt;p id='n21'&gt;CH&lt;/p&gt;
+
+&lt;p id='n30'&gt;&lt;span&gt;text content&lt;/span&gt;&lt;/p&gt;
+&lt;p id='n31'&gt;&lt;span&gt;text content&lt;/span&gt;&lt;/p&gt;
+&lt;p id='n32'&gt;&lt;span&gt;AN&lt;/span&gt;&lt;span&gt;CH&lt;/span&gt;&lt;span&gt;GED&lt;/span&gt;&lt;/p&gt;
+&lt;p id='n33'&gt;&lt;span&gt;text content&lt;/span&gt;&lt;/p&gt;
+&lt;p id='n34'&gt;&lt;span&gt;text content&lt;/span&gt;&lt;/p&gt;
+&lt;p id='n35'&gt;&lt;span&gt;text content&lt;/span&gt;&lt;/p&gt;
+
+&lt;p id='n40'&gt;&lt;span&gt;text content&lt;/span&gt;&lt;/p&gt;
+&lt;p id='n41'&gt;&lt;span&gt;text content&lt;/span&gt;&lt;/p&gt;
+&lt;p id='n42'&gt;&lt;span&gt;CH&lt;/span&gt;&lt;span&gt;GED&lt;/span&gt;&lt;span&gt;AN&lt;/span&gt;&lt;/p&gt;
+&lt;p id='n43'&gt;&lt;span&gt;text content&lt;/span&gt;&lt;/p&gt;
+&lt;p id='n44'&gt;&lt;span&gt;text content&lt;/span&gt;&lt;/p&gt;
+&lt;p id='n45'&gt;&lt;span&gt;text content&lt;/span&gt;&lt;/p&gt;
+
+
+&lt;p id='n50'&gt;&lt;span&gt;text content&lt;/span&gt;&lt;/p&gt;
+&lt;p id='n51'&gt;&lt;span&gt;text content&lt;/span&gt;&lt;/p&gt;
+&lt;p id='n52'&gt;&lt;span&gt;NO &lt;/span&gt;&lt;span&gt;CHANGED&lt;/span&gt;&lt;/p&gt;
+
+&lt;p id='n60'&gt;&lt;span&gt;text content&lt;/span&gt;&lt;/p&gt;
+
+&lt;p id='n70'&gt;&lt;span&gt;NO &lt;/span&gt;&lt;span&gt;CHANGED&lt;/span&gt;&lt;/p&gt;
+&lt;p id='n71'&gt;CHANN&lt;/p&gt;
+
+&lt;p id='n80'&gt;&lt;span&gt;NO &lt;/span&gt;&lt;span&gt;CHANGED&lt;/span&gt;&lt;/p&gt;
+&lt;p id='n81'&gt;CHANN&lt;/p&gt;
+
+&lt;p id='n90'&gt;&lt;span&gt;CHA&lt;/span&gt;&lt;span&gt;ED&lt;/span&gt;&lt;/p&gt;
+&lt;p id='n91'&gt;CHAE&lt;/p&gt;
+
+&lt;p id='n100'&gt;&lt;span id=&quot;s1&quot;&gt;CHAN&lt;/span&gt;&lt;span id=&quot;s2&quot;&gt;GED&lt;/span&gt;&lt;/p&gt;
+
+&lt;/section&gt;
+
+&lt;script&gt;
+  var dummies = document.getElementById('dummies');
+
+  function createFragment() {
+    var fragment = document.createDocumentFragment();
+    fragment.appendChild(document.createTextNode(&quot;11&quot;));
+    fragment.appendChild(document.createTextNode(&quot;22&quot;));
+    return fragment;
+  }
+
+  var n00 = document.getElementById('n00');
+
+  runMutationTest(n00,
+                  {&quot;childList&quot;:true, &quot;attributes&quot;:true},
+                  [{type: &quot;attributes&quot;, attributeName: &quot;class&quot;}],
+                  function() { n00.nodeValue = &quot;&quot;; n00.setAttribute(&quot;class&quot;, &quot;dummy&quot;);},
+                  &quot;childList Node.nodeValue: no mutation&quot;);
+
+  var n10 = document.getElementById('n10');
+  runMutationTest(n10,
+                  {&quot;childList&quot;:true},
+                  [{type: &quot;childList&quot;,
+                    removedNodes: [n10.firstChild],
+                    addedNodes: function() {return [n10.firstChild]}}],
+                  function() { n10.textContent = &quot;new data&quot;; },
+                  &quot;childList Node.textContent: replace content mutation&quot;);
+
+  var n11 = document.getElementById('n11');
+  runMutationTest(n11,
+                  {&quot;childList&quot;:true},
+                  [{type: &quot;childList&quot;,
+                    addedNodes: function() {return [n11.firstChild]}}],
+                  function() { n11.textContent = &quot;new data&quot;; },
+                  &quot;childList Node.textContent: no previous content mutation&quot;);
+
+  var n12 = document.getElementById('n12');
+  runMutationTest(n12,
+                  {&quot;childList&quot;:true, &quot;attributes&quot;:true},
+                  [{type: &quot;attributes&quot;, attributeName: &quot;class&quot;}],
+                  function() { n12.textContent = &quot;&quot;; n12.setAttribute(&quot;class&quot;, &quot;dummy&quot;);},
+                  &quot;childList Node.textContent: textContent no mutation&quot;);
+
+  var n13 = document.getElementById('n13');
+  runMutationTest(n13,
+                  {&quot;childList&quot;:true},
+                  [{type: &quot;childList&quot;, removedNodes: [n13.firstChild]}],
+                  function() { n13.textContent = &quot;&quot;; },
+                  &quot;childList Node.textContent: empty string mutation&quot;);
+
+  var n20 = document.getElementById('n20');
+  n20.appendChild(document.createTextNode(&quot;S&quot;));
+  runMutationTest(n20,
+                  {&quot;childList&quot;:true},
+                  [{type: &quot;childList&quot;,
+                    removedNodes: [n20.lastChild],
+                    previousSibling: n20.firstChild}],
+                  function() { n20.normalize(); },
+                  &quot;childList Node.normalize mutation&quot;);
+
+  var n21 = document.getElementById('n21');
+  n21.appendChild(document.createTextNode(&quot;AN&quot;));
+  n21.appendChild(document.createTextNode(&quot;GED&quot;));
+  runMutationTest(n21,
+                  {&quot;childList&quot;:true},
+                  [{type: &quot;childList&quot;,
+                    removedNodes: [n21.lastChild.previousSibling],
+                    previousSibling: n21.firstChild,
+                    nextSibling: n21.lastChild},
+                   {type: &quot;childList&quot;,
+                    removedNodes: [n21.lastChild],
+                    previousSibling: n21.firstChild}],
+                  function() { n21.normalize(); },
+                  &quot;childList Node.normalize mutations&quot;);
+
+  var n30 = document.getElementById('n30');
+  var d30 = document.getElementById('d30');
+  runMutationTest(n30,
+                  {&quot;childList&quot;:true},
+                  [{type: &quot;childList&quot;,
+                    addedNodes: [d30],
+                    nextSibling: n30.firstChild}],
+                  function() { n30.insertBefore(d30, n30.firstChild); },
+                  &quot;childList Node.insertBefore: addition mutation&quot;);
+
+  var n31 = document.getElementById('n31');
+  runMutationTest(n31,
+                  {&quot;childList&quot;:true},
+                  [{type: &quot;childList&quot;,
+                    removedNodes: [n31.firstChild]}],
+                  function() { dummies.insertBefore(n31.firstChild, dummies.firstChild); },
+                  &quot;childList Node.insertBefore: removal mutation&quot;);
+
+  var n32 = document.getElementById('n32');
+  runMutationTest(n32,
+                  {&quot;childList&quot;:true},
+                  [{type: &quot;childList&quot;,
+                    removedNodes: [n32.firstChild.nextSibling],
+                    previousSibling: n32.firstChild, nextSibling: n32.lastChild},
+                    {type: &quot;childList&quot;,
+                    addedNodes: [n32.firstChild.nextSibling],
+                    nextSibling: n32.firstChild}],
+                  function() { n32.insertBefore(n32.firstChild.nextSibling, n32.firstChild); },
+                  &quot;childList Node.insertBefore: removal and addition mutations&quot;);
+
+  var n33 = document.getElementById('n33');
+  var f33 = createFragment();
+  runMutationTest(n33,
+                  {&quot;childList&quot;:true},
+                  [{type: &quot;childList&quot;,
+                    addedNodes: [f33.firstChild, f33.lastChild],
+                    nextSibling: n33.firstChild}],
+                  function() { n33.insertBefore(f33, n33.firstChild); },
+                  &quot;childList Node.insertBefore: fragment addition mutations&quot;);
+
+  var n34 = document.getElementById('n34');
+  var f34 = createFragment();
+  runMutationTest(f34,
+                  {&quot;childList&quot;:true},
+                  [{type: &quot;childList&quot;,
+                    removedNodes: [f34.firstChild, f34.lastChild]}],
+                  function() { n34.insertBefore(f34, n34.firstChild); },
+                  &quot;childList Node.insertBefore: fragment removal mutations&quot;);
+
+  var n35 = document.getElementById('n35');
+  var d35 = document.getElementById('d35');
+  runMutationTest(n35,
+                  {&quot;childList&quot;:true},
+                  [{type: &quot;childList&quot;,
+                    addedNodes: [d35],
+                    previousSibling: n35.firstChild}],
+                  function() { n35.insertBefore(d35, null); },
+                  &quot;childList Node.insertBefore: last child addition mutation&quot;);
+
+  var n40 = document.getElementById('n40');
+  var d40 = document.getElementById('d40');
+  runMutationTest(n40,
+                  {&quot;childList&quot;:true},
+                  [{type: &quot;childList&quot;,
+                    addedNodes: [d40],
+                    previousSibling: n40.firstChild}],
+                  function() { n40.appendChild(d40); },
+                  &quot;childList Node.appendChild: addition mutation&quot;);
+
+  var n41 = document.getElementById('n41');
+  runMutationTest(n41,
+                  {&quot;childList&quot;:true},
+                  [{type: &quot;childList&quot;,
+                    removedNodes: [n41.firstChild]}],
+                  function() { dummies.appendChild(n41.firstChild); },
+                  &quot;childList Node.appendChild: removal mutation&quot;);
+
+  var n42 = document.getElementById('n42');
+  runMutationTest(n42,
+                  {&quot;childList&quot;:true},
+                  [{type: &quot;childList&quot;,
+                    removedNodes: [n42.firstChild.nextSibling],
+                    previousSibling: n42.firstChild, nextSibling: n42.lastChild},
+                    {type: &quot;childList&quot;,
+                    addedNodes: [n42.firstChild.nextSibling],
+                    previousSibling: n42.lastChild}],
+                  function() { n42.appendChild(n42.firstChild.nextSibling); },
+                  &quot;childList Node.appendChild: removal and addition mutations&quot;);
+
+  var n43 = document.getElementById('n43');
+  var f43 = createFragment();
+  runMutationTest(n43,
+                  {&quot;childList&quot;:true},
+                  [{type: &quot;childList&quot;,
+                    addedNodes: [f43.firstChild, f43.lastChild],
+                    previousSibling: n43.firstChild}],
+                  function() { n43.appendChild(f43); },
+                  &quot;childList Node.appendChild: fragment addition mutations&quot;);
+
+  var n44 = document.getElementById('n44');
+  var f44 = createFragment();
+  runMutationTest(f44,
+                  {&quot;childList&quot;:true},
+                  [{type: &quot;childList&quot;,
+                    removedNodes: [f44.firstChild, f44.lastChild]}],
+                  function() { n44.appendChild(f44); },
+                  &quot;childList Node.appendChild: fragment removal mutations&quot;);
+
+  var n45 = document.createElement('p');
+  var d45 = document.createElement('span');
+  runMutationTest(n45,
+                  {&quot;childList&quot;:true},
+                  [{type: &quot;childList&quot;,
+                    addedNodes: [d45]}],
+                  function() { n45.appendChild(d45); },
+                  &quot;childList Node.appendChild: addition outside document tree mutation&quot;);
+
+  var n50 = document.getElementById('n50');
+  var d50 = document.getElementById('d50');
+  runMutationTest(n50,
+                  {&quot;childList&quot;:true},
+                  [{type: &quot;childList&quot;,
+                    removedNodes: [n50.firstChild],
+                    addedNodes: [d50]}],
+                  function() { n50.replaceChild(d50, n50.firstChild); },
+                  &quot;childList Node.replaceChild: replacement mutation&quot;);
+
+  var n51 = document.getElementById('n51');
+  var d51 = document.getElementById('d51');
+  runMutationTest(n51,
+                  {&quot;childList&quot;:true},
+                  [{type: &quot;childList&quot;,
+                    removedNodes: [n51.firstChild]}],
+                  function() { d51.parentNode.replaceChild(n51.firstChild, d51); },
+                  &quot;childList Node.replaceChild: removal mutation&quot;);
+
+  var n52 = document.getElementById('n52');
+  runMutationTest(n52,
+                  {&quot;childList&quot;:true},
+                  [{type: &quot;childList&quot;,
+                    removedNodes: [n52.lastChild],
+                    previousSibling: n52.firstChild},
+                   {type: &quot;childList&quot;,
+                    removedNodes: [n52.firstChild],
+                    addedNodes: [n52.lastChild]}],
+                  function() { n52.replaceChild(n52.lastChild, n52.firstChild); },
+                  &quot;childList Node.replaceChild: internal replacement mutation&quot;);
+
+  var n60 = document.getElementById('n60');
+  runMutationTest(n60,
+                  {&quot;childList&quot;:true},
+                  [{type: &quot;childList&quot;,
+                    removedNodes: [n60.firstChild]}],
+                  function() { n60.removeChild(n60.firstChild); },
+                  &quot;childList Node.removeChild: removal mutation&quot;);
+
+  var n70 = document.getElementById('n70');
+  var r70 = null;
+  test(function () {
+    r70 = document.createRange();
+    r70.setStartBefore(n70.firstChild);
+    r70.setEndAfter(n70.firstChild);
+   }, &quot;Range (r70) is created&quot;);
+  runMutationTest(n70,
+                  {&quot;childList&quot;:true},
+                  [{type: &quot;childList&quot;,
+                    removedNodes: [n70.firstChild],
+                    nextSibling: n70.lastChild}],
+                  function() { r70.deleteContents(); },
+                  &quot;childList Range.deleteContents: child removal mutation&quot;);
+
+  var n71 = document.getElementById('n71');
+  var r71 = null;
+  test(function () {
+    n71.appendChild(document.createTextNode(&quot;NNN&quot;));
+    n71.appendChild(document.createTextNode(&quot;NGED&quot;));
+    r71 = document.createRange();
+    r71.setStart(n71.firstChild, 4);
+    r71.setEnd(n71.lastChild, 1);
+   }, &quot;Range (r71) is created&quot;);
+  runMutationTest(n71,
+                  {&quot;childList&quot;:true},
+                  [{type: &quot;childList&quot;,
+                    removedNodes: [n71.firstChild.nextSibling],
+                    previousSibling: n71.firstChild,
+                    nextSibling: n71.lastChild}],
+                  function() { r71.deleteContents(); },
+                  &quot;childList Range.deleteContents: child and data removal mutation&quot;);
+
+  var n80 = document.getElementById('n80');
+  var r80 = null;
+  test(function () {
+    r80 = document.createRange();
+    r80.setStartBefore(n80.firstChild);
+    r80.setEndAfter(n80.firstChild);
+   }, &quot;Range (r80) is created&quot;);
+  runMutationTest(n80,
+                  {&quot;childList&quot;:true},
+                  [{type: &quot;childList&quot;,
+                    removedNodes: [n80.firstChild],
+                    nextSibling: n80.lastChild}],
+                  function() { r80.extractContents(); },
+                  &quot;childList Range.extractContents: child removal mutation&quot;);
+
+  var n81 = document.getElementById('n81');
+  var r81 = null;
+  test(function () {
+    n81.appendChild(document.createTextNode(&quot;NNN&quot;));
+    n81.appendChild(document.createTextNode(&quot;NGED&quot;));
+    r81 = document.createRange();
+    r81.setStart(n81.firstChild, 4);
+    r81.setEnd(n81.lastChild, 1);
+   }, &quot;Range (r81) is created&quot;);
+  runMutationTest(n81,
+                  {&quot;childList&quot;:true},
+                  [{type: &quot;childList&quot;,
+                    removedNodes: [n81.firstChild.nextSibling],
+                    previousSibling: n81.firstChild,
+                    nextSibling: n81.lastChild}],
+                  function() { r81.extractContents(); },
+                  &quot;childList Range.extractContents: child and data removal mutation&quot;);
+
+  var n90 = document.getElementById('n90');
+  var f90 = document.createTextNode(&quot;NG&quot;);
+  var r90 = null;
+  test(function () {
+    r90 = document.createRange();
+    r90.setStartAfter(n90.firstChild);
+    r90.setEndBefore(n90.lastChild);
+   }, &quot;Range (r90) is created&quot;);
+  runMutationTest(n90,
+                  {&quot;childList&quot;:true},
+                  [{type: &quot;childList&quot;,
+                    addedNodes: [f90],
+                    previousSibling: n90.firstChild,
+                    nextSibling: n90.lastChild}],
+                  function() { r90.insertNode(f90); },
+                  &quot;childList Range.insertNode: child insertion mutation&quot;);
+
+  var n91 = document.getElementById('n91');
+  var f91 = document.createTextNode(&quot;NG&quot;);
+  var r91 = null;
+  test(function () {
+    n91.appendChild(document.createTextNode(&quot;D&quot;));
+    r91 = document.createRange();
+    r91.setStart(n91.firstChild, 3);
+    r91.setEnd(n91.lastChild, 0);
+   }, &quot;Range (r91) is created&quot;);
+  runMutationTest(n91,
+                  {&quot;childList&quot;:true},
+                  [{type: &quot;childList&quot;,
+                    addedNodes: function() { return [n91.lastChild.previousSibling]; },
+                    previousSibling: n91.firstChild,
+                    nextSibling: n91.lastChild},
+                   {type: &quot;childList&quot;,
+                    addedNodes: [f91],
+                    previousSibling: n91.firstChild,
+                    nextSibling: function () { return n91.lastChild.previousSibling; } }],
+                  function() { r91.insertNode(f91); },
+                  &quot;childList Range.insertNode: children insertion mutation&quot;);
+
+  var n100 = document.getElementById('n100');
+  var f100 = document.createElement(&quot;span&quot;);
+  var r100 = null;
+  test(function () {
+    r100 = document.createRange();
+    r100.setStartBefore(n100.firstChild);
+    r100.setEndAfter(n100.lastChild);
+   }, &quot;Range (r100) is created&quot;);
+  runMutationTest(n100,
+                  {&quot;childList&quot;:true},
+                  [{type: &quot;childList&quot;,
+                    removedNodes: [n100.firstChild],
+                    nextSibling: n100.lastChild},
+                   {type: &quot;childList&quot;,
+                    removedNodes: [n100.lastChild]},
+                   {type: &quot;childList&quot;,
+                    addedNodes: [f100] }],
+                  function() { r100.surroundContents(f100); },
+                  &quot;childList Range.surroundContents: children removal and addition mutation&quot;);
+
+&lt;/script&gt;
+
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesMutationObserverdisconnectexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesMutationObserverdisconnectexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-disconnect-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/MutationObserver-disconnect-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-disconnect-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-disconnect-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+MutationObservers: disconnect
+
+
+PASS subtree mutations 
+PASS disconnect discarded some mutations 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesMutationObserverdisconnecthtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesMutationObserverdisconnecthtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-disconnect.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/MutationObserver-disconnect.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-disconnect.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-disconnect.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,48 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;MutationObservers: disconnect&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;h1&gt;MutationObservers: disconnect&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;section style=&quot;display: none&quot;&gt;
+&lt;p id='n00'&gt;&lt;/p&gt;
+&lt;/section&gt;
+&lt;script&gt;
+var n00 = document.getElementById('n00');
+var parentTest = async_test(&quot;subtree mutations&quot;);
+function masterMO(sequence, obs) {
+  parentTest.step(function() {
+    assert_equals(sequence.length, 4, &quot;mutation records must match&quot;);
+  });
+  parentTest.done();
+}
+parentTest.step(function() {
+  (new MutationObserver(masterMO)).observe(n00.parentNode, {&quot;subtree&quot;: true, &quot;attributes&quot;: true});
+});
+
+var disconnectTest = async_test(&quot;disconnect discarded some mutations&quot;);
+function observerCallback(sequence, obs) {
+  disconnectTest.step(function() {
+    assert_equals(sequence.length, 1);
+    assert_equals(sequence[0].type, &quot;attributes&quot;);
+    assert_equals(sequence[0].attributeName, &quot;id&quot;);
+    assert_equals(sequence[0].oldValue, &quot;latest&quot;);
+    disconnectTest.done();
+  });
+}
+
+var observer;
+disconnectTest.step(function() {
+  observer = new MutationObserver(observerCallback);
+  observer.observe(n00, {&quot;attributes&quot;: true});
+  n00.id = &quot;foo&quot;;
+  n00.id = &quot;bar&quot;;
+  observer.disconnect();
+  observer.observe(n00, {&quot;attributes&quot;: true, &quot;attributeOldValue&quot;: true});
+  n00.id = &quot;latest&quot;;
+  observer.disconnect();
+  observer.observe(n00, {&quot;attributes&quot;: true, &quot;attributeOldValue&quot;: true});
+  n00.id = &quot;n0000&quot;;
+});
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesMutationObserverdocumentexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesMutationObserverdocumentexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-document-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/MutationObserver-document-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-document-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-document-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+MutationObservers: document mutations
+
+
+PASS setup test 
+PASS parser insertion mutations 
+PASS parser script insertion mutation 
+PASS removal of parent during parsing 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesMutationObserverdocumenthtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesMutationObserverdocumenthtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-document.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/MutationObserver-document.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-document.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-document.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,167 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;MutationObservers: takeRecords&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;mutationobservers.js&quot;&gt;&lt;/script&gt;
+&lt;h1&gt;MutationObservers: document mutations&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+
+&lt;script id='s001'&gt;
+  var setupTest = async_test(&quot;setup test&quot;);
+  var insertionTest = async_test(&quot;parser insertion mutations&quot;);
+  var insertionTest2 = async_test(&quot;parser script insertion mutation&quot;);
+  var testCounter = 0;
+
+  function masterMO(sequence, obs) {
+    testCounter++;
+    if (testCounter == 1) {
+      insertionTest.step(
+        function () {
+          checkRecords(document, sequence,
+                       [{type: &quot;childList&quot;,
+                         addedNodes: function () {
+                           return [ document.getElementById(&quot;n00&quot;) ];
+                         },
+                         previousSibling: function () {
+                           return document.getElementById(&quot;s001&quot;);
+                         },
+                         target: document.body},
+                        {type: &quot;childList&quot;,
+                         addedNodes: function () {
+                           return [ document.getElementById(&quot;s002&quot;) ];
+                         },
+                         previousSibling: function () {
+                           return document.getElementById(&quot;n00&quot;);
+                         },
+                         target: document.body},
+                        {type: &quot;childList&quot;,
+                         addedNodes: function () {
+                           return [ document.getElementById(&quot;s002&quot;).firstChild ];
+                         },
+                         target: function () {
+                           return document.getElementById(&quot;s002&quot;);
+                         }}]);
+        });
+    } else if (testCounter == 2) {
+      insertionTest2.step(
+        function () {
+          checkRecords(document, sequence,
+                       [{type: &quot;childList&quot;,
+                         addedNodes: function () {
+                           return [ document.getElementById(&quot;inserted_element&quot;) ];
+                         },
+                         previousSibling: function () {
+                           return document.getElementById(&quot;s002&quot;);
+                         },
+                         target: document.body},
+                        {type: &quot;childList&quot;,
+                         addedNodes: function () {
+                           return [ document.getElementById(&quot;inserted_script&quot;) ];
+                         },
+                         target: function () {
+                          return document.getElementById(&quot;n00&quot;);
+                         }}
+                        ]);
+        });
+    }
+  }
+  var document_observer;
+  var newElement;
+  setupTest.step(function() {
+    document_observer = new MutationObserver(masterMO);
+    newElement = document.createElement(&quot;span&quot;);
+    document_observer.observe(document, {subtree:true,childList:true});
+    newElement.id = &quot;inserted_element&quot;;
+    newElement.setAttribute(&quot;style&quot;, &quot;display: none&quot;);
+    newElement.textContent = &quot;my new span for n00&quot;;
+  });
+&lt;/script&gt;&lt;p id='n00'&gt;&lt;/p&gt;&lt;script id='s002'&gt;
+  var newScript = document.createElement(&quot;script&quot;);
+  setupTest.step(function() {
+    newScript.textContent = &quot;document.body.appendChild(newElement);&quot;;
+    newScript.id = &quot;inserted_script&quot;;
+    document.getElementById(&quot;n00&quot;).appendChild(newScript);
+  });
+  if (testCounter &lt; 1) {
+    insertionTest.step(
+      function () {
+        assert_unreached(&quot;document observer did not trigger&quot;);
+      });
+  }
+&lt;/script&gt;&lt;script id='s003'&gt;
+  setupTest.step(function() {
+    document_observer.disconnect();
+  });
+  if (testCounter &lt; 2) {
+    insertionTest2.step(
+      function () {
+        assert_unreached(&quot;document observer did not trigger&quot;);
+      });
+  }
+  insertionTest.done();
+  insertionTest2.done();
+&lt;/script&gt;
+
+&lt;p id='n012'&gt;&lt;/p&gt;&lt;div id='d01'&gt;
+&lt;script id='s011'&gt;
+  var removalTest = async_test(&quot;removal of parent during parsing&quot;);
+  var d01 = document.getElementById(&quot;d01&quot;);
+  testCounter = 0;
+
+  function removalMO(sequence, obs) {
+    testCounter++;
+    if (testCounter == 1) {
+      removalTest.step(
+        function () {
+          checkRecords(document, sequence,
+                       [{type: &quot;childList&quot;,
+                         removedNodes: function () {
+                           return [ d01 ];
+                         },
+                         previousSibling: function () {
+                           return document.getElementById(&quot;n012&quot;);
+                         },
+                         target: document.body}]);
+        });
+    } else if (testCounter == 2) {
+      removalTest.step(
+        function () {
+          checkRecords(document, sequence,
+                       [{type: &quot;childList&quot;,
+                         addedNodes: function () {
+                           return [ document.getElementById(&quot;s012&quot;) ];
+                         },
+                         previousSibling: function () {
+                           return document.getElementById(&quot;n012&quot;);
+                         },
+                         target: document.body},
+                        {type: &quot;childList&quot;,
+                          addedNodes: function () {
+                            return [ document.getElementById(&quot;s012&quot;).firstChild ];
+                          },
+                          target: function () {
+                            return document.getElementById(&quot;s012&quot;);
+                          }}]);
+        });
+    }
+  }
+  var document2_observer;
+  setupTest.step(function() {
+    document2_observer = new MutationObserver(removalMO);
+    document2_observer.observe(document, {subtree:true,childList:true});
+    d01.parentNode.removeChild(d01);
+  });
+&lt;/script&gt;&lt;p id='n01'&gt;&lt;/p&gt;&lt;/div&gt;&lt;script id='s012'&gt;
+  setupTest.step(function() {
+    document2_observer.disconnect();
+  });
+  if (testCounter &lt; 2) {
+    removalTest.step(
+      function () {
+        assert_unreached(&quot;document observer did not trigger&quot;);
+      });
+  }
+  removalTest.done();
+  setupTest.done();
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesMutationObserverinnerouterexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesMutationObserverinnerouterexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-inner-outer-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/MutationObserver-inner-outer-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-inner-outer-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-inner-outer-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+MutationObservers: innerHTML, outerHTML mutations
+
+
+FAIL innerHTML mutation assert_equals: mutation records must match expected 2 but got 1
+PASS innerHTML with 2 children mutation 
+PASS outerHTML mutation 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesMutationObserverinnerouterhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesMutationObserverinnerouterhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-inner-outer.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/MutationObserver-inner-outer.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-inner-outer.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-inner-outer.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,65 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;MutationObservers: innerHTML, outerHTML mutations&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;mutationobservers.js&quot;&gt;&lt;/script&gt;
+&lt;h1&gt;MutationObservers: innerHTML, outerHTML mutations&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+
+&lt;section style=&quot;display: none&quot;&gt;
+
+&lt;p id='n00'&gt;old text&lt;/p&gt;
+
+&lt;p id='n01'&gt;old text&lt;/p&gt;
+
+&lt;div id='n02'&gt;&lt;p&gt;old text&lt;/p&gt;&lt;/div&gt;
+&lt;/section&gt;
+
+&lt;script&gt;
+  var n00;
+  var n00oldText;
+  var n01;
+  var n01oldText;
+  var n02;
+
+  setup(function() {
+    n00 = document.getElementById('n00');
+    n00oldText = n00.firstChild;
+    n01 = document.getElementById('n01');
+    n01oldText = n01.firstChild;
+    n02 = document.getElementById('n02');
+  })
+
+  runMutationTest(n00,
+                  {childList:true,attributes:true},
+                  [{type: &quot;childList&quot;,
+                    removedNodes: [n00oldText],
+                    addedNodes: function() {
+                      return [document.getElementById(&quot;n00&quot;).firstChild];
+                    }},
+                    {type: &quot;attributes&quot;, attributeName: &quot;class&quot;}],
+                  function() { n00.innerHTML = &quot;new text&quot;; n00.className = &quot;c01&quot;},
+                  &quot;innerHTML mutation&quot;);
+
+  runMutationTest(n01,
+                  {childList:true},
+                  [{type: &quot;childList&quot;,
+                    removedNodes: [n01oldText],
+                    addedNodes: function() {
+                      return [document.getElementById(&quot;n01&quot;).firstChild,
+                              document.getElementById(&quot;n01&quot;).lastChild];
+                    }}],
+                  function() { n01.innerHTML = &quot;&lt;span&gt;new&lt;/span&gt;&lt;span&gt;text&lt;/span&gt;&quot;; },
+                  &quot;innerHTML with 2 children mutation&quot;);
+
+  runMutationTest(n02,
+                  {childList:true},
+                  [{type: &quot;childList&quot;,
+                    removedNodes: [n02.firstChild],
+                    addedNodes: function() {
+                      return [n02.firstChild];
+                    }}],
+                  function() { n02.firstChild.outerHTML = &quot;&lt;p&gt;next text&lt;/p&gt;&quot;; },
+                  &quot;outerHTML mutation&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesMutationObservertakeRecordsexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesMutationObservertakeRecordsexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-takeRecords-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/MutationObserver-takeRecords-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-takeRecords-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-takeRecords-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+MutationObservers: takeRecords
+
+
+PASS unreachabled test 
+PASS All records present 
+PASS No more records present 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesMutationObservertakeRecordshtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesMutationObservertakeRecordshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-takeRecords.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/MutationObserver-takeRecords.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-takeRecords.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/MutationObserver-takeRecords.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,53 @@
</span><ins>+&lt;!DOCTYPE HTML&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;MutationObservers: takeRecords&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;mutationobservers.js&quot;&gt;&lt;/script&gt;
+&lt;h1&gt;MutationObservers: takeRecords&lt;/h1&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+
+&lt;section style=&quot;display: none&quot;&gt;
+
+&lt;p id='n00'&gt;&lt;/p&gt;
+
+&lt;/section&gt;
+
+&lt;script&gt;
+
+  var n00 = document.getElementById('n00');
+
+  var unused = async_test(&quot;unreachabled test&quot;);
+
+  var observer;
+  unused.step(function () {
+    observer = new MutationObserver(unused.unreached_func(&quot;the observer callback should not fire&quot;));
+    observer.observe(n00, { &quot;subtree&quot;: true,
+                          &quot;childList&quot;: true,
+                          &quot;attributes&quot;: true,
+                          &quot;characterData&quot;: true,
+                          &quot;attributeOldValue&quot;: true,
+                          &quot;characterDataOldValue&quot;: true});
+    n00.id = &quot;foo&quot;;
+    n00.id = &quot;bar&quot;;
+    n00.className = &quot;bar&quot;;
+    n00.textContent = &quot;old data&quot;;
+    n00.firstChild.data = &quot;new data&quot;;
+  });
+
+  test(function() {
+    checkRecords(n00, observer.takeRecords(), [{type: &quot;attributes&quot;, attributeName: &quot;id&quot;, oldValue: &quot;n00&quot;},
+                           {type: &quot;attributes&quot;, attributeName: &quot;id&quot;, oldValue: &quot;foo&quot;},
+                           {type: &quot;attributes&quot;, attributeName: &quot;class&quot;},
+                           {type: &quot;childList&quot;, addedNodes: [n00.firstChild]},
+                           {type: &quot;characterData&quot;, oldValue: &quot;old data&quot;, target: n00.firstChild}]);
+  }, &quot;All records present&quot;);
+
+  test(function() {
+    checkRecords(n00, observer.takeRecords(), []);
+  }, &quot;No more records present&quot;);
+&lt;/script&gt;
+&lt;script&gt;
+  unused.done();
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeappendChildexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodeappendChildexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-appendChild-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-appendChild-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-appendChild-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-appendChild-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+
+
+FAIL WebIDL tests assert_throws: function &quot;function () { document.body.appendChild(null) }&quot; threw object &quot;Error: NotFoundError: DOM Exception 8&quot; (&quot;NotFoundError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Appending to a leaf node. 
+FAIL Appending null to a text node assert_throws: function &quot;function () { node.appendChild(null) }&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; (&quot;HierarchyRequestError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Appending to a text node 
+FAIL Appending null to a comment assert_throws: function &quot;function () { node.appendChild(null) }&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; (&quot;HierarchyRequestError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Appending to a comment 
+FAIL Appending null to a doctype assert_throws: function &quot;function () { node.appendChild(null) }&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; (&quot;HierarchyRequestError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Appending to a doctype 
+PASS Appending a document 
+PASS Adopting an orphan 
+PASS Adopting a non-orphan 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeappendChildhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodeappendChildhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-appendChild.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-appendChild.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-appendChild.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-appendChild.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,59 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Node.appendChild&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-node-appendchild&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;iframe src=about:blank&gt;&lt;/iframe&gt;
+&lt;script&gt;
+// TODO: Exhaustive tests
+function testLeaf(node, desc) {
+  // WebIDL.
+  test(function() {
+    assert_throws(new TypeError(), function() { node.appendChild(null) })
+  }, &quot;Appending null to a &quot; + desc)
+
+  // Pre-insert step 1.
+  test(function() {
+    assert_throws(&quot;HIERARCHY_REQUEST_ERR&quot;, function() { node.appendChild(document.createTextNode(&quot;fail&quot;)) })
+  }, &quot;Appending to a &quot; + desc)
+}
+
+// WebIDL.
+test(function() {
+  assert_throws(new TypeError(), function() { document.body.appendChild(null) })
+  assert_throws(new TypeError(), function() { document.body.appendChild({'a':'b'}) })
+}, &quot;WebIDL tests&quot;)
+
+// WebIDL and pre-insert step 1.
+test(function() {
+  testLeaf(document.createTextNode(&quot;Foo&quot;), &quot;text node&quot;)
+  testLeaf(document.createComment(&quot;Foo&quot;), &quot;comment&quot;)
+  testLeaf(document.doctype, &quot;doctype&quot;)
+}, &quot;Appending to a leaf node.&quot;)
+
+// Pre-insert step 5.
+test(function() {
+  var frameDoc = frames[0].document
+  assert_throws(&quot;HIERARCHY_REQUEST_ERR&quot;, function() { document.body.appendChild(frameDoc) })
+}, &quot;Appending a document&quot;)
+
+// Pre-insert step 8.
+test(function() {
+  var frameDoc = frames[0].document
+  var s = frameDoc.createElement(&quot;a&quot;)
+  assert_equals(s.ownerDocument, frameDoc)
+  document.body.appendChild(s)
+  assert_equals(s.ownerDocument, document)
+}, &quot;Adopting an orphan&quot;)
+test(function() {
+  var frameDoc = frames[0].document
+  var s = frameDoc.createElement(&quot;b&quot;)
+  assert_equals(s.ownerDocument, frameDoc)
+  frameDoc.body.appendChild(s)
+  assert_equals(s.ownerDocument, frameDoc)
+  document.body.appendChild(s)
+  assert_equals(s.ownerDocument, document)
+}, &quot;Adopting a non-orphan&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodebaseURIexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodebaseURIexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-baseURI-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-baseURI-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-baseURI-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-baseURI-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+PASS For elements belonging to document, baseURI should be document url 
+FAIL For elements unassigned to document, baseURI should be document url assert_equals: expected (string) &quot;http://localhost:8800/dom/nodes/Node-baseURI.html&quot; but got (object) null
+FAIL For elements belonging to document fragments, baseURI should be document url assert_equals: expected (string) &quot;http://localhost:8800/dom/nodes/Node-baseURI.html&quot; but got (object) null
+PASS After inserting fragment into document, element baseURI should be document url 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodebaseURIhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodebaseURIhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-baseURI.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-baseURI.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-baseURI.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-baseURI.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;Node.baseURI&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  var element = document.createElement(&quot;div&quot;);
+  document.body.appendChild(element);
+  assert_equals(element.baseURI, document.URL);
+}, &quot;For elements belonging to document, baseURI should be document url&quot;)
+
+test(function() {
+  var element = document.createElement(&quot;div&quot;);
+  assert_equals(element.baseURI, document.URL);
+}, &quot;For elements unassigned to document, baseURI should be document url&quot;)
+
+test(function() {
+  var fragment = document.createDocumentFragment();
+  var element = document.createElement(&quot;div&quot;);
+  fragment.appendChild(element);
+  assert_equals(element.baseURI, document.URL)
+}, &quot;For elements belonging to document fragments, baseURI should be document url&quot;)
+
+test(function() {
+  var fragment = document.createDocumentFragment();
+  var element = document.createElement(&quot;div&quot;);
+  fragment.appendChild(element);
+  document.body.appendChild(fragment);
+  assert_equals(element.baseURI, document.URL)
+}, &quot;After inserting fragment into document, element baseURI should be document url&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodechildNodesexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodechildNodesexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-childNodes-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-childNodes-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-childNodes-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-childNodes-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+
+PASS Caching of Node.childNodes 
+PASS Node.childNodes on an Element. 
+PASS Node.childNodes on a DocumentFragment. 
+PASS Node.childNodes on a Document. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodechildNodeshtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodechildNodeshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-childNodes.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-childNodes.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-childNodes.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-childNodes.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,48 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Node.childNodes&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-node-childnodes&quot;&gt;
+&lt;link rel=author title=&quot;Tim Taubert&quot; href=&quot;mailto:ttaubert@mozilla.com&quot;&gt;
+&lt;link rel=author title=&quot;Ms2ger&quot; href=&quot;mailto:Ms2ger@gmail.com&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  var element = document.createElement(&quot;p&quot;);
+  assert_equals(element.childNodes, element.childNodes);
+}, &quot;Caching of Node.childNodes&quot;);
+
+var check_parent_node = function(node) {
+  assert_array_equals(node.childNodes, []);
+
+  var children = node.childNodes;
+  var child = document.createElement(&quot;p&quot;);
+  node.appendChild(child);
+  assert_equals(node.childNodes, children);
+  assert_array_equals(children, [child]);
+  assert_equals(children.item(0), child);
+
+  var child2 = document.createComment(&quot;comment&quot;);
+  node.appendChild(child2);
+  assert_array_equals(children, [child, child2]);
+  assert_equals(children.item(0), child);
+  assert_equals(children.item(1), child2);
+
+  assert_false(2 in children);
+  assert_equals(children[2], undefined);
+  assert_equals(children.item(2), null);
+};
+
+test(function() {
+  check_parent_node(document.createElement(&quot;p&quot;));
+}, &quot;Node.childNodes on an Element.&quot;);
+
+test(function() {
+  check_parent_node(document.createDocumentFragment());
+}, &quot;Node.childNodes on a DocumentFragment.&quot;);
+
+test(function() {
+  check_parent_node(new Document());
+}, &quot;Node.childNodes on a Document.&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodecloneNodeexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodecloneNodeexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-cloneNode-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-cloneNode-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-cloneNode-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-cloneNode-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,40 @@
</span><ins>+
+FAIL Node.cloneNode Can't find variable: HTMLDataElement
+PASS createElement(a) 
+PASS createElement(abbr) 
+PASS createElement(acronym) 
+PASS createElement(address) 
+PASS createElement(applet) 
+PASS createElement(area) 
+PASS createElement(article) 
+PASS createElement(aside) 
+PASS createElement(audio) 
+PASS createElement(b) 
+PASS createElement(base) 
+PASS createElement(bdi) 
+PASS createElement(bdo) 
+PASS createElement(bgsound) 
+PASS createElement(big) 
+PASS createElement(blockquote) 
+PASS createElement(body) 
+PASS createElement(br) 
+PASS createElement(button) 
+PASS createElement(canvas) 
+PASS createElement(caption) 
+PASS createElement(center) 
+PASS createElement(cite) 
+PASS createElement(code) 
+PASS createElement(col) 
+PASS createElement(colgroup) 
+PASS createDocumentFragment 
+PASS createTextNode 
+PASS createComment 
+PASS createElement with attributes 
+PASS createElementNS HTML 
+PASS createElementNS non-HTML 
+PASS createProcessingInstruction 
+PASS implementation.createDocumentType 
+PASS implementation.createDocument 
+PASS implementation.createHTMLDocument 
+PASS node with children 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodecloneNodehtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodecloneNodehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-cloneNode.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-cloneNode.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-cloneNode.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-cloneNode.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,272 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Node.cloneNode&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-node-clonenode&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script&gt;
+function assert_equal_node(nodeA, nodeB) {
+  assert_equals(nodeB.nodeType, nodeA.nodeType, &quot;nodeType&quot;);
+  assert_equals(nodeB.nodeName, nodeA.nodeName, &quot;nodeName&quot;);
+
+  if (nodeA.nodeType === Node.ELEMENT_NODE) {
+    assert_equals(nodeB.prefix, nodeA.prefix);
+    assert_equals(nodeB.namespaceURI, nodeA.namespaceURI);
+    assert_equals(nodeB.localName, nodeA.localName);
+    assert_equals(nodeB.tagName, nodeA.tagName);
+    assert_not_equals(nodeB.attributes != nodeA.attributes);
+    assert_equals(nodeB.attributes.length, nodeA.attributes.length);
+    for (var i = 0, il = nodeA.attributes.length; i &lt; il; ++i) {
+      assert_not_equals(nodeB.attributes[i], nodeA.attributes[i]);
+      assert_equals(nodeB.attributes[i].name, nodeA.attributes[i].name);
+      assert_equals(nodeB.attributes[i].prefix, nodeA.attributes[i].prefix);
+      assert_equals(nodeB.attributes[i].namespaceURI, nodeA.attributes[i].namespaceURI);
+      assert_equals(nodeB.attributes[i].value, nodeA.attributes[i].value);
+    }
+  }
+}
+
+function check_copy(orig, copy, type) {
+    assert_not_equals(orig, copy);
+    assert_equal_node(orig, copy);
+    assert_true(orig instanceof type, &quot;Should be type&quot;);
+    assert_true(copy instanceof type, &quot;Should be type&quot;);
+}
+
+function create_element_and_check(localName, type) {
+  test(function() {
+    var element = document.createElement(localName);
+    var copy = element.cloneNode();
+    check_copy(element, copy, type);
+  }, &quot;createElement(&quot; + localName + &quot;)&quot;);
+}
+
+// test1: createElement
+test(function() {
+    create_element_and_check(&quot;a&quot;,         HTMLAnchorElement);
+    create_element_and_check(&quot;abbr&quot;,      HTMLElement);
+    create_element_and_check(&quot;acronym&quot;,   HTMLElement);
+    create_element_and_check(&quot;address&quot;,   HTMLElement);
+    create_element_and_check(&quot;applet&quot;,    HTMLAppletElement);
+    create_element_and_check(&quot;area&quot;,      HTMLAreaElement);
+    create_element_and_check(&quot;article&quot;,   HTMLElement);
+    create_element_and_check(&quot;aside&quot;,     HTMLElement);
+    create_element_and_check(&quot;audio&quot;,     HTMLAudioElement);
+    create_element_and_check(&quot;b&quot;,         HTMLElement);
+    create_element_and_check(&quot;base&quot;,      HTMLBaseElement);
+    create_element_and_check(&quot;bdi&quot;,       HTMLElement);
+    create_element_and_check(&quot;bdo&quot;,       HTMLElement);
+    create_element_and_check(&quot;bgsound&quot;,   HTMLElement);
+    create_element_and_check(&quot;big&quot;,       HTMLElement);
+    create_element_and_check(&quot;blockquote&quot;,HTMLElement);
+    create_element_and_check(&quot;body&quot;,      HTMLBodyElement);
+    create_element_and_check(&quot;br&quot;,        HTMLBRElement);
+    create_element_and_check(&quot;button&quot;,    HTMLButtonElement);
+    create_element_and_check(&quot;canvas&quot;,    HTMLCanvasElement);
+    create_element_and_check(&quot;caption&quot;,   HTMLTableCaptionElement);
+    create_element_and_check(&quot;center&quot;,    HTMLElement);
+    create_element_and_check(&quot;cite&quot;,      HTMLElement);
+    create_element_and_check(&quot;code&quot;,      HTMLElement);
+    create_element_and_check(&quot;col&quot;,       HTMLTableColElement);
+    create_element_and_check(&quot;colgroup&quot;,  HTMLTableColElement);
+    create_element_and_check(&quot;data&quot;,      HTMLDataElement);
+    create_element_and_check(&quot;datalist&quot;,  HTMLDataListElement);
+    create_element_and_check(&quot;dialog&quot;,    HTMLDialogElement);
+    create_element_and_check(&quot;dd&quot;,        HTMLElement);
+    create_element_and_check(&quot;del&quot;,       HTMLModElement);
+    create_element_and_check(&quot;details&quot;,   HTMLElement);
+    create_element_and_check(&quot;dfn&quot;,       HTMLElement);
+    create_element_and_check(&quot;dir&quot;,       HTMLDirectoryElement);
+    create_element_and_check(&quot;div&quot;,       HTMLDivElement);
+    create_element_and_check(&quot;dl&quot;,        HTMLDListElement);
+    create_element_and_check(&quot;dt&quot;,        HTMLElement);
+    create_element_and_check(&quot;embed&quot;,     HTMLEmbedElement);
+    create_element_and_check(&quot;fieldset&quot;,  HTMLFieldSetElement);
+    create_element_and_check(&quot;figcaption&quot;,HTMLElement);
+    create_element_and_check(&quot;figure&quot;,    HTMLElement);
+    create_element_and_check(&quot;font&quot;,      HTMLFontElement);
+    create_element_and_check(&quot;footer&quot;,    HTMLElement);
+    create_element_and_check(&quot;form&quot;,      HTMLFormElement);
+    create_element_and_check(&quot;frame&quot;,     HTMLFrameElement);
+    create_element_and_check(&quot;frameset&quot;,  HTMLFrameSetElement);
+    create_element_and_check(&quot;h1&quot;,        HTMLHeadingElement);
+    create_element_and_check(&quot;h2&quot;,        HTMLHeadingElement);
+    create_element_and_check(&quot;h3&quot;,        HTMLHeadingElement);
+    create_element_and_check(&quot;h4&quot;,        HTMLHeadingElement);
+    create_element_and_check(&quot;h5&quot;,        HTMLHeadingElement);
+    create_element_and_check(&quot;h6&quot;,        HTMLHeadingElement);
+    create_element_and_check(&quot;head&quot;,      HTMLHeadElement);
+    create_element_and_check(&quot;header&quot;,    HTMLElement);
+    create_element_and_check(&quot;hgroup&quot;,    HTMLElement);
+    create_element_and_check(&quot;hr&quot;,        HTMLHRElement);
+    create_element_and_check(&quot;html&quot;,      HTMLHtmlElement);
+    create_element_and_check(&quot;i&quot;,         HTMLElement);
+    create_element_and_check(&quot;iframe&quot;,    HTMLIFrameElement);
+    create_element_and_check(&quot;img&quot;,       HTMLImageElement);
+    create_element_and_check(&quot;input&quot;,     HTMLInputElement);
+    create_element_and_check(&quot;ins&quot;,       HTMLModElement);
+    create_element_and_check(&quot;isindex&quot;,   HTMLElement);
+    create_element_and_check(&quot;kbd&quot;,       HTMLElement);
+    create_element_and_check(&quot;label&quot;,     HTMLLabelElement);
+    create_element_and_check(&quot;legend&quot;,    HTMLLegendElement);
+    create_element_and_check(&quot;li&quot;,        HTMLLIElement);
+    create_element_and_check(&quot;link&quot;,      HTMLLinkElement);
+    create_element_and_check(&quot;main&quot;,      HTMLElement);
+    create_element_and_check(&quot;map&quot;,       HTMLMapElement);
+    create_element_and_check(&quot;mark&quot;,      HTMLElement);
+    create_element_and_check(&quot;marquee&quot;,   HTMLElement);
+    create_element_and_check(&quot;meta&quot;,      HTMLMetaElement);
+    create_element_and_check(&quot;meter&quot;,     HTMLMeterElement);
+    create_element_and_check(&quot;nav&quot;,       HTMLElement);
+    create_element_and_check(&quot;nobr&quot;,      HTMLElement);
+    create_element_and_check(&quot;noframes&quot;,  HTMLElement);
+    create_element_and_check(&quot;noscript&quot;,  HTMLElement);
+    create_element_and_check(&quot;object&quot;,    HTMLObjectElement);
+    create_element_and_check(&quot;ol&quot;,        HTMLOListElement);
+    create_element_and_check(&quot;optgroup&quot;,  HTMLOptGroupElement);
+    create_element_and_check(&quot;option&quot;,    HTMLOptionElement);
+    create_element_and_check(&quot;output&quot;,    HTMLOutputElement);
+    create_element_and_check(&quot;p&quot;,         HTMLParagraphElement);
+    create_element_and_check(&quot;param&quot;,     HTMLParamElement);
+    create_element_and_check(&quot;pre&quot;,       HTMLPreElement);
+    create_element_and_check(&quot;progress&quot;,  HTMLProgressElement);
+    create_element_and_check(&quot;q&quot;,         HTMLQuoteElement);
+    create_element_and_check(&quot;rp&quot;,        HTMLElement);
+    create_element_and_check(&quot;rt&quot;,        HTMLElement);
+    create_element_and_check(&quot;ruby&quot;,      HTMLElement);
+    create_element_and_check(&quot;s&quot;,         HTMLElement);
+    create_element_and_check(&quot;samp&quot;,      HTMLElement);
+    create_element_and_check(&quot;script&quot;,    HTMLScriptElement);
+    create_element_and_check(&quot;section&quot;,   HTMLElement);
+    create_element_and_check(&quot;select&quot;,    HTMLSelectElement);
+    create_element_and_check(&quot;small&quot;,     HTMLElement);
+    create_element_and_check(&quot;source&quot;,    HTMLSourceElement);
+    create_element_and_check(&quot;spacer&quot;,    HTMLElement);
+    create_element_and_check(&quot;span&quot;,      HTMLSpanElement);
+    create_element_and_check(&quot;strike&quot;,    HTMLElement);
+    create_element_and_check(&quot;style&quot;,     HTMLStyleElement);
+    create_element_and_check(&quot;sub&quot;,       HTMLElement);
+    create_element_and_check(&quot;summary&quot;,   HTMLElement);
+    create_element_and_check(&quot;sup&quot;,       HTMLElement);
+    create_element_and_check(&quot;table&quot;,     HTMLTableElement);
+    create_element_and_check(&quot;tbody&quot;,     HTMLTableSectionElement);
+    create_element_and_check(&quot;td&quot;,        HTMLTableDataCellElement);
+    create_element_and_check(&quot;template&quot;,  HTMLTemplateElement);
+    create_element_and_check(&quot;textarea&quot;,  HTMLTextAreaElement);
+    create_element_and_check(&quot;th&quot;,        HTMLTableHeaderCellElement);
+    create_element_and_check(&quot;time&quot;,      HTMLTimeElement);
+    create_element_and_check(&quot;title&quot;,     HTMLTitleElement);
+    create_element_and_check(&quot;tr&quot;,        HTMLTableRowElement);
+    create_element_and_check(&quot;tt&quot;,        HTMLElement);
+    create_element_and_check(&quot;track&quot;,     HTMLTrackElement);
+    create_element_and_check(&quot;u&quot;,         HTMLElement);
+    create_element_and_check(&quot;ul&quot;,        HTMLUListElement);
+    create_element_and_check(&quot;var&quot;,       HTMLElement);
+    create_element_and_check(&quot;video&quot;,     HTMLVideoElement);
+    create_element_and_check(&quot;unknown&quot;,   HTMLUnknownElement);
+    create_element_and_check(&quot;wbr&quot;,       HTMLElement);
+}, &quot;&quot;);
+
+test(function() {
+    var fragment = document.createDocumentFragment();
+    var copy = fragment.cloneNode();
+    check_copy(fragment, copy, DocumentFragment);
+}, &quot;createDocumentFragment&quot;);
+
+test(function() {
+    var text = document.createTextNode(&quot;hello world&quot;);
+    var copy = text.cloneNode();
+    check_copy(text, copy, Text);
+    assert_equals(text.data, copy.data);
+    assert_equals(text.wholeText, copy.wholeText);
+}, &quot;createTextNode&quot;);
+
+test(function() {
+    var comment = document.createComment(&quot;a comment&quot;);
+    var copy = comment.cloneNode();
+    check_copy(comment, copy, Comment);
+    assert_equals(comment.data, copy.data);
+}, &quot;createComment&quot;);
+
+test(function() {
+  var el = document.createElement(&quot;foo&quot;);
+  el.setAttribute(&quot;a&quot;, &quot;b&quot;);
+  el.setAttribute(&quot;c&quot;, &quot;d&quot;);
+  var c = el.cloneNode();
+  check_copy(el, c, Element);
+}, &quot;createElement with attributes&quot;)
+
+test(function() {
+  var el = document.createElementNS(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;foo:div&quot;);
+  var c = el.cloneNode();
+  check_copy(el, c, HTMLDivElement);
+}, &quot;createElementNS HTML&quot;)
+
+test(function() {
+  var el = document.createElementNS(&quot;http://www.example.com/&quot;, &quot;foo:div&quot;);
+  var c = el.cloneNode();
+  check_copy(el, c, Element);
+}, &quot;createElementNS non-HTML&quot;)
+
+test(function() {
+    var pi = document.createProcessingInstruction(&quot;target&quot;, &quot;data&quot;);
+    var copy = pi.cloneNode();
+    check_copy(pi, copy, ProcessingInstruction);
+    assert_equals(pi.data, copy.data);
+    assert_equals(pi.target, pi.target);
+}, &quot;createProcessingInstruction&quot;);
+
+test(function() {
+    var doctype = document.implementation.createDocumentType(&quot;html&quot;, &quot;public&quot;, &quot;system&quot;);
+    var copy = doctype.cloneNode();
+    check_copy(doctype, copy, DocumentType);
+    assert_equals(doctype.name, copy.name);
+    assert_equals(doctype.publicId, copy.publicId);
+    assert_equals(doctype.systemId, copy.systemId);
+}, &quot;implementation.createDocumentType&quot;);
+
+test(function() {
+    var doc = document.implementation.createDocument(null, null);
+    var copy = doc.cloneNode();
+    check_copy(doc, copy, Document);
+    assert_equals(doc.contentType, copy.contentType);
+}, &quot;implementation.createDocument&quot;);
+
+test(function() {
+    var html = document.implementation.createHTMLDocument(&quot;title&quot;);
+    var copy = html.cloneNode();
+    check_copy(html, copy, Document);
+    assert_equals(copy.title, &quot;&quot;);
+}, &quot;implementation.createHTMLDocument&quot;);
+
+test(function() {
+    var parent = document.createElement(&quot;div&quot;);
+    var child1 = document.createElement(&quot;div&quot;);
+    var child2 = document.createElement(&quot;div&quot;);
+    var grandChild = document.createElement(&quot;div&quot;);
+
+    child2.appendChild(grandChild);
+    parent.appendChild(child1);
+    parent.appendChild(child2);
+
+    var deep = true;
+    var copy = parent.cloneNode(deep);
+
+    check_copy(parent, copy, HTMLDivElement);
+    assert_equals(copy.childNodes.length, 2);
+
+    check_copy(child1, copy.childNodes[0], HTMLDivElement);
+    assert_equals(copy.childNodes[0].childNodes.length, 0);
+
+    check_copy(child2, copy.childNodes[1], HTMLDivElement);
+    assert_equals(copy.childNodes[1].childNodes.length, 1);
+    check_copy(grandChild, copy.childNodes[1].childNodes[0], HTMLDivElement);
+
+    deep = false;
+    copy = parent.cloneNode(deep);
+
+    check_copy(parent, copy, HTMLDivElement);
+    assert_equals(copy.childNodes.length, 0);
+}, &quot;node with children&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodecompareDocumentPositionexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodecompareDocumentPositionexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-compareDocumentPosition-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-compareDocumentPosition-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-compareDocumentPosition-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-compareDocumentPosition-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,1371 @@
</span><ins>+
+PASS paras[0].compareDocumentPosition(paras[0]) 
+PASS paras[0].compareDocumentPosition(paras[0].firstChild) 
+PASS paras[0].compareDocumentPosition(paras[1].firstChild) 
+PASS paras[0].compareDocumentPosition(foreignPara1) 
+PASS paras[0].compareDocumentPosition(foreignPara1.firstChild) 
+PASS paras[0].compareDocumentPosition(detachedPara1) 
+PASS paras[0].compareDocumentPosition(detachedPara1.firstChild) 
+PASS paras[0].compareDocumentPosition(document) 
+PASS paras[0].compareDocumentPosition(detachedDiv) 
+PASS paras[0].compareDocumentPosition(foreignDoc) 
+PASS paras[0].compareDocumentPosition(foreignPara2) 
+PASS paras[0].compareDocumentPosition(xmlDoc) 
+PASS paras[0].compareDocumentPosition(xmlElement) 
+PASS paras[0].compareDocumentPosition(detachedTextNode) 
+PASS paras[0].compareDocumentPosition(foreignTextNode) 
+PASS paras[0].compareDocumentPosition(processingInstruction) 
+PASS paras[0].compareDocumentPosition(detachedProcessingInstruction) 
+PASS paras[0].compareDocumentPosition(comment) 
+PASS paras[0].compareDocumentPosition(detachedComment) 
+PASS paras[0].compareDocumentPosition(docfrag) 
+PASS paras[0].compareDocumentPosition(doctype) 
+PASS paras[0].compareDocumentPosition(foreignDoctype) 
+PASS paras[0].compareDocumentPosition(paras[1]) 
+PASS paras[0].compareDocumentPosition(detachedPara2) 
+PASS paras[0].compareDocumentPosition(detachedPara2.firstChild) 
+PASS paras[0].compareDocumentPosition(testDiv) 
+PASS paras[0].compareDocumentPosition(detachedXmlElement) 
+PASS paras[0].compareDocumentPosition(detachedForeignTextNode) 
+PASS paras[0].compareDocumentPosition(xmlTextNode) 
+PASS paras[0].compareDocumentPosition(detachedXmlTextNode) 
+PASS paras[0].compareDocumentPosition(xmlComment) 
+PASS paras[0].compareDocumentPosition(foreignComment) 
+PASS paras[0].compareDocumentPosition(detachedForeignComment) 
+PASS paras[0].compareDocumentPosition(detachedXmlComment) 
+PASS paras[0].compareDocumentPosition(foreignDocfrag) 
+PASS paras[0].compareDocumentPosition(xmlDocfrag) 
+PASS paras[0].compareDocumentPosition(xmlDoctype) 
+PASS paras[0].firstChild.compareDocumentPosition(paras[0]) 
+PASS paras[0].firstChild.compareDocumentPosition(paras[0].firstChild) 
+PASS paras[0].firstChild.compareDocumentPosition(paras[1].firstChild) 
+PASS paras[0].firstChild.compareDocumentPosition(foreignPara1) 
+PASS paras[0].firstChild.compareDocumentPosition(foreignPara1.firstChild) 
+PASS paras[0].firstChild.compareDocumentPosition(detachedPara1) 
+PASS paras[0].firstChild.compareDocumentPosition(detachedPara1.firstChild) 
+PASS paras[0].firstChild.compareDocumentPosition(document) 
+PASS paras[0].firstChild.compareDocumentPosition(detachedDiv) 
+PASS paras[0].firstChild.compareDocumentPosition(foreignDoc) 
+PASS paras[0].firstChild.compareDocumentPosition(foreignPara2) 
+PASS paras[0].firstChild.compareDocumentPosition(xmlDoc) 
+PASS paras[0].firstChild.compareDocumentPosition(xmlElement) 
+PASS paras[0].firstChild.compareDocumentPosition(detachedTextNode) 
+PASS paras[0].firstChild.compareDocumentPosition(foreignTextNode) 
+PASS paras[0].firstChild.compareDocumentPosition(processingInstruction) 
+PASS paras[0].firstChild.compareDocumentPosition(detachedProcessingInstruction) 
+PASS paras[0].firstChild.compareDocumentPosition(comment) 
+PASS paras[0].firstChild.compareDocumentPosition(detachedComment) 
+PASS paras[0].firstChild.compareDocumentPosition(docfrag) 
+PASS paras[0].firstChild.compareDocumentPosition(doctype) 
+PASS paras[0].firstChild.compareDocumentPosition(foreignDoctype) 
+PASS paras[0].firstChild.compareDocumentPosition(paras[1]) 
+PASS paras[0].firstChild.compareDocumentPosition(detachedPara2) 
+PASS paras[0].firstChild.compareDocumentPosition(detachedPara2.firstChild) 
+PASS paras[0].firstChild.compareDocumentPosition(testDiv) 
+PASS paras[0].firstChild.compareDocumentPosition(detachedXmlElement) 
+PASS paras[0].firstChild.compareDocumentPosition(detachedForeignTextNode) 
+PASS paras[0].firstChild.compareDocumentPosition(xmlTextNode) 
+PASS paras[0].firstChild.compareDocumentPosition(detachedXmlTextNode) 
+PASS paras[0].firstChild.compareDocumentPosition(xmlComment) 
+PASS paras[0].firstChild.compareDocumentPosition(foreignComment) 
+PASS paras[0].firstChild.compareDocumentPosition(detachedForeignComment) 
+PASS paras[0].firstChild.compareDocumentPosition(detachedXmlComment) 
+PASS paras[0].firstChild.compareDocumentPosition(foreignDocfrag) 
+PASS paras[0].firstChild.compareDocumentPosition(xmlDocfrag) 
+PASS paras[0].firstChild.compareDocumentPosition(xmlDoctype) 
+PASS paras[1].firstChild.compareDocumentPosition(paras[0]) 
+PASS paras[1].firstChild.compareDocumentPosition(paras[0].firstChild) 
+PASS paras[1].firstChild.compareDocumentPosition(paras[1].firstChild) 
+PASS paras[1].firstChild.compareDocumentPosition(foreignPara1) 
+PASS paras[1].firstChild.compareDocumentPosition(foreignPara1.firstChild) 
+PASS paras[1].firstChild.compareDocumentPosition(detachedPara1) 
+PASS paras[1].firstChild.compareDocumentPosition(detachedPara1.firstChild) 
+PASS paras[1].firstChild.compareDocumentPosition(document) 
+PASS paras[1].firstChild.compareDocumentPosition(detachedDiv) 
+PASS paras[1].firstChild.compareDocumentPosition(foreignDoc) 
+PASS paras[1].firstChild.compareDocumentPosition(foreignPara2) 
+PASS paras[1].firstChild.compareDocumentPosition(xmlDoc) 
+PASS paras[1].firstChild.compareDocumentPosition(xmlElement) 
+PASS paras[1].firstChild.compareDocumentPosition(detachedTextNode) 
+PASS paras[1].firstChild.compareDocumentPosition(foreignTextNode) 
+PASS paras[1].firstChild.compareDocumentPosition(processingInstruction) 
+PASS paras[1].firstChild.compareDocumentPosition(detachedProcessingInstruction) 
+PASS paras[1].firstChild.compareDocumentPosition(comment) 
+PASS paras[1].firstChild.compareDocumentPosition(detachedComment) 
+PASS paras[1].firstChild.compareDocumentPosition(docfrag) 
+PASS paras[1].firstChild.compareDocumentPosition(doctype) 
+PASS paras[1].firstChild.compareDocumentPosition(foreignDoctype) 
+PASS paras[1].firstChild.compareDocumentPosition(paras[1]) 
+PASS paras[1].firstChild.compareDocumentPosition(detachedPara2) 
+PASS paras[1].firstChild.compareDocumentPosition(detachedPara2.firstChild) 
+PASS paras[1].firstChild.compareDocumentPosition(testDiv) 
+PASS paras[1].firstChild.compareDocumentPosition(detachedXmlElement) 
+PASS paras[1].firstChild.compareDocumentPosition(detachedForeignTextNode) 
+PASS paras[1].firstChild.compareDocumentPosition(xmlTextNode) 
+PASS paras[1].firstChild.compareDocumentPosition(detachedXmlTextNode) 
+PASS paras[1].firstChild.compareDocumentPosition(xmlComment) 
+PASS paras[1].firstChild.compareDocumentPosition(foreignComment) 
+PASS paras[1].firstChild.compareDocumentPosition(detachedForeignComment) 
+PASS paras[1].firstChild.compareDocumentPosition(detachedXmlComment) 
+PASS paras[1].firstChild.compareDocumentPosition(foreignDocfrag) 
+PASS paras[1].firstChild.compareDocumentPosition(xmlDocfrag) 
+PASS paras[1].firstChild.compareDocumentPosition(xmlDoctype) 
+PASS foreignPara1.compareDocumentPosition(paras[0]) 
+PASS foreignPara1.compareDocumentPosition(paras[0].firstChild) 
+PASS foreignPara1.compareDocumentPosition(paras[1].firstChild) 
+PASS foreignPara1.compareDocumentPosition(foreignPara1) 
+PASS foreignPara1.compareDocumentPosition(foreignPara1.firstChild) 
+PASS foreignPara1.compareDocumentPosition(detachedPara1) 
+PASS foreignPara1.compareDocumentPosition(detachedPara1.firstChild) 
+PASS foreignPara1.compareDocumentPosition(document) 
+PASS foreignPara1.compareDocumentPosition(detachedDiv) 
+PASS foreignPara1.compareDocumentPosition(foreignDoc) 
+PASS foreignPara1.compareDocumentPosition(foreignPara2) 
+PASS foreignPara1.compareDocumentPosition(xmlDoc) 
+PASS foreignPara1.compareDocumentPosition(xmlElement) 
+PASS foreignPara1.compareDocumentPosition(detachedTextNode) 
+PASS foreignPara1.compareDocumentPosition(foreignTextNode) 
+PASS foreignPara1.compareDocumentPosition(processingInstruction) 
+PASS foreignPara1.compareDocumentPosition(detachedProcessingInstruction) 
+PASS foreignPara1.compareDocumentPosition(comment) 
+PASS foreignPara1.compareDocumentPosition(detachedComment) 
+PASS foreignPara1.compareDocumentPosition(docfrag) 
+PASS foreignPara1.compareDocumentPosition(doctype) 
+PASS foreignPara1.compareDocumentPosition(foreignDoctype) 
+PASS foreignPara1.compareDocumentPosition(paras[1]) 
+PASS foreignPara1.compareDocumentPosition(detachedPara2) 
+PASS foreignPara1.compareDocumentPosition(detachedPara2.firstChild) 
+PASS foreignPara1.compareDocumentPosition(testDiv) 
+PASS foreignPara1.compareDocumentPosition(detachedXmlElement) 
+PASS foreignPara1.compareDocumentPosition(detachedForeignTextNode) 
+PASS foreignPara1.compareDocumentPosition(xmlTextNode) 
+PASS foreignPara1.compareDocumentPosition(detachedXmlTextNode) 
+PASS foreignPara1.compareDocumentPosition(xmlComment) 
+PASS foreignPara1.compareDocumentPosition(foreignComment) 
+PASS foreignPara1.compareDocumentPosition(detachedForeignComment) 
+PASS foreignPara1.compareDocumentPosition(detachedXmlComment) 
+PASS foreignPara1.compareDocumentPosition(foreignDocfrag) 
+PASS foreignPara1.compareDocumentPosition(xmlDocfrag) 
+PASS foreignPara1.compareDocumentPosition(xmlDoctype) 
+PASS foreignPara1.firstChild.compareDocumentPosition(paras[0]) 
+PASS foreignPara1.firstChild.compareDocumentPosition(paras[0].firstChild) 
+PASS foreignPara1.firstChild.compareDocumentPosition(paras[1].firstChild) 
+PASS foreignPara1.firstChild.compareDocumentPosition(foreignPara1) 
+PASS foreignPara1.firstChild.compareDocumentPosition(foreignPara1.firstChild) 
+PASS foreignPara1.firstChild.compareDocumentPosition(detachedPara1) 
+PASS foreignPara1.firstChild.compareDocumentPosition(detachedPara1.firstChild) 
+PASS foreignPara1.firstChild.compareDocumentPosition(document) 
+PASS foreignPara1.firstChild.compareDocumentPosition(detachedDiv) 
+PASS foreignPara1.firstChild.compareDocumentPosition(foreignDoc) 
+PASS foreignPara1.firstChild.compareDocumentPosition(foreignPara2) 
+PASS foreignPara1.firstChild.compareDocumentPosition(xmlDoc) 
+PASS foreignPara1.firstChild.compareDocumentPosition(xmlElement) 
+PASS foreignPara1.firstChild.compareDocumentPosition(detachedTextNode) 
+PASS foreignPara1.firstChild.compareDocumentPosition(foreignTextNode) 
+PASS foreignPara1.firstChild.compareDocumentPosition(processingInstruction) 
+PASS foreignPara1.firstChild.compareDocumentPosition(detachedProcessingInstruction) 
+PASS foreignPara1.firstChild.compareDocumentPosition(comment) 
+PASS foreignPara1.firstChild.compareDocumentPosition(detachedComment) 
+PASS foreignPara1.firstChild.compareDocumentPosition(docfrag) 
+PASS foreignPara1.firstChild.compareDocumentPosition(doctype) 
+PASS foreignPara1.firstChild.compareDocumentPosition(foreignDoctype) 
+PASS foreignPara1.firstChild.compareDocumentPosition(paras[1]) 
+PASS foreignPara1.firstChild.compareDocumentPosition(detachedPara2) 
+PASS foreignPara1.firstChild.compareDocumentPosition(detachedPara2.firstChild) 
+PASS foreignPara1.firstChild.compareDocumentPosition(testDiv) 
+PASS foreignPara1.firstChild.compareDocumentPosition(detachedXmlElement) 
+PASS foreignPara1.firstChild.compareDocumentPosition(detachedForeignTextNode) 
+PASS foreignPara1.firstChild.compareDocumentPosition(xmlTextNode) 
+PASS foreignPara1.firstChild.compareDocumentPosition(detachedXmlTextNode) 
+PASS foreignPara1.firstChild.compareDocumentPosition(xmlComment) 
+PASS foreignPara1.firstChild.compareDocumentPosition(foreignComment) 
+PASS foreignPara1.firstChild.compareDocumentPosition(detachedForeignComment) 
+PASS foreignPara1.firstChild.compareDocumentPosition(detachedXmlComment) 
+PASS foreignPara1.firstChild.compareDocumentPosition(foreignDocfrag) 
+PASS foreignPara1.firstChild.compareDocumentPosition(xmlDocfrag) 
+PASS foreignPara1.firstChild.compareDocumentPosition(xmlDoctype) 
+PASS detachedPara1.compareDocumentPosition(paras[0]) 
+PASS detachedPara1.compareDocumentPosition(paras[0].firstChild) 
+PASS detachedPara1.compareDocumentPosition(paras[1].firstChild) 
+PASS detachedPara1.compareDocumentPosition(foreignPara1) 
+PASS detachedPara1.compareDocumentPosition(foreignPara1.firstChild) 
+PASS detachedPara1.compareDocumentPosition(detachedPara1) 
+PASS detachedPara1.compareDocumentPosition(detachedPara1.firstChild) 
+PASS detachedPara1.compareDocumentPosition(document) 
+PASS detachedPara1.compareDocumentPosition(detachedDiv) 
+PASS detachedPara1.compareDocumentPosition(foreignDoc) 
+PASS detachedPara1.compareDocumentPosition(foreignPara2) 
+PASS detachedPara1.compareDocumentPosition(xmlDoc) 
+PASS detachedPara1.compareDocumentPosition(xmlElement) 
+PASS detachedPara1.compareDocumentPosition(detachedTextNode) 
+PASS detachedPara1.compareDocumentPosition(foreignTextNode) 
+PASS detachedPara1.compareDocumentPosition(processingInstruction) 
+PASS detachedPara1.compareDocumentPosition(detachedProcessingInstruction) 
+PASS detachedPara1.compareDocumentPosition(comment) 
+PASS detachedPara1.compareDocumentPosition(detachedComment) 
+PASS detachedPara1.compareDocumentPosition(docfrag) 
+PASS detachedPara1.compareDocumentPosition(doctype) 
+PASS detachedPara1.compareDocumentPosition(foreignDoctype) 
+PASS detachedPara1.compareDocumentPosition(paras[1]) 
+PASS detachedPara1.compareDocumentPosition(detachedPara2) 
+PASS detachedPara1.compareDocumentPosition(detachedPara2.firstChild) 
+PASS detachedPara1.compareDocumentPosition(testDiv) 
+PASS detachedPara1.compareDocumentPosition(detachedXmlElement) 
+PASS detachedPara1.compareDocumentPosition(detachedForeignTextNode) 
+PASS detachedPara1.compareDocumentPosition(xmlTextNode) 
+PASS detachedPara1.compareDocumentPosition(detachedXmlTextNode) 
+PASS detachedPara1.compareDocumentPosition(xmlComment) 
+PASS detachedPara1.compareDocumentPosition(foreignComment) 
+PASS detachedPara1.compareDocumentPosition(detachedForeignComment) 
+PASS detachedPara1.compareDocumentPosition(detachedXmlComment) 
+PASS detachedPara1.compareDocumentPosition(foreignDocfrag) 
+PASS detachedPara1.compareDocumentPosition(xmlDocfrag) 
+PASS detachedPara1.compareDocumentPosition(xmlDoctype) 
+PASS detachedPara1.firstChild.compareDocumentPosition(paras[0]) 
+PASS detachedPara1.firstChild.compareDocumentPosition(paras[0].firstChild) 
+PASS detachedPara1.firstChild.compareDocumentPosition(paras[1].firstChild) 
+PASS detachedPara1.firstChild.compareDocumentPosition(foreignPara1) 
+PASS detachedPara1.firstChild.compareDocumentPosition(foreignPara1.firstChild) 
+PASS detachedPara1.firstChild.compareDocumentPosition(detachedPara1) 
+PASS detachedPara1.firstChild.compareDocumentPosition(detachedPara1.firstChild) 
+PASS detachedPara1.firstChild.compareDocumentPosition(document) 
+PASS detachedPara1.firstChild.compareDocumentPosition(detachedDiv) 
+PASS detachedPara1.firstChild.compareDocumentPosition(foreignDoc) 
+PASS detachedPara1.firstChild.compareDocumentPosition(foreignPara2) 
+PASS detachedPara1.firstChild.compareDocumentPosition(xmlDoc) 
+PASS detachedPara1.firstChild.compareDocumentPosition(xmlElement) 
+PASS detachedPara1.firstChild.compareDocumentPosition(detachedTextNode) 
+PASS detachedPara1.firstChild.compareDocumentPosition(foreignTextNode) 
+PASS detachedPara1.firstChild.compareDocumentPosition(processingInstruction) 
+PASS detachedPara1.firstChild.compareDocumentPosition(detachedProcessingInstruction) 
+PASS detachedPara1.firstChild.compareDocumentPosition(comment) 
+PASS detachedPara1.firstChild.compareDocumentPosition(detachedComment) 
+PASS detachedPara1.firstChild.compareDocumentPosition(docfrag) 
+PASS detachedPara1.firstChild.compareDocumentPosition(doctype) 
+PASS detachedPara1.firstChild.compareDocumentPosition(foreignDoctype) 
+PASS detachedPara1.firstChild.compareDocumentPosition(paras[1]) 
+PASS detachedPara1.firstChild.compareDocumentPosition(detachedPara2) 
+PASS detachedPara1.firstChild.compareDocumentPosition(detachedPara2.firstChild) 
+PASS detachedPara1.firstChild.compareDocumentPosition(testDiv) 
+PASS detachedPara1.firstChild.compareDocumentPosition(detachedXmlElement) 
+PASS detachedPara1.firstChild.compareDocumentPosition(detachedForeignTextNode) 
+PASS detachedPara1.firstChild.compareDocumentPosition(xmlTextNode) 
+PASS detachedPara1.firstChild.compareDocumentPosition(detachedXmlTextNode) 
+PASS detachedPara1.firstChild.compareDocumentPosition(xmlComment) 
+PASS detachedPara1.firstChild.compareDocumentPosition(foreignComment) 
+PASS detachedPara1.firstChild.compareDocumentPosition(detachedForeignComment) 
+PASS detachedPara1.firstChild.compareDocumentPosition(detachedXmlComment) 
+PASS detachedPara1.firstChild.compareDocumentPosition(foreignDocfrag) 
+PASS detachedPara1.firstChild.compareDocumentPosition(xmlDocfrag) 
+PASS detachedPara1.firstChild.compareDocumentPosition(xmlDoctype) 
+PASS document.compareDocumentPosition(paras[0]) 
+PASS document.compareDocumentPosition(paras[0].firstChild) 
+PASS document.compareDocumentPosition(paras[1].firstChild) 
+PASS document.compareDocumentPosition(foreignPara1) 
+PASS document.compareDocumentPosition(foreignPara1.firstChild) 
+PASS document.compareDocumentPosition(detachedPara1) 
+PASS document.compareDocumentPosition(detachedPara1.firstChild) 
+PASS document.compareDocumentPosition(document) 
+PASS document.compareDocumentPosition(detachedDiv) 
+PASS document.compareDocumentPosition(foreignDoc) 
+PASS document.compareDocumentPosition(foreignPara2) 
+PASS document.compareDocumentPosition(xmlDoc) 
+PASS document.compareDocumentPosition(xmlElement) 
+PASS document.compareDocumentPosition(detachedTextNode) 
+PASS document.compareDocumentPosition(foreignTextNode) 
+PASS document.compareDocumentPosition(processingInstruction) 
+PASS document.compareDocumentPosition(detachedProcessingInstruction) 
+PASS document.compareDocumentPosition(comment) 
+PASS document.compareDocumentPosition(detachedComment) 
+PASS document.compareDocumentPosition(docfrag) 
+PASS document.compareDocumentPosition(doctype) 
+PASS document.compareDocumentPosition(foreignDoctype) 
+PASS document.compareDocumentPosition(paras[1]) 
+PASS document.compareDocumentPosition(detachedPara2) 
+PASS document.compareDocumentPosition(detachedPara2.firstChild) 
+PASS document.compareDocumentPosition(testDiv) 
+PASS document.compareDocumentPosition(detachedXmlElement) 
+PASS document.compareDocumentPosition(detachedForeignTextNode) 
+PASS document.compareDocumentPosition(xmlTextNode) 
+PASS document.compareDocumentPosition(detachedXmlTextNode) 
+PASS document.compareDocumentPosition(xmlComment) 
+PASS document.compareDocumentPosition(foreignComment) 
+PASS document.compareDocumentPosition(detachedForeignComment) 
+PASS document.compareDocumentPosition(detachedXmlComment) 
+PASS document.compareDocumentPosition(foreignDocfrag) 
+PASS document.compareDocumentPosition(xmlDocfrag) 
+PASS document.compareDocumentPosition(xmlDoctype) 
+PASS detachedDiv.compareDocumentPosition(paras[0]) 
+PASS detachedDiv.compareDocumentPosition(paras[0].firstChild) 
+PASS detachedDiv.compareDocumentPosition(paras[1].firstChild) 
+PASS detachedDiv.compareDocumentPosition(foreignPara1) 
+PASS detachedDiv.compareDocumentPosition(foreignPara1.firstChild) 
+PASS detachedDiv.compareDocumentPosition(detachedPara1) 
+PASS detachedDiv.compareDocumentPosition(detachedPara1.firstChild) 
+PASS detachedDiv.compareDocumentPosition(document) 
+PASS detachedDiv.compareDocumentPosition(detachedDiv) 
+PASS detachedDiv.compareDocumentPosition(foreignDoc) 
+PASS detachedDiv.compareDocumentPosition(foreignPara2) 
+PASS detachedDiv.compareDocumentPosition(xmlDoc) 
+PASS detachedDiv.compareDocumentPosition(xmlElement) 
+PASS detachedDiv.compareDocumentPosition(detachedTextNode) 
+PASS detachedDiv.compareDocumentPosition(foreignTextNode) 
+PASS detachedDiv.compareDocumentPosition(processingInstruction) 
+PASS detachedDiv.compareDocumentPosition(detachedProcessingInstruction) 
+PASS detachedDiv.compareDocumentPosition(comment) 
+PASS detachedDiv.compareDocumentPosition(detachedComment) 
+PASS detachedDiv.compareDocumentPosition(docfrag) 
+PASS detachedDiv.compareDocumentPosition(doctype) 
+PASS detachedDiv.compareDocumentPosition(foreignDoctype) 
+PASS detachedDiv.compareDocumentPosition(paras[1]) 
+PASS detachedDiv.compareDocumentPosition(detachedPara2) 
+PASS detachedDiv.compareDocumentPosition(detachedPara2.firstChild) 
+PASS detachedDiv.compareDocumentPosition(testDiv) 
+PASS detachedDiv.compareDocumentPosition(detachedXmlElement) 
+PASS detachedDiv.compareDocumentPosition(detachedForeignTextNode) 
+PASS detachedDiv.compareDocumentPosition(xmlTextNode) 
+PASS detachedDiv.compareDocumentPosition(detachedXmlTextNode) 
+PASS detachedDiv.compareDocumentPosition(xmlComment) 
+PASS detachedDiv.compareDocumentPosition(foreignComment) 
+PASS detachedDiv.compareDocumentPosition(detachedForeignComment) 
+PASS detachedDiv.compareDocumentPosition(detachedXmlComment) 
+PASS detachedDiv.compareDocumentPosition(foreignDocfrag) 
+PASS detachedDiv.compareDocumentPosition(xmlDocfrag) 
+PASS detachedDiv.compareDocumentPosition(xmlDoctype) 
+PASS foreignDoc.compareDocumentPosition(paras[0]) 
+PASS foreignDoc.compareDocumentPosition(paras[0].firstChild) 
+PASS foreignDoc.compareDocumentPosition(paras[1].firstChild) 
+PASS foreignDoc.compareDocumentPosition(foreignPara1) 
+PASS foreignDoc.compareDocumentPosition(foreignPara1.firstChild) 
+PASS foreignDoc.compareDocumentPosition(detachedPara1) 
+PASS foreignDoc.compareDocumentPosition(detachedPara1.firstChild) 
+PASS foreignDoc.compareDocumentPosition(document) 
+PASS foreignDoc.compareDocumentPosition(detachedDiv) 
+PASS foreignDoc.compareDocumentPosition(foreignDoc) 
+PASS foreignDoc.compareDocumentPosition(foreignPara2) 
+PASS foreignDoc.compareDocumentPosition(xmlDoc) 
+PASS foreignDoc.compareDocumentPosition(xmlElement) 
+PASS foreignDoc.compareDocumentPosition(detachedTextNode) 
+PASS foreignDoc.compareDocumentPosition(foreignTextNode) 
+PASS foreignDoc.compareDocumentPosition(processingInstruction) 
+PASS foreignDoc.compareDocumentPosition(detachedProcessingInstruction) 
+PASS foreignDoc.compareDocumentPosition(comment) 
+PASS foreignDoc.compareDocumentPosition(detachedComment) 
+PASS foreignDoc.compareDocumentPosition(docfrag) 
+PASS foreignDoc.compareDocumentPosition(doctype) 
+PASS foreignDoc.compareDocumentPosition(foreignDoctype) 
+PASS foreignDoc.compareDocumentPosition(paras[1]) 
+PASS foreignDoc.compareDocumentPosition(detachedPara2) 
+PASS foreignDoc.compareDocumentPosition(detachedPara2.firstChild) 
+PASS foreignDoc.compareDocumentPosition(testDiv) 
+PASS foreignDoc.compareDocumentPosition(detachedXmlElement) 
+PASS foreignDoc.compareDocumentPosition(detachedForeignTextNode) 
+PASS foreignDoc.compareDocumentPosition(xmlTextNode) 
+PASS foreignDoc.compareDocumentPosition(detachedXmlTextNode) 
+PASS foreignDoc.compareDocumentPosition(xmlComment) 
+PASS foreignDoc.compareDocumentPosition(foreignComment) 
+PASS foreignDoc.compareDocumentPosition(detachedForeignComment) 
+PASS foreignDoc.compareDocumentPosition(detachedXmlComment) 
+PASS foreignDoc.compareDocumentPosition(foreignDocfrag) 
+PASS foreignDoc.compareDocumentPosition(xmlDocfrag) 
+PASS foreignDoc.compareDocumentPosition(xmlDoctype) 
+PASS foreignPara2.compareDocumentPosition(paras[0]) 
+PASS foreignPara2.compareDocumentPosition(paras[0].firstChild) 
+PASS foreignPara2.compareDocumentPosition(paras[1].firstChild) 
+PASS foreignPara2.compareDocumentPosition(foreignPara1) 
+PASS foreignPara2.compareDocumentPosition(foreignPara1.firstChild) 
+PASS foreignPara2.compareDocumentPosition(detachedPara1) 
+PASS foreignPara2.compareDocumentPosition(detachedPara1.firstChild) 
+PASS foreignPara2.compareDocumentPosition(document) 
+PASS foreignPara2.compareDocumentPosition(detachedDiv) 
+PASS foreignPara2.compareDocumentPosition(foreignDoc) 
+PASS foreignPara2.compareDocumentPosition(foreignPara2) 
+PASS foreignPara2.compareDocumentPosition(xmlDoc) 
+PASS foreignPara2.compareDocumentPosition(xmlElement) 
+PASS foreignPara2.compareDocumentPosition(detachedTextNode) 
+PASS foreignPara2.compareDocumentPosition(foreignTextNode) 
+PASS foreignPara2.compareDocumentPosition(processingInstruction) 
+PASS foreignPara2.compareDocumentPosition(detachedProcessingInstruction) 
+PASS foreignPara2.compareDocumentPosition(comment) 
+PASS foreignPara2.compareDocumentPosition(detachedComment) 
+PASS foreignPara2.compareDocumentPosition(docfrag) 
+PASS foreignPara2.compareDocumentPosition(doctype) 
+PASS foreignPara2.compareDocumentPosition(foreignDoctype) 
+PASS foreignPara2.compareDocumentPosition(paras[1]) 
+PASS foreignPara2.compareDocumentPosition(detachedPara2) 
+PASS foreignPara2.compareDocumentPosition(detachedPara2.firstChild) 
+PASS foreignPara2.compareDocumentPosition(testDiv) 
+PASS foreignPara2.compareDocumentPosition(detachedXmlElement) 
+PASS foreignPara2.compareDocumentPosition(detachedForeignTextNode) 
+PASS foreignPara2.compareDocumentPosition(xmlTextNode) 
+PASS foreignPara2.compareDocumentPosition(detachedXmlTextNode) 
+PASS foreignPara2.compareDocumentPosition(xmlComment) 
+PASS foreignPara2.compareDocumentPosition(foreignComment) 
+PASS foreignPara2.compareDocumentPosition(detachedForeignComment) 
+PASS foreignPara2.compareDocumentPosition(detachedXmlComment) 
+PASS foreignPara2.compareDocumentPosition(foreignDocfrag) 
+PASS foreignPara2.compareDocumentPosition(xmlDocfrag) 
+PASS foreignPara2.compareDocumentPosition(xmlDoctype) 
+PASS xmlDoc.compareDocumentPosition(paras[0]) 
+PASS xmlDoc.compareDocumentPosition(paras[0].firstChild) 
+PASS xmlDoc.compareDocumentPosition(paras[1].firstChild) 
+PASS xmlDoc.compareDocumentPosition(foreignPara1) 
+PASS xmlDoc.compareDocumentPosition(foreignPara1.firstChild) 
+PASS xmlDoc.compareDocumentPosition(detachedPara1) 
+PASS xmlDoc.compareDocumentPosition(detachedPara1.firstChild) 
+PASS xmlDoc.compareDocumentPosition(document) 
+PASS xmlDoc.compareDocumentPosition(detachedDiv) 
+PASS xmlDoc.compareDocumentPosition(foreignDoc) 
+PASS xmlDoc.compareDocumentPosition(foreignPara2) 
+PASS xmlDoc.compareDocumentPosition(xmlDoc) 
+PASS xmlDoc.compareDocumentPosition(xmlElement) 
+PASS xmlDoc.compareDocumentPosition(detachedTextNode) 
+PASS xmlDoc.compareDocumentPosition(foreignTextNode) 
+PASS xmlDoc.compareDocumentPosition(processingInstruction) 
+PASS xmlDoc.compareDocumentPosition(detachedProcessingInstruction) 
+PASS xmlDoc.compareDocumentPosition(comment) 
+PASS xmlDoc.compareDocumentPosition(detachedComment) 
+PASS xmlDoc.compareDocumentPosition(docfrag) 
+PASS xmlDoc.compareDocumentPosition(doctype) 
+PASS xmlDoc.compareDocumentPosition(foreignDoctype) 
+PASS xmlDoc.compareDocumentPosition(paras[1]) 
+PASS xmlDoc.compareDocumentPosition(detachedPara2) 
+PASS xmlDoc.compareDocumentPosition(detachedPara2.firstChild) 
+PASS xmlDoc.compareDocumentPosition(testDiv) 
+PASS xmlDoc.compareDocumentPosition(detachedXmlElement) 
+PASS xmlDoc.compareDocumentPosition(detachedForeignTextNode) 
+PASS xmlDoc.compareDocumentPosition(xmlTextNode) 
+PASS xmlDoc.compareDocumentPosition(detachedXmlTextNode) 
+PASS xmlDoc.compareDocumentPosition(xmlComment) 
+PASS xmlDoc.compareDocumentPosition(foreignComment) 
+PASS xmlDoc.compareDocumentPosition(detachedForeignComment) 
+PASS xmlDoc.compareDocumentPosition(detachedXmlComment) 
+PASS xmlDoc.compareDocumentPosition(foreignDocfrag) 
+PASS xmlDoc.compareDocumentPosition(xmlDocfrag) 
+PASS xmlDoc.compareDocumentPosition(xmlDoctype) 
+PASS xmlElement.compareDocumentPosition(paras[0]) 
+PASS xmlElement.compareDocumentPosition(paras[0].firstChild) 
+PASS xmlElement.compareDocumentPosition(paras[1].firstChild) 
+PASS xmlElement.compareDocumentPosition(foreignPara1) 
+PASS xmlElement.compareDocumentPosition(foreignPara1.firstChild) 
+PASS xmlElement.compareDocumentPosition(detachedPara1) 
+PASS xmlElement.compareDocumentPosition(detachedPara1.firstChild) 
+PASS xmlElement.compareDocumentPosition(document) 
+PASS xmlElement.compareDocumentPosition(detachedDiv) 
+PASS xmlElement.compareDocumentPosition(foreignDoc) 
+PASS xmlElement.compareDocumentPosition(foreignPara2) 
+PASS xmlElement.compareDocumentPosition(xmlDoc) 
+PASS xmlElement.compareDocumentPosition(xmlElement) 
+PASS xmlElement.compareDocumentPosition(detachedTextNode) 
+PASS xmlElement.compareDocumentPosition(foreignTextNode) 
+PASS xmlElement.compareDocumentPosition(processingInstruction) 
+PASS xmlElement.compareDocumentPosition(detachedProcessingInstruction) 
+PASS xmlElement.compareDocumentPosition(comment) 
+PASS xmlElement.compareDocumentPosition(detachedComment) 
+PASS xmlElement.compareDocumentPosition(docfrag) 
+PASS xmlElement.compareDocumentPosition(doctype) 
+PASS xmlElement.compareDocumentPosition(foreignDoctype) 
+PASS xmlElement.compareDocumentPosition(paras[1]) 
+PASS xmlElement.compareDocumentPosition(detachedPara2) 
+PASS xmlElement.compareDocumentPosition(detachedPara2.firstChild) 
+PASS xmlElement.compareDocumentPosition(testDiv) 
+PASS xmlElement.compareDocumentPosition(detachedXmlElement) 
+PASS xmlElement.compareDocumentPosition(detachedForeignTextNode) 
+PASS xmlElement.compareDocumentPosition(xmlTextNode) 
+PASS xmlElement.compareDocumentPosition(detachedXmlTextNode) 
+PASS xmlElement.compareDocumentPosition(xmlComment) 
+PASS xmlElement.compareDocumentPosition(foreignComment) 
+PASS xmlElement.compareDocumentPosition(detachedForeignComment) 
+PASS xmlElement.compareDocumentPosition(detachedXmlComment) 
+PASS xmlElement.compareDocumentPosition(foreignDocfrag) 
+PASS xmlElement.compareDocumentPosition(xmlDocfrag) 
+PASS xmlElement.compareDocumentPosition(xmlDoctype) 
+PASS detachedTextNode.compareDocumentPosition(paras[0]) 
+PASS detachedTextNode.compareDocumentPosition(paras[0].firstChild) 
+PASS detachedTextNode.compareDocumentPosition(paras[1].firstChild) 
+PASS detachedTextNode.compareDocumentPosition(foreignPara1) 
+PASS detachedTextNode.compareDocumentPosition(foreignPara1.firstChild) 
+PASS detachedTextNode.compareDocumentPosition(detachedPara1) 
+PASS detachedTextNode.compareDocumentPosition(detachedPara1.firstChild) 
+PASS detachedTextNode.compareDocumentPosition(document) 
+PASS detachedTextNode.compareDocumentPosition(detachedDiv) 
+PASS detachedTextNode.compareDocumentPosition(foreignDoc) 
+PASS detachedTextNode.compareDocumentPosition(foreignPara2) 
+PASS detachedTextNode.compareDocumentPosition(xmlDoc) 
+PASS detachedTextNode.compareDocumentPosition(xmlElement) 
+PASS detachedTextNode.compareDocumentPosition(detachedTextNode) 
+PASS detachedTextNode.compareDocumentPosition(foreignTextNode) 
+PASS detachedTextNode.compareDocumentPosition(processingInstruction) 
+PASS detachedTextNode.compareDocumentPosition(detachedProcessingInstruction) 
+PASS detachedTextNode.compareDocumentPosition(comment) 
+PASS detachedTextNode.compareDocumentPosition(detachedComment) 
+PASS detachedTextNode.compareDocumentPosition(docfrag) 
+PASS detachedTextNode.compareDocumentPosition(doctype) 
+PASS detachedTextNode.compareDocumentPosition(foreignDoctype) 
+PASS detachedTextNode.compareDocumentPosition(paras[1]) 
+PASS detachedTextNode.compareDocumentPosition(detachedPara2) 
+PASS detachedTextNode.compareDocumentPosition(detachedPara2.firstChild) 
+PASS detachedTextNode.compareDocumentPosition(testDiv) 
+PASS detachedTextNode.compareDocumentPosition(detachedXmlElement) 
+PASS detachedTextNode.compareDocumentPosition(detachedForeignTextNode) 
+PASS detachedTextNode.compareDocumentPosition(xmlTextNode) 
+PASS detachedTextNode.compareDocumentPosition(detachedXmlTextNode) 
+PASS detachedTextNode.compareDocumentPosition(xmlComment) 
+PASS detachedTextNode.compareDocumentPosition(foreignComment) 
+PASS detachedTextNode.compareDocumentPosition(detachedForeignComment) 
+PASS detachedTextNode.compareDocumentPosition(detachedXmlComment) 
+PASS detachedTextNode.compareDocumentPosition(foreignDocfrag) 
+PASS detachedTextNode.compareDocumentPosition(xmlDocfrag) 
+PASS detachedTextNode.compareDocumentPosition(xmlDoctype) 
+PASS foreignTextNode.compareDocumentPosition(paras[0]) 
+PASS foreignTextNode.compareDocumentPosition(paras[0].firstChild) 
+PASS foreignTextNode.compareDocumentPosition(paras[1].firstChild) 
+PASS foreignTextNode.compareDocumentPosition(foreignPara1) 
+PASS foreignTextNode.compareDocumentPosition(foreignPara1.firstChild) 
+PASS foreignTextNode.compareDocumentPosition(detachedPara1) 
+PASS foreignTextNode.compareDocumentPosition(detachedPara1.firstChild) 
+PASS foreignTextNode.compareDocumentPosition(document) 
+PASS foreignTextNode.compareDocumentPosition(detachedDiv) 
+PASS foreignTextNode.compareDocumentPosition(foreignDoc) 
+PASS foreignTextNode.compareDocumentPosition(foreignPara2) 
+PASS foreignTextNode.compareDocumentPosition(xmlDoc) 
+PASS foreignTextNode.compareDocumentPosition(xmlElement) 
+PASS foreignTextNode.compareDocumentPosition(detachedTextNode) 
+PASS foreignTextNode.compareDocumentPosition(foreignTextNode) 
+PASS foreignTextNode.compareDocumentPosition(processingInstruction) 
+PASS foreignTextNode.compareDocumentPosition(detachedProcessingInstruction) 
+PASS foreignTextNode.compareDocumentPosition(comment) 
+PASS foreignTextNode.compareDocumentPosition(detachedComment) 
+PASS foreignTextNode.compareDocumentPosition(docfrag) 
+PASS foreignTextNode.compareDocumentPosition(doctype) 
+PASS foreignTextNode.compareDocumentPosition(foreignDoctype) 
+PASS foreignTextNode.compareDocumentPosition(paras[1]) 
+PASS foreignTextNode.compareDocumentPosition(detachedPara2) 
+PASS foreignTextNode.compareDocumentPosition(detachedPara2.firstChild) 
+PASS foreignTextNode.compareDocumentPosition(testDiv) 
+PASS foreignTextNode.compareDocumentPosition(detachedXmlElement) 
+PASS foreignTextNode.compareDocumentPosition(detachedForeignTextNode) 
+PASS foreignTextNode.compareDocumentPosition(xmlTextNode) 
+PASS foreignTextNode.compareDocumentPosition(detachedXmlTextNode) 
+PASS foreignTextNode.compareDocumentPosition(xmlComment) 
+PASS foreignTextNode.compareDocumentPosition(foreignComment) 
+PASS foreignTextNode.compareDocumentPosition(detachedForeignComment) 
+PASS foreignTextNode.compareDocumentPosition(detachedXmlComment) 
+PASS foreignTextNode.compareDocumentPosition(foreignDocfrag) 
+PASS foreignTextNode.compareDocumentPosition(xmlDocfrag) 
+PASS foreignTextNode.compareDocumentPosition(xmlDoctype) 
+PASS processingInstruction.compareDocumentPosition(paras[0]) 
+PASS processingInstruction.compareDocumentPosition(paras[0].firstChild) 
+PASS processingInstruction.compareDocumentPosition(paras[1].firstChild) 
+PASS processingInstruction.compareDocumentPosition(foreignPara1) 
+PASS processingInstruction.compareDocumentPosition(foreignPara1.firstChild) 
+PASS processingInstruction.compareDocumentPosition(detachedPara1) 
+PASS processingInstruction.compareDocumentPosition(detachedPara1.firstChild) 
+PASS processingInstruction.compareDocumentPosition(document) 
+PASS processingInstruction.compareDocumentPosition(detachedDiv) 
+PASS processingInstruction.compareDocumentPosition(foreignDoc) 
+PASS processingInstruction.compareDocumentPosition(foreignPara2) 
+PASS processingInstruction.compareDocumentPosition(xmlDoc) 
+PASS processingInstruction.compareDocumentPosition(xmlElement) 
+PASS processingInstruction.compareDocumentPosition(detachedTextNode) 
+PASS processingInstruction.compareDocumentPosition(foreignTextNode) 
+PASS processingInstruction.compareDocumentPosition(processingInstruction) 
+PASS processingInstruction.compareDocumentPosition(detachedProcessingInstruction) 
+PASS processingInstruction.compareDocumentPosition(comment) 
+PASS processingInstruction.compareDocumentPosition(detachedComment) 
+PASS processingInstruction.compareDocumentPosition(docfrag) 
+PASS processingInstruction.compareDocumentPosition(doctype) 
+PASS processingInstruction.compareDocumentPosition(foreignDoctype) 
+PASS processingInstruction.compareDocumentPosition(paras[1]) 
+PASS processingInstruction.compareDocumentPosition(detachedPara2) 
+PASS processingInstruction.compareDocumentPosition(detachedPara2.firstChild) 
+PASS processingInstruction.compareDocumentPosition(testDiv) 
+PASS processingInstruction.compareDocumentPosition(detachedXmlElement) 
+PASS processingInstruction.compareDocumentPosition(detachedForeignTextNode) 
+PASS processingInstruction.compareDocumentPosition(xmlTextNode) 
+PASS processingInstruction.compareDocumentPosition(detachedXmlTextNode) 
+PASS processingInstruction.compareDocumentPosition(xmlComment) 
+PASS processingInstruction.compareDocumentPosition(foreignComment) 
+PASS processingInstruction.compareDocumentPosition(detachedForeignComment) 
+PASS processingInstruction.compareDocumentPosition(detachedXmlComment) 
+PASS processingInstruction.compareDocumentPosition(foreignDocfrag) 
+PASS processingInstruction.compareDocumentPosition(xmlDocfrag) 
+PASS processingInstruction.compareDocumentPosition(xmlDoctype) 
+PASS detachedProcessingInstruction.compareDocumentPosition(paras[0]) 
+PASS detachedProcessingInstruction.compareDocumentPosition(paras[0].firstChild) 
+PASS detachedProcessingInstruction.compareDocumentPosition(paras[1].firstChild) 
+PASS detachedProcessingInstruction.compareDocumentPosition(foreignPara1) 
+PASS detachedProcessingInstruction.compareDocumentPosition(foreignPara1.firstChild) 
+PASS detachedProcessingInstruction.compareDocumentPosition(detachedPara1) 
+PASS detachedProcessingInstruction.compareDocumentPosition(detachedPara1.firstChild) 
+PASS detachedProcessingInstruction.compareDocumentPosition(document) 
+PASS detachedProcessingInstruction.compareDocumentPosition(detachedDiv) 
+PASS detachedProcessingInstruction.compareDocumentPosition(foreignDoc) 
+PASS detachedProcessingInstruction.compareDocumentPosition(foreignPara2) 
+PASS detachedProcessingInstruction.compareDocumentPosition(xmlDoc) 
+PASS detachedProcessingInstruction.compareDocumentPosition(xmlElement) 
+PASS detachedProcessingInstruction.compareDocumentPosition(detachedTextNode) 
+PASS detachedProcessingInstruction.compareDocumentPosition(foreignTextNode) 
+PASS detachedProcessingInstruction.compareDocumentPosition(processingInstruction) 
+PASS detachedProcessingInstruction.compareDocumentPosition(detachedProcessingInstruction) 
+PASS detachedProcessingInstruction.compareDocumentPosition(comment) 
+PASS detachedProcessingInstruction.compareDocumentPosition(detachedComment) 
+PASS detachedProcessingInstruction.compareDocumentPosition(docfrag) 
+PASS detachedProcessingInstruction.compareDocumentPosition(doctype) 
+PASS detachedProcessingInstruction.compareDocumentPosition(foreignDoctype) 
+PASS detachedProcessingInstruction.compareDocumentPosition(paras[1]) 
+PASS detachedProcessingInstruction.compareDocumentPosition(detachedPara2) 
+PASS detachedProcessingInstruction.compareDocumentPosition(detachedPara2.firstChild) 
+PASS detachedProcessingInstruction.compareDocumentPosition(testDiv) 
+PASS detachedProcessingInstruction.compareDocumentPosition(detachedXmlElement) 
+PASS detachedProcessingInstruction.compareDocumentPosition(detachedForeignTextNode) 
+PASS detachedProcessingInstruction.compareDocumentPosition(xmlTextNode) 
+PASS detachedProcessingInstruction.compareDocumentPosition(detachedXmlTextNode) 
+PASS detachedProcessingInstruction.compareDocumentPosition(xmlComment) 
+PASS detachedProcessingInstruction.compareDocumentPosition(foreignComment) 
+PASS detachedProcessingInstruction.compareDocumentPosition(detachedForeignComment) 
+PASS detachedProcessingInstruction.compareDocumentPosition(detachedXmlComment) 
+PASS detachedProcessingInstruction.compareDocumentPosition(foreignDocfrag) 
+PASS detachedProcessingInstruction.compareDocumentPosition(xmlDocfrag) 
+PASS detachedProcessingInstruction.compareDocumentPosition(xmlDoctype) 
+PASS comment.compareDocumentPosition(paras[0]) 
+PASS comment.compareDocumentPosition(paras[0].firstChild) 
+PASS comment.compareDocumentPosition(paras[1].firstChild) 
+PASS comment.compareDocumentPosition(foreignPara1) 
+PASS comment.compareDocumentPosition(foreignPara1.firstChild) 
+PASS comment.compareDocumentPosition(detachedPara1) 
+PASS comment.compareDocumentPosition(detachedPara1.firstChild) 
+PASS comment.compareDocumentPosition(document) 
+PASS comment.compareDocumentPosition(detachedDiv) 
+PASS comment.compareDocumentPosition(foreignDoc) 
+PASS comment.compareDocumentPosition(foreignPara2) 
+PASS comment.compareDocumentPosition(xmlDoc) 
+PASS comment.compareDocumentPosition(xmlElement) 
+PASS comment.compareDocumentPosition(detachedTextNode) 
+PASS comment.compareDocumentPosition(foreignTextNode) 
+PASS comment.compareDocumentPosition(processingInstruction) 
+PASS comment.compareDocumentPosition(detachedProcessingInstruction) 
+PASS comment.compareDocumentPosition(comment) 
+PASS comment.compareDocumentPosition(detachedComment) 
+PASS comment.compareDocumentPosition(docfrag) 
+PASS comment.compareDocumentPosition(doctype) 
+PASS comment.compareDocumentPosition(foreignDoctype) 
+PASS comment.compareDocumentPosition(paras[1]) 
+PASS comment.compareDocumentPosition(detachedPara2) 
+PASS comment.compareDocumentPosition(detachedPara2.firstChild) 
+PASS comment.compareDocumentPosition(testDiv) 
+PASS comment.compareDocumentPosition(detachedXmlElement) 
+PASS comment.compareDocumentPosition(detachedForeignTextNode) 
+PASS comment.compareDocumentPosition(xmlTextNode) 
+PASS comment.compareDocumentPosition(detachedXmlTextNode) 
+PASS comment.compareDocumentPosition(xmlComment) 
+PASS comment.compareDocumentPosition(foreignComment) 
+PASS comment.compareDocumentPosition(detachedForeignComment) 
+PASS comment.compareDocumentPosition(detachedXmlComment) 
+PASS comment.compareDocumentPosition(foreignDocfrag) 
+PASS comment.compareDocumentPosition(xmlDocfrag) 
+PASS comment.compareDocumentPosition(xmlDoctype) 
+PASS detachedComment.compareDocumentPosition(paras[0]) 
+PASS detachedComment.compareDocumentPosition(paras[0].firstChild) 
+PASS detachedComment.compareDocumentPosition(paras[1].firstChild) 
+PASS detachedComment.compareDocumentPosition(foreignPara1) 
+PASS detachedComment.compareDocumentPosition(foreignPara1.firstChild) 
+PASS detachedComment.compareDocumentPosition(detachedPara1) 
+PASS detachedComment.compareDocumentPosition(detachedPara1.firstChild) 
+PASS detachedComment.compareDocumentPosition(document) 
+PASS detachedComment.compareDocumentPosition(detachedDiv) 
+PASS detachedComment.compareDocumentPosition(foreignDoc) 
+PASS detachedComment.compareDocumentPosition(foreignPara2) 
+PASS detachedComment.compareDocumentPosition(xmlDoc) 
+PASS detachedComment.compareDocumentPosition(xmlElement) 
+PASS detachedComment.compareDocumentPosition(detachedTextNode) 
+PASS detachedComment.compareDocumentPosition(foreignTextNode) 
+PASS detachedComment.compareDocumentPosition(processingInstruction) 
+PASS detachedComment.compareDocumentPosition(detachedProcessingInstruction) 
+PASS detachedComment.compareDocumentPosition(comment) 
+PASS detachedComment.compareDocumentPosition(detachedComment) 
+PASS detachedComment.compareDocumentPosition(docfrag) 
+PASS detachedComment.compareDocumentPosition(doctype) 
+PASS detachedComment.compareDocumentPosition(foreignDoctype) 
+PASS detachedComment.compareDocumentPosition(paras[1]) 
+PASS detachedComment.compareDocumentPosition(detachedPara2) 
+PASS detachedComment.compareDocumentPosition(detachedPara2.firstChild) 
+PASS detachedComment.compareDocumentPosition(testDiv) 
+PASS detachedComment.compareDocumentPosition(detachedXmlElement) 
+PASS detachedComment.compareDocumentPosition(detachedForeignTextNode) 
+PASS detachedComment.compareDocumentPosition(xmlTextNode) 
+PASS detachedComment.compareDocumentPosition(detachedXmlTextNode) 
+PASS detachedComment.compareDocumentPosition(xmlComment) 
+PASS detachedComment.compareDocumentPosition(foreignComment) 
+PASS detachedComment.compareDocumentPosition(detachedForeignComment) 
+PASS detachedComment.compareDocumentPosition(detachedXmlComment) 
+PASS detachedComment.compareDocumentPosition(foreignDocfrag) 
+PASS detachedComment.compareDocumentPosition(xmlDocfrag) 
+PASS detachedComment.compareDocumentPosition(xmlDoctype) 
+PASS docfrag.compareDocumentPosition(paras[0]) 
+PASS docfrag.compareDocumentPosition(paras[0].firstChild) 
+PASS docfrag.compareDocumentPosition(paras[1].firstChild) 
+PASS docfrag.compareDocumentPosition(foreignPara1) 
+PASS docfrag.compareDocumentPosition(foreignPara1.firstChild) 
+PASS docfrag.compareDocumentPosition(detachedPara1) 
+PASS docfrag.compareDocumentPosition(detachedPara1.firstChild) 
+PASS docfrag.compareDocumentPosition(document) 
+PASS docfrag.compareDocumentPosition(detachedDiv) 
+PASS docfrag.compareDocumentPosition(foreignDoc) 
+PASS docfrag.compareDocumentPosition(foreignPara2) 
+PASS docfrag.compareDocumentPosition(xmlDoc) 
+PASS docfrag.compareDocumentPosition(xmlElement) 
+PASS docfrag.compareDocumentPosition(detachedTextNode) 
+PASS docfrag.compareDocumentPosition(foreignTextNode) 
+PASS docfrag.compareDocumentPosition(processingInstruction) 
+PASS docfrag.compareDocumentPosition(detachedProcessingInstruction) 
+PASS docfrag.compareDocumentPosition(comment) 
+PASS docfrag.compareDocumentPosition(detachedComment) 
+PASS docfrag.compareDocumentPosition(docfrag) 
+PASS docfrag.compareDocumentPosition(doctype) 
+PASS docfrag.compareDocumentPosition(foreignDoctype) 
+PASS docfrag.compareDocumentPosition(paras[1]) 
+PASS docfrag.compareDocumentPosition(detachedPara2) 
+PASS docfrag.compareDocumentPosition(detachedPara2.firstChild) 
+PASS docfrag.compareDocumentPosition(testDiv) 
+PASS docfrag.compareDocumentPosition(detachedXmlElement) 
+PASS docfrag.compareDocumentPosition(detachedForeignTextNode) 
+PASS docfrag.compareDocumentPosition(xmlTextNode) 
+PASS docfrag.compareDocumentPosition(detachedXmlTextNode) 
+PASS docfrag.compareDocumentPosition(xmlComment) 
+PASS docfrag.compareDocumentPosition(foreignComment) 
+PASS docfrag.compareDocumentPosition(detachedForeignComment) 
+PASS docfrag.compareDocumentPosition(detachedXmlComment) 
+PASS docfrag.compareDocumentPosition(foreignDocfrag) 
+PASS docfrag.compareDocumentPosition(xmlDocfrag) 
+PASS docfrag.compareDocumentPosition(xmlDoctype) 
+PASS doctype.compareDocumentPosition(paras[0]) 
+PASS doctype.compareDocumentPosition(paras[0].firstChild) 
+PASS doctype.compareDocumentPosition(paras[1].firstChild) 
+PASS doctype.compareDocumentPosition(foreignPara1) 
+PASS doctype.compareDocumentPosition(foreignPara1.firstChild) 
+PASS doctype.compareDocumentPosition(detachedPara1) 
+PASS doctype.compareDocumentPosition(detachedPara1.firstChild) 
+PASS doctype.compareDocumentPosition(document) 
+PASS doctype.compareDocumentPosition(detachedDiv) 
+PASS doctype.compareDocumentPosition(foreignDoc) 
+PASS doctype.compareDocumentPosition(foreignPara2) 
+PASS doctype.compareDocumentPosition(xmlDoc) 
+PASS doctype.compareDocumentPosition(xmlElement) 
+PASS doctype.compareDocumentPosition(detachedTextNode) 
+PASS doctype.compareDocumentPosition(foreignTextNode) 
+PASS doctype.compareDocumentPosition(processingInstruction) 
+PASS doctype.compareDocumentPosition(detachedProcessingInstruction) 
+PASS doctype.compareDocumentPosition(comment) 
+PASS doctype.compareDocumentPosition(detachedComment) 
+PASS doctype.compareDocumentPosition(docfrag) 
+PASS doctype.compareDocumentPosition(doctype) 
+PASS doctype.compareDocumentPosition(foreignDoctype) 
+PASS doctype.compareDocumentPosition(paras[1]) 
+PASS doctype.compareDocumentPosition(detachedPara2) 
+PASS doctype.compareDocumentPosition(detachedPara2.firstChild) 
+PASS doctype.compareDocumentPosition(testDiv) 
+PASS doctype.compareDocumentPosition(detachedXmlElement) 
+PASS doctype.compareDocumentPosition(detachedForeignTextNode) 
+PASS doctype.compareDocumentPosition(xmlTextNode) 
+PASS doctype.compareDocumentPosition(detachedXmlTextNode) 
+PASS doctype.compareDocumentPosition(xmlComment) 
+PASS doctype.compareDocumentPosition(foreignComment) 
+PASS doctype.compareDocumentPosition(detachedForeignComment) 
+PASS doctype.compareDocumentPosition(detachedXmlComment) 
+PASS doctype.compareDocumentPosition(foreignDocfrag) 
+PASS doctype.compareDocumentPosition(xmlDocfrag) 
+PASS doctype.compareDocumentPosition(xmlDoctype) 
+PASS foreignDoctype.compareDocumentPosition(paras[0]) 
+PASS foreignDoctype.compareDocumentPosition(paras[0].firstChild) 
+PASS foreignDoctype.compareDocumentPosition(paras[1].firstChild) 
+PASS foreignDoctype.compareDocumentPosition(foreignPara1) 
+PASS foreignDoctype.compareDocumentPosition(foreignPara1.firstChild) 
+PASS foreignDoctype.compareDocumentPosition(detachedPara1) 
+PASS foreignDoctype.compareDocumentPosition(detachedPara1.firstChild) 
+PASS foreignDoctype.compareDocumentPosition(document) 
+PASS foreignDoctype.compareDocumentPosition(detachedDiv) 
+PASS foreignDoctype.compareDocumentPosition(foreignDoc) 
+PASS foreignDoctype.compareDocumentPosition(foreignPara2) 
+PASS foreignDoctype.compareDocumentPosition(xmlDoc) 
+PASS foreignDoctype.compareDocumentPosition(xmlElement) 
+PASS foreignDoctype.compareDocumentPosition(detachedTextNode) 
+PASS foreignDoctype.compareDocumentPosition(foreignTextNode) 
+PASS foreignDoctype.compareDocumentPosition(processingInstruction) 
+PASS foreignDoctype.compareDocumentPosition(detachedProcessingInstruction) 
+PASS foreignDoctype.compareDocumentPosition(comment) 
+PASS foreignDoctype.compareDocumentPosition(detachedComment) 
+PASS foreignDoctype.compareDocumentPosition(docfrag) 
+PASS foreignDoctype.compareDocumentPosition(doctype) 
+PASS foreignDoctype.compareDocumentPosition(foreignDoctype) 
+PASS foreignDoctype.compareDocumentPosition(paras[1]) 
+PASS foreignDoctype.compareDocumentPosition(detachedPara2) 
+PASS foreignDoctype.compareDocumentPosition(detachedPara2.firstChild) 
+PASS foreignDoctype.compareDocumentPosition(testDiv) 
+PASS foreignDoctype.compareDocumentPosition(detachedXmlElement) 
+PASS foreignDoctype.compareDocumentPosition(detachedForeignTextNode) 
+PASS foreignDoctype.compareDocumentPosition(xmlTextNode) 
+PASS foreignDoctype.compareDocumentPosition(detachedXmlTextNode) 
+PASS foreignDoctype.compareDocumentPosition(xmlComment) 
+PASS foreignDoctype.compareDocumentPosition(foreignComment) 
+PASS foreignDoctype.compareDocumentPosition(detachedForeignComment) 
+PASS foreignDoctype.compareDocumentPosition(detachedXmlComment) 
+PASS foreignDoctype.compareDocumentPosition(foreignDocfrag) 
+PASS foreignDoctype.compareDocumentPosition(xmlDocfrag) 
+PASS foreignDoctype.compareDocumentPosition(xmlDoctype) 
+PASS paras[1].compareDocumentPosition(paras[0]) 
+PASS paras[1].compareDocumentPosition(paras[0].firstChild) 
+PASS paras[1].compareDocumentPosition(paras[1].firstChild) 
+PASS paras[1].compareDocumentPosition(foreignPara1) 
+PASS paras[1].compareDocumentPosition(foreignPara1.firstChild) 
+PASS paras[1].compareDocumentPosition(detachedPara1) 
+PASS paras[1].compareDocumentPosition(detachedPara1.firstChild) 
+PASS paras[1].compareDocumentPosition(document) 
+PASS paras[1].compareDocumentPosition(detachedDiv) 
+PASS paras[1].compareDocumentPosition(foreignDoc) 
+PASS paras[1].compareDocumentPosition(foreignPara2) 
+PASS paras[1].compareDocumentPosition(xmlDoc) 
+PASS paras[1].compareDocumentPosition(xmlElement) 
+PASS paras[1].compareDocumentPosition(detachedTextNode) 
+PASS paras[1].compareDocumentPosition(foreignTextNode) 
+PASS paras[1].compareDocumentPosition(processingInstruction) 
+PASS paras[1].compareDocumentPosition(detachedProcessingInstruction) 
+PASS paras[1].compareDocumentPosition(comment) 
+PASS paras[1].compareDocumentPosition(detachedComment) 
+PASS paras[1].compareDocumentPosition(docfrag) 
+PASS paras[1].compareDocumentPosition(doctype) 
+PASS paras[1].compareDocumentPosition(foreignDoctype) 
+PASS paras[1].compareDocumentPosition(paras[1]) 
+PASS paras[1].compareDocumentPosition(detachedPara2) 
+PASS paras[1].compareDocumentPosition(detachedPara2.firstChild) 
+PASS paras[1].compareDocumentPosition(testDiv) 
+PASS paras[1].compareDocumentPosition(detachedXmlElement) 
+PASS paras[1].compareDocumentPosition(detachedForeignTextNode) 
+PASS paras[1].compareDocumentPosition(xmlTextNode) 
+PASS paras[1].compareDocumentPosition(detachedXmlTextNode) 
+PASS paras[1].compareDocumentPosition(xmlComment) 
+PASS paras[1].compareDocumentPosition(foreignComment) 
+PASS paras[1].compareDocumentPosition(detachedForeignComment) 
+PASS paras[1].compareDocumentPosition(detachedXmlComment) 
+PASS paras[1].compareDocumentPosition(foreignDocfrag) 
+PASS paras[1].compareDocumentPosition(xmlDocfrag) 
+PASS paras[1].compareDocumentPosition(xmlDoctype) 
+PASS detachedPara2.compareDocumentPosition(paras[0]) 
+PASS detachedPara2.compareDocumentPosition(paras[0].firstChild) 
+PASS detachedPara2.compareDocumentPosition(paras[1].firstChild) 
+PASS detachedPara2.compareDocumentPosition(foreignPara1) 
+PASS detachedPara2.compareDocumentPosition(foreignPara1.firstChild) 
+PASS detachedPara2.compareDocumentPosition(detachedPara1) 
+PASS detachedPara2.compareDocumentPosition(detachedPara1.firstChild) 
+PASS detachedPara2.compareDocumentPosition(document) 
+PASS detachedPara2.compareDocumentPosition(detachedDiv) 
+PASS detachedPara2.compareDocumentPosition(foreignDoc) 
+PASS detachedPara2.compareDocumentPosition(foreignPara2) 
+PASS detachedPara2.compareDocumentPosition(xmlDoc) 
+PASS detachedPara2.compareDocumentPosition(xmlElement) 
+PASS detachedPara2.compareDocumentPosition(detachedTextNode) 
+PASS detachedPara2.compareDocumentPosition(foreignTextNode) 
+PASS detachedPara2.compareDocumentPosition(processingInstruction) 
+PASS detachedPara2.compareDocumentPosition(detachedProcessingInstruction) 
+PASS detachedPara2.compareDocumentPosition(comment) 
+PASS detachedPara2.compareDocumentPosition(detachedComment) 
+PASS detachedPara2.compareDocumentPosition(docfrag) 
+PASS detachedPara2.compareDocumentPosition(doctype) 
+PASS detachedPara2.compareDocumentPosition(foreignDoctype) 
+PASS detachedPara2.compareDocumentPosition(paras[1]) 
+PASS detachedPara2.compareDocumentPosition(detachedPara2) 
+PASS detachedPara2.compareDocumentPosition(detachedPara2.firstChild) 
+PASS detachedPara2.compareDocumentPosition(testDiv) 
+PASS detachedPara2.compareDocumentPosition(detachedXmlElement) 
+PASS detachedPara2.compareDocumentPosition(detachedForeignTextNode) 
+PASS detachedPara2.compareDocumentPosition(xmlTextNode) 
+PASS detachedPara2.compareDocumentPosition(detachedXmlTextNode) 
+PASS detachedPara2.compareDocumentPosition(xmlComment) 
+PASS detachedPara2.compareDocumentPosition(foreignComment) 
+PASS detachedPara2.compareDocumentPosition(detachedForeignComment) 
+PASS detachedPara2.compareDocumentPosition(detachedXmlComment) 
+PASS detachedPara2.compareDocumentPosition(foreignDocfrag) 
+PASS detachedPara2.compareDocumentPosition(xmlDocfrag) 
+PASS detachedPara2.compareDocumentPosition(xmlDoctype) 
+PASS detachedPara2.firstChild.compareDocumentPosition(paras[0]) 
+PASS detachedPara2.firstChild.compareDocumentPosition(paras[0].firstChild) 
+PASS detachedPara2.firstChild.compareDocumentPosition(paras[1].firstChild) 
+PASS detachedPara2.firstChild.compareDocumentPosition(foreignPara1) 
+PASS detachedPara2.firstChild.compareDocumentPosition(foreignPara1.firstChild) 
+PASS detachedPara2.firstChild.compareDocumentPosition(detachedPara1) 
+PASS detachedPara2.firstChild.compareDocumentPosition(detachedPara1.firstChild) 
+PASS detachedPara2.firstChild.compareDocumentPosition(document) 
+PASS detachedPara2.firstChild.compareDocumentPosition(detachedDiv) 
+PASS detachedPara2.firstChild.compareDocumentPosition(foreignDoc) 
+PASS detachedPara2.firstChild.compareDocumentPosition(foreignPara2) 
+PASS detachedPara2.firstChild.compareDocumentPosition(xmlDoc) 
+PASS detachedPara2.firstChild.compareDocumentPosition(xmlElement) 
+PASS detachedPara2.firstChild.compareDocumentPosition(detachedTextNode) 
+PASS detachedPara2.firstChild.compareDocumentPosition(foreignTextNode) 
+PASS detachedPara2.firstChild.compareDocumentPosition(processingInstruction) 
+PASS detachedPara2.firstChild.compareDocumentPosition(detachedProcessingInstruction) 
+PASS detachedPara2.firstChild.compareDocumentPosition(comment) 
+PASS detachedPara2.firstChild.compareDocumentPosition(detachedComment) 
+PASS detachedPara2.firstChild.compareDocumentPosition(docfrag) 
+PASS detachedPara2.firstChild.compareDocumentPosition(doctype) 
+PASS detachedPara2.firstChild.compareDocumentPosition(foreignDoctype) 
+PASS detachedPara2.firstChild.compareDocumentPosition(paras[1]) 
+PASS detachedPara2.firstChild.compareDocumentPosition(detachedPara2) 
+PASS detachedPara2.firstChild.compareDocumentPosition(detachedPara2.firstChild) 
+PASS detachedPara2.firstChild.compareDocumentPosition(testDiv) 
+PASS detachedPara2.firstChild.compareDocumentPosition(detachedXmlElement) 
+PASS detachedPara2.firstChild.compareDocumentPosition(detachedForeignTextNode) 
+PASS detachedPara2.firstChild.compareDocumentPosition(xmlTextNode) 
+PASS detachedPara2.firstChild.compareDocumentPosition(detachedXmlTextNode) 
+PASS detachedPara2.firstChild.compareDocumentPosition(xmlComment) 
+PASS detachedPara2.firstChild.compareDocumentPosition(foreignComment) 
+PASS detachedPara2.firstChild.compareDocumentPosition(detachedForeignComment) 
+PASS detachedPara2.firstChild.compareDocumentPosition(detachedXmlComment) 
+PASS detachedPara2.firstChild.compareDocumentPosition(foreignDocfrag) 
+PASS detachedPara2.firstChild.compareDocumentPosition(xmlDocfrag) 
+PASS detachedPara2.firstChild.compareDocumentPosition(xmlDoctype) 
+PASS testDiv.compareDocumentPosition(paras[0]) 
+PASS testDiv.compareDocumentPosition(paras[0].firstChild) 
+PASS testDiv.compareDocumentPosition(paras[1].firstChild) 
+PASS testDiv.compareDocumentPosition(foreignPara1) 
+PASS testDiv.compareDocumentPosition(foreignPara1.firstChild) 
+PASS testDiv.compareDocumentPosition(detachedPara1) 
+PASS testDiv.compareDocumentPosition(detachedPara1.firstChild) 
+PASS testDiv.compareDocumentPosition(document) 
+PASS testDiv.compareDocumentPosition(detachedDiv) 
+PASS testDiv.compareDocumentPosition(foreignDoc) 
+PASS testDiv.compareDocumentPosition(foreignPara2) 
+PASS testDiv.compareDocumentPosition(xmlDoc) 
+PASS testDiv.compareDocumentPosition(xmlElement) 
+PASS testDiv.compareDocumentPosition(detachedTextNode) 
+PASS testDiv.compareDocumentPosition(foreignTextNode) 
+PASS testDiv.compareDocumentPosition(processingInstruction) 
+PASS testDiv.compareDocumentPosition(detachedProcessingInstruction) 
+PASS testDiv.compareDocumentPosition(comment) 
+PASS testDiv.compareDocumentPosition(detachedComment) 
+PASS testDiv.compareDocumentPosition(docfrag) 
+PASS testDiv.compareDocumentPosition(doctype) 
+PASS testDiv.compareDocumentPosition(foreignDoctype) 
+PASS testDiv.compareDocumentPosition(paras[1]) 
+PASS testDiv.compareDocumentPosition(detachedPara2) 
+PASS testDiv.compareDocumentPosition(detachedPara2.firstChild) 
+PASS testDiv.compareDocumentPosition(testDiv) 
+PASS testDiv.compareDocumentPosition(detachedXmlElement) 
+PASS testDiv.compareDocumentPosition(detachedForeignTextNode) 
+PASS testDiv.compareDocumentPosition(xmlTextNode) 
+PASS testDiv.compareDocumentPosition(detachedXmlTextNode) 
+PASS testDiv.compareDocumentPosition(xmlComment) 
+PASS testDiv.compareDocumentPosition(foreignComment) 
+PASS testDiv.compareDocumentPosition(detachedForeignComment) 
+PASS testDiv.compareDocumentPosition(detachedXmlComment) 
+PASS testDiv.compareDocumentPosition(foreignDocfrag) 
+PASS testDiv.compareDocumentPosition(xmlDocfrag) 
+PASS testDiv.compareDocumentPosition(xmlDoctype) 
+PASS detachedXmlElement.compareDocumentPosition(paras[0]) 
+PASS detachedXmlElement.compareDocumentPosition(paras[0].firstChild) 
+PASS detachedXmlElement.compareDocumentPosition(paras[1].firstChild) 
+PASS detachedXmlElement.compareDocumentPosition(foreignPara1) 
+PASS detachedXmlElement.compareDocumentPosition(foreignPara1.firstChild) 
+PASS detachedXmlElement.compareDocumentPosition(detachedPara1) 
+PASS detachedXmlElement.compareDocumentPosition(detachedPara1.firstChild) 
+PASS detachedXmlElement.compareDocumentPosition(document) 
+PASS detachedXmlElement.compareDocumentPosition(detachedDiv) 
+PASS detachedXmlElement.compareDocumentPosition(foreignDoc) 
+PASS detachedXmlElement.compareDocumentPosition(foreignPara2) 
+PASS detachedXmlElement.compareDocumentPosition(xmlDoc) 
+PASS detachedXmlElement.compareDocumentPosition(xmlElement) 
+PASS detachedXmlElement.compareDocumentPosition(detachedTextNode) 
+PASS detachedXmlElement.compareDocumentPosition(foreignTextNode) 
+PASS detachedXmlElement.compareDocumentPosition(processingInstruction) 
+PASS detachedXmlElement.compareDocumentPosition(detachedProcessingInstruction) 
+PASS detachedXmlElement.compareDocumentPosition(comment) 
+PASS detachedXmlElement.compareDocumentPosition(detachedComment) 
+PASS detachedXmlElement.compareDocumentPosition(docfrag) 
+PASS detachedXmlElement.compareDocumentPosition(doctype) 
+PASS detachedXmlElement.compareDocumentPosition(foreignDoctype) 
+PASS detachedXmlElement.compareDocumentPosition(paras[1]) 
+PASS detachedXmlElement.compareDocumentPosition(detachedPara2) 
+PASS detachedXmlElement.compareDocumentPosition(detachedPara2.firstChild) 
+PASS detachedXmlElement.compareDocumentPosition(testDiv) 
+PASS detachedXmlElement.compareDocumentPosition(detachedXmlElement) 
+PASS detachedXmlElement.compareDocumentPosition(detachedForeignTextNode) 
+PASS detachedXmlElement.compareDocumentPosition(xmlTextNode) 
+PASS detachedXmlElement.compareDocumentPosition(detachedXmlTextNode) 
+PASS detachedXmlElement.compareDocumentPosition(xmlComment) 
+PASS detachedXmlElement.compareDocumentPosition(foreignComment) 
+PASS detachedXmlElement.compareDocumentPosition(detachedForeignComment) 
+PASS detachedXmlElement.compareDocumentPosition(detachedXmlComment) 
+PASS detachedXmlElement.compareDocumentPosition(foreignDocfrag) 
+PASS detachedXmlElement.compareDocumentPosition(xmlDocfrag) 
+PASS detachedXmlElement.compareDocumentPosition(xmlDoctype) 
+PASS detachedForeignTextNode.compareDocumentPosition(paras[0]) 
+PASS detachedForeignTextNode.compareDocumentPosition(paras[0].firstChild) 
+PASS detachedForeignTextNode.compareDocumentPosition(paras[1].firstChild) 
+PASS detachedForeignTextNode.compareDocumentPosition(foreignPara1) 
+PASS detachedForeignTextNode.compareDocumentPosition(foreignPara1.firstChild) 
+PASS detachedForeignTextNode.compareDocumentPosition(detachedPara1) 
+PASS detachedForeignTextNode.compareDocumentPosition(detachedPara1.firstChild) 
+PASS detachedForeignTextNode.compareDocumentPosition(document) 
+PASS detachedForeignTextNode.compareDocumentPosition(detachedDiv) 
+PASS detachedForeignTextNode.compareDocumentPosition(foreignDoc) 
+PASS detachedForeignTextNode.compareDocumentPosition(foreignPara2) 
+PASS detachedForeignTextNode.compareDocumentPosition(xmlDoc) 
+PASS detachedForeignTextNode.compareDocumentPosition(xmlElement) 
+PASS detachedForeignTextNode.compareDocumentPosition(detachedTextNode) 
+PASS detachedForeignTextNode.compareDocumentPosition(foreignTextNode) 
+PASS detachedForeignTextNode.compareDocumentPosition(processingInstruction) 
+PASS detachedForeignTextNode.compareDocumentPosition(detachedProcessingInstruction) 
+PASS detachedForeignTextNode.compareDocumentPosition(comment) 
+PASS detachedForeignTextNode.compareDocumentPosition(detachedComment) 
+PASS detachedForeignTextNode.compareDocumentPosition(docfrag) 
+PASS detachedForeignTextNode.compareDocumentPosition(doctype) 
+PASS detachedForeignTextNode.compareDocumentPosition(foreignDoctype) 
+PASS detachedForeignTextNode.compareDocumentPosition(paras[1]) 
+PASS detachedForeignTextNode.compareDocumentPosition(detachedPara2) 
+PASS detachedForeignTextNode.compareDocumentPosition(detachedPara2.firstChild) 
+PASS detachedForeignTextNode.compareDocumentPosition(testDiv) 
+PASS detachedForeignTextNode.compareDocumentPosition(detachedXmlElement) 
+PASS detachedForeignTextNode.compareDocumentPosition(detachedForeignTextNode) 
+PASS detachedForeignTextNode.compareDocumentPosition(xmlTextNode) 
+PASS detachedForeignTextNode.compareDocumentPosition(detachedXmlTextNode) 
+PASS detachedForeignTextNode.compareDocumentPosition(xmlComment) 
+PASS detachedForeignTextNode.compareDocumentPosition(foreignComment) 
+PASS detachedForeignTextNode.compareDocumentPosition(detachedForeignComment) 
+PASS detachedForeignTextNode.compareDocumentPosition(detachedXmlComment) 
+PASS detachedForeignTextNode.compareDocumentPosition(foreignDocfrag) 
+PASS detachedForeignTextNode.compareDocumentPosition(xmlDocfrag) 
+PASS detachedForeignTextNode.compareDocumentPosition(xmlDoctype) 
+PASS xmlTextNode.compareDocumentPosition(paras[0]) 
+PASS xmlTextNode.compareDocumentPosition(paras[0].firstChild) 
+PASS xmlTextNode.compareDocumentPosition(paras[1].firstChild) 
+PASS xmlTextNode.compareDocumentPosition(foreignPara1) 
+PASS xmlTextNode.compareDocumentPosition(foreignPara1.firstChild) 
+PASS xmlTextNode.compareDocumentPosition(detachedPara1) 
+PASS xmlTextNode.compareDocumentPosition(detachedPara1.firstChild) 
+PASS xmlTextNode.compareDocumentPosition(document) 
+PASS xmlTextNode.compareDocumentPosition(detachedDiv) 
+PASS xmlTextNode.compareDocumentPosition(foreignDoc) 
+PASS xmlTextNode.compareDocumentPosition(foreignPara2) 
+PASS xmlTextNode.compareDocumentPosition(xmlDoc) 
+PASS xmlTextNode.compareDocumentPosition(xmlElement) 
+PASS xmlTextNode.compareDocumentPosition(detachedTextNode) 
+PASS xmlTextNode.compareDocumentPosition(foreignTextNode) 
+PASS xmlTextNode.compareDocumentPosition(processingInstruction) 
+PASS xmlTextNode.compareDocumentPosition(detachedProcessingInstruction) 
+PASS xmlTextNode.compareDocumentPosition(comment) 
+PASS xmlTextNode.compareDocumentPosition(detachedComment) 
+PASS xmlTextNode.compareDocumentPosition(docfrag) 
+PASS xmlTextNode.compareDocumentPosition(doctype) 
+PASS xmlTextNode.compareDocumentPosition(foreignDoctype) 
+PASS xmlTextNode.compareDocumentPosition(paras[1]) 
+PASS xmlTextNode.compareDocumentPosition(detachedPara2) 
+PASS xmlTextNode.compareDocumentPosition(detachedPara2.firstChild) 
+PASS xmlTextNode.compareDocumentPosition(testDiv) 
+PASS xmlTextNode.compareDocumentPosition(detachedXmlElement) 
+PASS xmlTextNode.compareDocumentPosition(detachedForeignTextNode) 
+PASS xmlTextNode.compareDocumentPosition(xmlTextNode) 
+PASS xmlTextNode.compareDocumentPosition(detachedXmlTextNode) 
+PASS xmlTextNode.compareDocumentPosition(xmlComment) 
+PASS xmlTextNode.compareDocumentPosition(foreignComment) 
+PASS xmlTextNode.compareDocumentPosition(detachedForeignComment) 
+PASS xmlTextNode.compareDocumentPosition(detachedXmlComment) 
+PASS xmlTextNode.compareDocumentPosition(foreignDocfrag) 
+PASS xmlTextNode.compareDocumentPosition(xmlDocfrag) 
+PASS xmlTextNode.compareDocumentPosition(xmlDoctype) 
+PASS detachedXmlTextNode.compareDocumentPosition(paras[0]) 
+PASS detachedXmlTextNode.compareDocumentPosition(paras[0].firstChild) 
+PASS detachedXmlTextNode.compareDocumentPosition(paras[1].firstChild) 
+PASS detachedXmlTextNode.compareDocumentPosition(foreignPara1) 
+PASS detachedXmlTextNode.compareDocumentPosition(foreignPara1.firstChild) 
+PASS detachedXmlTextNode.compareDocumentPosition(detachedPara1) 
+PASS detachedXmlTextNode.compareDocumentPosition(detachedPara1.firstChild) 
+PASS detachedXmlTextNode.compareDocumentPosition(document) 
+PASS detachedXmlTextNode.compareDocumentPosition(detachedDiv) 
+PASS detachedXmlTextNode.compareDocumentPosition(foreignDoc) 
+PASS detachedXmlTextNode.compareDocumentPosition(foreignPara2) 
+PASS detachedXmlTextNode.compareDocumentPosition(xmlDoc) 
+PASS detachedXmlTextNode.compareDocumentPosition(xmlElement) 
+PASS detachedXmlTextNode.compareDocumentPosition(detachedTextNode) 
+PASS detachedXmlTextNode.compareDocumentPosition(foreignTextNode) 
+PASS detachedXmlTextNode.compareDocumentPosition(processingInstruction) 
+PASS detachedXmlTextNode.compareDocumentPosition(detachedProcessingInstruction) 
+PASS detachedXmlTextNode.compareDocumentPosition(comment) 
+PASS detachedXmlTextNode.compareDocumentPosition(detachedComment) 
+PASS detachedXmlTextNode.compareDocumentPosition(docfrag) 
+PASS detachedXmlTextNode.compareDocumentPosition(doctype) 
+PASS detachedXmlTextNode.compareDocumentPosition(foreignDoctype) 
+PASS detachedXmlTextNode.compareDocumentPosition(paras[1]) 
+PASS detachedXmlTextNode.compareDocumentPosition(detachedPara2) 
+PASS detachedXmlTextNode.compareDocumentPosition(detachedPara2.firstChild) 
+PASS detachedXmlTextNode.compareDocumentPosition(testDiv) 
+PASS detachedXmlTextNode.compareDocumentPosition(detachedXmlElement) 
+PASS detachedXmlTextNode.compareDocumentPosition(detachedForeignTextNode) 
+PASS detachedXmlTextNode.compareDocumentPosition(xmlTextNode) 
+PASS detachedXmlTextNode.compareDocumentPosition(detachedXmlTextNode) 
+PASS detachedXmlTextNode.compareDocumentPosition(xmlComment) 
+PASS detachedXmlTextNode.compareDocumentPosition(foreignComment) 
+PASS detachedXmlTextNode.compareDocumentPosition(detachedForeignComment) 
+PASS detachedXmlTextNode.compareDocumentPosition(detachedXmlComment) 
+PASS detachedXmlTextNode.compareDocumentPosition(foreignDocfrag) 
+PASS detachedXmlTextNode.compareDocumentPosition(xmlDocfrag) 
+PASS detachedXmlTextNode.compareDocumentPosition(xmlDoctype) 
+PASS xmlComment.compareDocumentPosition(paras[0]) 
+PASS xmlComment.compareDocumentPosition(paras[0].firstChild) 
+PASS xmlComment.compareDocumentPosition(paras[1].firstChild) 
+PASS xmlComment.compareDocumentPosition(foreignPara1) 
+PASS xmlComment.compareDocumentPosition(foreignPara1.firstChild) 
+PASS xmlComment.compareDocumentPosition(detachedPara1) 
+PASS xmlComment.compareDocumentPosition(detachedPara1.firstChild) 
+PASS xmlComment.compareDocumentPosition(document) 
+PASS xmlComment.compareDocumentPosition(detachedDiv) 
+PASS xmlComment.compareDocumentPosition(foreignDoc) 
+PASS xmlComment.compareDocumentPosition(foreignPara2) 
+PASS xmlComment.compareDocumentPosition(xmlDoc) 
+PASS xmlComment.compareDocumentPosition(xmlElement) 
+PASS xmlComment.compareDocumentPosition(detachedTextNode) 
+PASS xmlComment.compareDocumentPosition(foreignTextNode) 
+PASS xmlComment.compareDocumentPosition(processingInstruction) 
+PASS xmlComment.compareDocumentPosition(detachedProcessingInstruction) 
+PASS xmlComment.compareDocumentPosition(comment) 
+PASS xmlComment.compareDocumentPosition(detachedComment) 
+PASS xmlComment.compareDocumentPosition(docfrag) 
+PASS xmlComment.compareDocumentPosition(doctype) 
+PASS xmlComment.compareDocumentPosition(foreignDoctype) 
+PASS xmlComment.compareDocumentPosition(paras[1]) 
+PASS xmlComment.compareDocumentPosition(detachedPara2) 
+PASS xmlComment.compareDocumentPosition(detachedPara2.firstChild) 
+PASS xmlComment.compareDocumentPosition(testDiv) 
+PASS xmlComment.compareDocumentPosition(detachedXmlElement) 
+PASS xmlComment.compareDocumentPosition(detachedForeignTextNode) 
+PASS xmlComment.compareDocumentPosition(xmlTextNode) 
+PASS xmlComment.compareDocumentPosition(detachedXmlTextNode) 
+PASS xmlComment.compareDocumentPosition(xmlComment) 
+PASS xmlComment.compareDocumentPosition(foreignComment) 
+PASS xmlComment.compareDocumentPosition(detachedForeignComment) 
+PASS xmlComment.compareDocumentPosition(detachedXmlComment) 
+PASS xmlComment.compareDocumentPosition(foreignDocfrag) 
+PASS xmlComment.compareDocumentPosition(xmlDocfrag) 
+PASS xmlComment.compareDocumentPosition(xmlDoctype) 
+PASS foreignComment.compareDocumentPosition(paras[0]) 
+PASS foreignComment.compareDocumentPosition(paras[0].firstChild) 
+PASS foreignComment.compareDocumentPosition(paras[1].firstChild) 
+PASS foreignComment.compareDocumentPosition(foreignPara1) 
+PASS foreignComment.compareDocumentPosition(foreignPara1.firstChild) 
+PASS foreignComment.compareDocumentPosition(detachedPara1) 
+PASS foreignComment.compareDocumentPosition(detachedPara1.firstChild) 
+PASS foreignComment.compareDocumentPosition(document) 
+PASS foreignComment.compareDocumentPosition(detachedDiv) 
+PASS foreignComment.compareDocumentPosition(foreignDoc) 
+PASS foreignComment.compareDocumentPosition(foreignPara2) 
+PASS foreignComment.compareDocumentPosition(xmlDoc) 
+PASS foreignComment.compareDocumentPosition(xmlElement) 
+PASS foreignComment.compareDocumentPosition(detachedTextNode) 
+PASS foreignComment.compareDocumentPosition(foreignTextNode) 
+PASS foreignComment.compareDocumentPosition(processingInstruction) 
+PASS foreignComment.compareDocumentPosition(detachedProcessingInstruction) 
+PASS foreignComment.compareDocumentPosition(comment) 
+PASS foreignComment.compareDocumentPosition(detachedComment) 
+PASS foreignComment.compareDocumentPosition(docfrag) 
+PASS foreignComment.compareDocumentPosition(doctype) 
+PASS foreignComment.compareDocumentPosition(foreignDoctype) 
+PASS foreignComment.compareDocumentPosition(paras[1]) 
+PASS foreignComment.compareDocumentPosition(detachedPara2) 
+PASS foreignComment.compareDocumentPosition(detachedPara2.firstChild) 
+PASS foreignComment.compareDocumentPosition(testDiv) 
+PASS foreignComment.compareDocumentPosition(detachedXmlElement) 
+PASS foreignComment.compareDocumentPosition(detachedForeignTextNode) 
+PASS foreignComment.compareDocumentPosition(xmlTextNode) 
+PASS foreignComment.compareDocumentPosition(detachedXmlTextNode) 
+PASS foreignComment.compareDocumentPosition(xmlComment) 
+PASS foreignComment.compareDocumentPosition(foreignComment) 
+PASS foreignComment.compareDocumentPosition(detachedForeignComment) 
+PASS foreignComment.compareDocumentPosition(detachedXmlComment) 
+PASS foreignComment.compareDocumentPosition(foreignDocfrag) 
+PASS foreignComment.compareDocumentPosition(xmlDocfrag) 
+PASS foreignComment.compareDocumentPosition(xmlDoctype) 
+PASS detachedForeignComment.compareDocumentPosition(paras[0]) 
+PASS detachedForeignComment.compareDocumentPosition(paras[0].firstChild) 
+PASS detachedForeignComment.compareDocumentPosition(paras[1].firstChild) 
+PASS detachedForeignComment.compareDocumentPosition(foreignPara1) 
+PASS detachedForeignComment.compareDocumentPosition(foreignPara1.firstChild) 
+PASS detachedForeignComment.compareDocumentPosition(detachedPara1) 
+PASS detachedForeignComment.compareDocumentPosition(detachedPara1.firstChild) 
+PASS detachedForeignComment.compareDocumentPosition(document) 
+PASS detachedForeignComment.compareDocumentPosition(detachedDiv) 
+PASS detachedForeignComment.compareDocumentPosition(foreignDoc) 
+PASS detachedForeignComment.compareDocumentPosition(foreignPara2) 
+PASS detachedForeignComment.compareDocumentPosition(xmlDoc) 
+PASS detachedForeignComment.compareDocumentPosition(xmlElement) 
+PASS detachedForeignComment.compareDocumentPosition(detachedTextNode) 
+PASS detachedForeignComment.compareDocumentPosition(foreignTextNode) 
+PASS detachedForeignComment.compareDocumentPosition(processingInstruction) 
+PASS detachedForeignComment.compareDocumentPosition(detachedProcessingInstruction) 
+PASS detachedForeignComment.compareDocumentPosition(comment) 
+PASS detachedForeignComment.compareDocumentPosition(detachedComment) 
+PASS detachedForeignComment.compareDocumentPosition(docfrag) 
+PASS detachedForeignComment.compareDocumentPosition(doctype) 
+PASS detachedForeignComment.compareDocumentPosition(foreignDoctype) 
+PASS detachedForeignComment.compareDocumentPosition(paras[1]) 
+PASS detachedForeignComment.compareDocumentPosition(detachedPara2) 
+PASS detachedForeignComment.compareDocumentPosition(detachedPara2.firstChild) 
+PASS detachedForeignComment.compareDocumentPosition(testDiv) 
+PASS detachedForeignComment.compareDocumentPosition(detachedXmlElement) 
+PASS detachedForeignComment.compareDocumentPosition(detachedForeignTextNode) 
+PASS detachedForeignComment.compareDocumentPosition(xmlTextNode) 
+PASS detachedForeignComment.compareDocumentPosition(detachedXmlTextNode) 
+PASS detachedForeignComment.compareDocumentPosition(xmlComment) 
+PASS detachedForeignComment.compareDocumentPosition(foreignComment) 
+PASS detachedForeignComment.compareDocumentPosition(detachedForeignComment) 
+PASS detachedForeignComment.compareDocumentPosition(detachedXmlComment) 
+PASS detachedForeignComment.compareDocumentPosition(foreignDocfrag) 
+PASS detachedForeignComment.compareDocumentPosition(xmlDocfrag) 
+PASS detachedForeignComment.compareDocumentPosition(xmlDoctype) 
+PASS detachedXmlComment.compareDocumentPosition(paras[0]) 
+PASS detachedXmlComment.compareDocumentPosition(paras[0].firstChild) 
+PASS detachedXmlComment.compareDocumentPosition(paras[1].firstChild) 
+PASS detachedXmlComment.compareDocumentPosition(foreignPara1) 
+PASS detachedXmlComment.compareDocumentPosition(foreignPara1.firstChild) 
+PASS detachedXmlComment.compareDocumentPosition(detachedPara1) 
+PASS detachedXmlComment.compareDocumentPosition(detachedPara1.firstChild) 
+PASS detachedXmlComment.compareDocumentPosition(document) 
+PASS detachedXmlComment.compareDocumentPosition(detachedDiv) 
+PASS detachedXmlComment.compareDocumentPosition(foreignDoc) 
+PASS detachedXmlComment.compareDocumentPosition(foreignPara2) 
+PASS detachedXmlComment.compareDocumentPosition(xmlDoc) 
+PASS detachedXmlComment.compareDocumentPosition(xmlElement) 
+PASS detachedXmlComment.compareDocumentPosition(detachedTextNode) 
+PASS detachedXmlComment.compareDocumentPosition(foreignTextNode) 
+PASS detachedXmlComment.compareDocumentPosition(processingInstruction) 
+PASS detachedXmlComment.compareDocumentPosition(detachedProcessingInstruction) 
+PASS detachedXmlComment.compareDocumentPosition(comment) 
+PASS detachedXmlComment.compareDocumentPosition(detachedComment) 
+PASS detachedXmlComment.compareDocumentPosition(docfrag) 
+PASS detachedXmlComment.compareDocumentPosition(doctype) 
+PASS detachedXmlComment.compareDocumentPosition(foreignDoctype) 
+PASS detachedXmlComment.compareDocumentPosition(paras[1]) 
+PASS detachedXmlComment.compareDocumentPosition(detachedPara2) 
+PASS detachedXmlComment.compareDocumentPosition(detachedPara2.firstChild) 
+PASS detachedXmlComment.compareDocumentPosition(testDiv) 
+PASS detachedXmlComment.compareDocumentPosition(detachedXmlElement) 
+PASS detachedXmlComment.compareDocumentPosition(detachedForeignTextNode) 
+PASS detachedXmlComment.compareDocumentPosition(xmlTextNode) 
+PASS detachedXmlComment.compareDocumentPosition(detachedXmlTextNode) 
+PASS detachedXmlComment.compareDocumentPosition(xmlComment) 
+PASS detachedXmlComment.compareDocumentPosition(foreignComment) 
+PASS detachedXmlComment.compareDocumentPosition(detachedForeignComment) 
+PASS detachedXmlComment.compareDocumentPosition(detachedXmlComment) 
+PASS detachedXmlComment.compareDocumentPosition(foreignDocfrag) 
+PASS detachedXmlComment.compareDocumentPosition(xmlDocfrag) 
+PASS detachedXmlComment.compareDocumentPosition(xmlDoctype) 
+PASS foreignDocfrag.compareDocumentPosition(paras[0]) 
+PASS foreignDocfrag.compareDocumentPosition(paras[0].firstChild) 
+PASS foreignDocfrag.compareDocumentPosition(paras[1].firstChild) 
+PASS foreignDocfrag.compareDocumentPosition(foreignPara1) 
+PASS foreignDocfrag.compareDocumentPosition(foreignPara1.firstChild) 
+PASS foreignDocfrag.compareDocumentPosition(detachedPara1) 
+PASS foreignDocfrag.compareDocumentPosition(detachedPara1.firstChild) 
+PASS foreignDocfrag.compareDocumentPosition(document) 
+PASS foreignDocfrag.compareDocumentPosition(detachedDiv) 
+PASS foreignDocfrag.compareDocumentPosition(foreignDoc) 
+PASS foreignDocfrag.compareDocumentPosition(foreignPara2) 
+PASS foreignDocfrag.compareDocumentPosition(xmlDoc) 
+PASS foreignDocfrag.compareDocumentPosition(xmlElement) 
+PASS foreignDocfrag.compareDocumentPosition(detachedTextNode) 
+PASS foreignDocfrag.compareDocumentPosition(foreignTextNode) 
+PASS foreignDocfrag.compareDocumentPosition(processingInstruction) 
+PASS foreignDocfrag.compareDocumentPosition(detachedProcessingInstruction) 
+PASS foreignDocfrag.compareDocumentPosition(comment) 
+PASS foreignDocfrag.compareDocumentPosition(detachedComment) 
+PASS foreignDocfrag.compareDocumentPosition(docfrag) 
+PASS foreignDocfrag.compareDocumentPosition(doctype) 
+PASS foreignDocfrag.compareDocumentPosition(foreignDoctype) 
+PASS foreignDocfrag.compareDocumentPosition(paras[1]) 
+PASS foreignDocfrag.compareDocumentPosition(detachedPara2) 
+PASS foreignDocfrag.compareDocumentPosition(detachedPara2.firstChild) 
+PASS foreignDocfrag.compareDocumentPosition(testDiv) 
+PASS foreignDocfrag.compareDocumentPosition(detachedXmlElement) 
+PASS foreignDocfrag.compareDocumentPosition(detachedForeignTextNode) 
+PASS foreignDocfrag.compareDocumentPosition(xmlTextNode) 
+PASS foreignDocfrag.compareDocumentPosition(detachedXmlTextNode) 
+PASS foreignDocfrag.compareDocumentPosition(xmlComment) 
+PASS foreignDocfrag.compareDocumentPosition(foreignComment) 
+PASS foreignDocfrag.compareDocumentPosition(detachedForeignComment) 
+PASS foreignDocfrag.compareDocumentPosition(detachedXmlComment) 
+PASS foreignDocfrag.compareDocumentPosition(foreignDocfrag) 
+PASS foreignDocfrag.compareDocumentPosition(xmlDocfrag) 
+PASS foreignDocfrag.compareDocumentPosition(xmlDoctype) 
+PASS xmlDocfrag.compareDocumentPosition(paras[0]) 
+PASS xmlDocfrag.compareDocumentPosition(paras[0].firstChild) 
+PASS xmlDocfrag.compareDocumentPosition(paras[1].firstChild) 
+PASS xmlDocfrag.compareDocumentPosition(foreignPara1) 
+PASS xmlDocfrag.compareDocumentPosition(foreignPara1.firstChild) 
+PASS xmlDocfrag.compareDocumentPosition(detachedPara1) 
+PASS xmlDocfrag.compareDocumentPosition(detachedPara1.firstChild) 
+PASS xmlDocfrag.compareDocumentPosition(document) 
+PASS xmlDocfrag.compareDocumentPosition(detachedDiv) 
+PASS xmlDocfrag.compareDocumentPosition(foreignDoc) 
+PASS xmlDocfrag.compareDocumentPosition(foreignPara2) 
+PASS xmlDocfrag.compareDocumentPosition(xmlDoc) 
+PASS xmlDocfrag.compareDocumentPosition(xmlElement) 
+PASS xmlDocfrag.compareDocumentPosition(detachedTextNode) 
+PASS xmlDocfrag.compareDocumentPosition(foreignTextNode) 
+PASS xmlDocfrag.compareDocumentPosition(processingInstruction) 
+PASS xmlDocfrag.compareDocumentPosition(detachedProcessingInstruction) 
+PASS xmlDocfrag.compareDocumentPosition(comment) 
+PASS xmlDocfrag.compareDocumentPosition(detachedComment) 
+PASS xmlDocfrag.compareDocumentPosition(docfrag) 
+PASS xmlDocfrag.compareDocumentPosition(doctype) 
+PASS xmlDocfrag.compareDocumentPosition(foreignDoctype) 
+PASS xmlDocfrag.compareDocumentPosition(paras[1]) 
+PASS xmlDocfrag.compareDocumentPosition(detachedPara2) 
+PASS xmlDocfrag.compareDocumentPosition(detachedPara2.firstChild) 
+PASS xmlDocfrag.compareDocumentPosition(testDiv) 
+PASS xmlDocfrag.compareDocumentPosition(detachedXmlElement) 
+PASS xmlDocfrag.compareDocumentPosition(detachedForeignTextNode) 
+PASS xmlDocfrag.compareDocumentPosition(xmlTextNode) 
+PASS xmlDocfrag.compareDocumentPosition(detachedXmlTextNode) 
+PASS xmlDocfrag.compareDocumentPosition(xmlComment) 
+PASS xmlDocfrag.compareDocumentPosition(foreignComment) 
+PASS xmlDocfrag.compareDocumentPosition(detachedForeignComment) 
+PASS xmlDocfrag.compareDocumentPosition(detachedXmlComment) 
+PASS xmlDocfrag.compareDocumentPosition(foreignDocfrag) 
+PASS xmlDocfrag.compareDocumentPosition(xmlDocfrag) 
+PASS xmlDocfrag.compareDocumentPosition(xmlDoctype) 
+PASS xmlDoctype.compareDocumentPosition(paras[0]) 
+PASS xmlDoctype.compareDocumentPosition(paras[0].firstChild) 
+PASS xmlDoctype.compareDocumentPosition(paras[1].firstChild) 
+PASS xmlDoctype.compareDocumentPosition(foreignPara1) 
+PASS xmlDoctype.compareDocumentPosition(foreignPara1.firstChild) 
+PASS xmlDoctype.compareDocumentPosition(detachedPara1) 
+PASS xmlDoctype.compareDocumentPosition(detachedPara1.firstChild) 
+PASS xmlDoctype.compareDocumentPosition(document) 
+PASS xmlDoctype.compareDocumentPosition(detachedDiv) 
+PASS xmlDoctype.compareDocumentPosition(foreignDoc) 
+PASS xmlDoctype.compareDocumentPosition(foreignPara2) 
+PASS xmlDoctype.compareDocumentPosition(xmlDoc) 
+PASS xmlDoctype.compareDocumentPosition(xmlElement) 
+PASS xmlDoctype.compareDocumentPosition(detachedTextNode) 
+PASS xmlDoctype.compareDocumentPosition(foreignTextNode) 
+PASS xmlDoctype.compareDocumentPosition(processingInstruction) 
+PASS xmlDoctype.compareDocumentPosition(detachedProcessingInstruction) 
+PASS xmlDoctype.compareDocumentPosition(comment) 
+PASS xmlDoctype.compareDocumentPosition(detachedComment) 
+PASS xmlDoctype.compareDocumentPosition(docfrag) 
+PASS xmlDoctype.compareDocumentPosition(doctype) 
+PASS xmlDoctype.compareDocumentPosition(foreignDoctype) 
+PASS xmlDoctype.compareDocumentPosition(paras[1]) 
+PASS xmlDoctype.compareDocumentPosition(detachedPara2) 
+PASS xmlDoctype.compareDocumentPosition(detachedPara2.firstChild) 
+PASS xmlDoctype.compareDocumentPosition(testDiv) 
+PASS xmlDoctype.compareDocumentPosition(detachedXmlElement) 
+PASS xmlDoctype.compareDocumentPosition(detachedForeignTextNode) 
+PASS xmlDoctype.compareDocumentPosition(xmlTextNode) 
+PASS xmlDoctype.compareDocumentPosition(detachedXmlTextNode) 
+PASS xmlDoctype.compareDocumentPosition(xmlComment) 
+PASS xmlDoctype.compareDocumentPosition(foreignComment) 
+PASS xmlDoctype.compareDocumentPosition(detachedForeignComment) 
+PASS xmlDoctype.compareDocumentPosition(detachedXmlComment) 
+PASS xmlDoctype.compareDocumentPosition(foreignDocfrag) 
+PASS xmlDoctype.compareDocumentPosition(xmlDocfrag) 
+PASS xmlDoctype.compareDocumentPosition(xmlDoctype) 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodecompareDocumentPositionhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodecompareDocumentPositionhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-compareDocumentPosition.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-compareDocumentPosition.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-compareDocumentPosition.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-compareDocumentPosition.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,87 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Node.compareDocumentPosition() tests&lt;/title&gt;
+&lt;link rel=author title=&quot;Aryeh Gregor&quot; href=ayg@aryeh.name&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;script src=../common.js&gt;&lt;/script&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+
+testNodes.forEach(function(referenceName) {
+  var reference = eval(referenceName);
+  testNodes.forEach(function(otherName) {
+    var other = eval(otherName);
+    test(function() {
+      var result = reference.compareDocumentPosition(other);
+
+      // &quot;If other and reference are the same object, return zero and
+      // terminate these steps.&quot;
+      if (other === reference) {
+        assert_equals(result, 0);
+        return;
+      }
+
+      // &quot;If other and reference are not in the same tree, return the result of
+      // adding DOCUMENT_POSITION_DISCONNECTED,
+      // DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, and either
+      // DOCUMENT_POSITION_PRECEDING or DOCUMENT_POSITION_FOLLOWING, with the
+      // constraint that this is to be consistent, together and terminate these
+      // steps.&quot;
+      if (furthestAncestor(reference) !== furthestAncestor(other)) {
+        // TODO: Test that it's consistent.
+        assert_in_array(result, [Node.DOCUMENT_POSITION_DISCONNECTED +
+                                 Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC +
+                                 Node.DOCUMENT_POSITION_PRECEDING,
+                                 Node.DOCUMENT_POSITION_DISCONNECTED +
+                                 Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC +
+                                 Node.DOCUMENT_POSITION_FOLLOWING]);
+        return;
+      }
+
+      // &quot;If other is an ancestor of reference, return the result of
+      // adding DOCUMENT_POSITION_CONTAINS to DOCUMENT_POSITION_PRECEDING
+      // and terminate these steps.&quot;
+      var ancestor = reference.parentNode;
+      while (ancestor &amp;&amp; ancestor !== other) {
+        ancestor = ancestor.parentNode;
+      }
+      if (ancestor === other) {
+        assert_equals(result, Node.DOCUMENT_POSITION_CONTAINS +
+                              Node.DOCUMENT_POSITION_PRECEDING);
+        return;
+      }
+
+      // &quot;If other is a descendant of reference, return the result of adding
+      // DOCUMENT_POSITION_CONTAINED_BY to DOCUMENT_POSITION_FOLLOWING and
+      // terminate these steps.&quot;
+      ancestor = other.parentNode;
+      while (ancestor &amp;&amp; ancestor !== reference) {
+        ancestor = ancestor.parentNode;
+      }
+      if (ancestor === reference) {
+        assert_equals(result, Node.DOCUMENT_POSITION_CONTAINED_BY +
+                              Node.DOCUMENT_POSITION_FOLLOWING);
+        return;
+      }
+
+      // &quot;If other is preceding reference return DOCUMENT_POSITION_PRECEDING
+      // and terminate these steps.&quot;
+      var prev = previousNode(reference);
+      while (prev &amp;&amp; prev !== other) {
+        prev = previousNode(prev);
+      }
+      if (prev === other) {
+        assert_equals(result, Node.DOCUMENT_POSITION_PRECEDING);
+        return;
+      }
+
+      // &quot;Return DOCUMENT_POSITION_FOLLOWING.&quot;
+      assert_equals(result, Node.DOCUMENT_POSITION_FOLLOWING);
+    }, referenceName + &quot;.compareDocumentPosition(&quot; + otherName + &quot;)&quot;);
+  });
+});
+
+testDiv.parentNode.removeChild(testDiv);
+&lt;/script&gt;
+&lt;!-- vim: set expandtab tabstop=2 shiftwidth=2: --&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeconstantsexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodeconstantsexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-constants-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-constants-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-constants-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-constants-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+
+PASS Constants for nodeType on Node interface object. 
+PASS Constants for nodeType on Node prototype object. 
+PASS Constants for nodeType on Element object. 
+PASS Constants for nodeType on Text object. 
+PASS Constants for createDocumentPosition on Node interface object. 
+PASS Constants for createDocumentPosition on Node prototype object. 
+PASS Constants for createDocumentPosition on Element object. 
+PASS Constants for createDocumentPosition on Text object. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeconstantshtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodeconstantshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-constants.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-constants.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-constants.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-constants.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Node constants&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../constants.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+var objects;
+setup(function() {
+  objects = [
+    [Node, &quot;Node interface object&quot;],
+    [Node.prototype, &quot;Node prototype object&quot;],
+    [document.createElement(&quot;foo&quot;), &quot;Element object&quot;],
+    [document.createTextNode(&quot;bar&quot;), &quot;Text object&quot;]
+  ]
+})
+testConstants(objects, [
+  [&quot;ELEMENT_NODE&quot;, 1],
+  [&quot;ATTRIBUTE_NODE&quot;, 2],
+  [&quot;TEXT_NODE&quot;, 3],
+  [&quot;CDATA_SECTION_NODE&quot;, 4],
+  [&quot;ENTITY_REFERENCE_NODE&quot;, 5],
+  [&quot;ENTITY_NODE&quot;, 6],
+  [&quot;PROCESSING_INSTRUCTION_NODE&quot;, 7],
+  [&quot;COMMENT_NODE&quot;, 8],
+  [&quot;DOCUMENT_NODE&quot;, 9],
+  [&quot;DOCUMENT_TYPE_NODE&quot;, 10],
+  [&quot;DOCUMENT_FRAGMENT_NODE&quot;, 11],
+  [&quot;NOTATION_NODE&quot;, 12]
+], &quot;nodeType&quot;)
+testConstants(objects, [
+  [&quot;DOCUMENT_POSITION_DISCONNECTED&quot;, 0x01],
+  [&quot;DOCUMENT_POSITION_PRECEDING&quot;, 0x02],
+  [&quot;DOCUMENT_POSITION_FOLLOWING&quot;, 0x04],
+  [&quot;DOCUMENT_POSITION_CONTAINS&quot;, 0x08],
+  [&quot;DOCUMENT_POSITION_CONTAINED_BY&quot;, 0x10],
+  [&quot;DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC&quot;, 0x20]
+], &quot;createDocumentPosition&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodecontainsexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodecontainsexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-contains-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,1408 @@
</span><ins>+
+PASS paras[0].contains(null) 
+PASS paras[0].compareDocumentPosition(paras[0]) 
+PASS paras[0].compareDocumentPosition(paras[0].firstChild) 
+PASS paras[0].compareDocumentPosition(paras[1].firstChild) 
+PASS paras[0].compareDocumentPosition(foreignPara1) 
+PASS paras[0].compareDocumentPosition(foreignPara1.firstChild) 
+PASS paras[0].compareDocumentPosition(detachedPara1) 
+PASS paras[0].compareDocumentPosition(detachedPara1.firstChild) 
+PASS paras[0].compareDocumentPosition(document) 
+PASS paras[0].compareDocumentPosition(detachedDiv) 
+PASS paras[0].compareDocumentPosition(foreignDoc) 
+PASS paras[0].compareDocumentPosition(foreignPara2) 
+PASS paras[0].compareDocumentPosition(xmlDoc) 
+PASS paras[0].compareDocumentPosition(xmlElement) 
+PASS paras[0].compareDocumentPosition(detachedTextNode) 
+PASS paras[0].compareDocumentPosition(foreignTextNode) 
+PASS paras[0].compareDocumentPosition(processingInstruction) 
+PASS paras[0].compareDocumentPosition(detachedProcessingInstruction) 
+PASS paras[0].compareDocumentPosition(comment) 
+PASS paras[0].compareDocumentPosition(detachedComment) 
+PASS paras[0].compareDocumentPosition(docfrag) 
+PASS paras[0].compareDocumentPosition(doctype) 
+PASS paras[0].compareDocumentPosition(foreignDoctype) 
+PASS paras[0].compareDocumentPosition(paras[1]) 
+PASS paras[0].compareDocumentPosition(detachedPara2) 
+PASS paras[0].compareDocumentPosition(detachedPara2.firstChild) 
+PASS paras[0].compareDocumentPosition(testDiv) 
+PASS paras[0].compareDocumentPosition(detachedXmlElement) 
+PASS paras[0].compareDocumentPosition(detachedForeignTextNode) 
+PASS paras[0].compareDocumentPosition(xmlTextNode) 
+PASS paras[0].compareDocumentPosition(detachedXmlTextNode) 
+PASS paras[0].compareDocumentPosition(xmlComment) 
+PASS paras[0].compareDocumentPosition(foreignComment) 
+PASS paras[0].compareDocumentPosition(detachedForeignComment) 
+PASS paras[0].compareDocumentPosition(detachedXmlComment) 
+PASS paras[0].compareDocumentPosition(foreignDocfrag) 
+PASS paras[0].compareDocumentPosition(xmlDocfrag) 
+PASS paras[0].compareDocumentPosition(xmlDoctype) 
+PASS paras[0].firstChild.contains(null) 
+PASS paras[0].firstChild.compareDocumentPosition(paras[0]) 
+PASS paras[0].firstChild.compareDocumentPosition(paras[0].firstChild) 
+PASS paras[0].firstChild.compareDocumentPosition(paras[1].firstChild) 
+PASS paras[0].firstChild.compareDocumentPosition(foreignPara1) 
+PASS paras[0].firstChild.compareDocumentPosition(foreignPara1.firstChild) 
+PASS paras[0].firstChild.compareDocumentPosition(detachedPara1) 
+PASS paras[0].firstChild.compareDocumentPosition(detachedPara1.firstChild) 
+PASS paras[0].firstChild.compareDocumentPosition(document) 
+PASS paras[0].firstChild.compareDocumentPosition(detachedDiv) 
+PASS paras[0].firstChild.compareDocumentPosition(foreignDoc) 
+PASS paras[0].firstChild.compareDocumentPosition(foreignPara2) 
+PASS paras[0].firstChild.compareDocumentPosition(xmlDoc) 
+PASS paras[0].firstChild.compareDocumentPosition(xmlElement) 
+PASS paras[0].firstChild.compareDocumentPosition(detachedTextNode) 
+PASS paras[0].firstChild.compareDocumentPosition(foreignTextNode) 
+PASS paras[0].firstChild.compareDocumentPosition(processingInstruction) 
+PASS paras[0].firstChild.compareDocumentPosition(detachedProcessingInstruction) 
+PASS paras[0].firstChild.compareDocumentPosition(comment) 
+PASS paras[0].firstChild.compareDocumentPosition(detachedComment) 
+PASS paras[0].firstChild.compareDocumentPosition(docfrag) 
+PASS paras[0].firstChild.compareDocumentPosition(doctype) 
+PASS paras[0].firstChild.compareDocumentPosition(foreignDoctype) 
+PASS paras[0].firstChild.compareDocumentPosition(paras[1]) 
+PASS paras[0].firstChild.compareDocumentPosition(detachedPara2) 
+PASS paras[0].firstChild.compareDocumentPosition(detachedPara2.firstChild) 
+PASS paras[0].firstChild.compareDocumentPosition(testDiv) 
+PASS paras[0].firstChild.compareDocumentPosition(detachedXmlElement) 
+PASS paras[0].firstChild.compareDocumentPosition(detachedForeignTextNode) 
+PASS paras[0].firstChild.compareDocumentPosition(xmlTextNode) 
+PASS paras[0].firstChild.compareDocumentPosition(detachedXmlTextNode) 
+PASS paras[0].firstChild.compareDocumentPosition(xmlComment) 
+PASS paras[0].firstChild.compareDocumentPosition(foreignComment) 
+PASS paras[0].firstChild.compareDocumentPosition(detachedForeignComment) 
+PASS paras[0].firstChild.compareDocumentPosition(detachedXmlComment) 
+PASS paras[0].firstChild.compareDocumentPosition(foreignDocfrag) 
+PASS paras[0].firstChild.compareDocumentPosition(xmlDocfrag) 
+PASS paras[0].firstChild.compareDocumentPosition(xmlDoctype) 
+PASS paras[1].firstChild.contains(null) 
+PASS paras[1].firstChild.compareDocumentPosition(paras[0]) 
+PASS paras[1].firstChild.compareDocumentPosition(paras[0].firstChild) 
+PASS paras[1].firstChild.compareDocumentPosition(paras[1].firstChild) 
+PASS paras[1].firstChild.compareDocumentPosition(foreignPara1) 
+PASS paras[1].firstChild.compareDocumentPosition(foreignPara1.firstChild) 
+PASS paras[1].firstChild.compareDocumentPosition(detachedPara1) 
+PASS paras[1].firstChild.compareDocumentPosition(detachedPara1.firstChild) 
+PASS paras[1].firstChild.compareDocumentPosition(document) 
+PASS paras[1].firstChild.compareDocumentPosition(detachedDiv) 
+PASS paras[1].firstChild.compareDocumentPosition(foreignDoc) 
+PASS paras[1].firstChild.compareDocumentPosition(foreignPara2) 
+PASS paras[1].firstChild.compareDocumentPosition(xmlDoc) 
+PASS paras[1].firstChild.compareDocumentPosition(xmlElement) 
+PASS paras[1].firstChild.compareDocumentPosition(detachedTextNode) 
+PASS paras[1].firstChild.compareDocumentPosition(foreignTextNode) 
+PASS paras[1].firstChild.compareDocumentPosition(processingInstruction) 
+PASS paras[1].firstChild.compareDocumentPosition(detachedProcessingInstruction) 
+PASS paras[1].firstChild.compareDocumentPosition(comment) 
+PASS paras[1].firstChild.compareDocumentPosition(detachedComment) 
+PASS paras[1].firstChild.compareDocumentPosition(docfrag) 
+PASS paras[1].firstChild.compareDocumentPosition(doctype) 
+PASS paras[1].firstChild.compareDocumentPosition(foreignDoctype) 
+PASS paras[1].firstChild.compareDocumentPosition(paras[1]) 
+PASS paras[1].firstChild.compareDocumentPosition(detachedPara2) 
+PASS paras[1].firstChild.compareDocumentPosition(detachedPara2.firstChild) 
+PASS paras[1].firstChild.compareDocumentPosition(testDiv) 
+PASS paras[1].firstChild.compareDocumentPosition(detachedXmlElement) 
+PASS paras[1].firstChild.compareDocumentPosition(detachedForeignTextNode) 
+PASS paras[1].firstChild.compareDocumentPosition(xmlTextNode) 
+PASS paras[1].firstChild.compareDocumentPosition(detachedXmlTextNode) 
+PASS paras[1].firstChild.compareDocumentPosition(xmlComment) 
+PASS paras[1].firstChild.compareDocumentPosition(foreignComment) 
+PASS paras[1].firstChild.compareDocumentPosition(detachedForeignComment) 
+PASS paras[1].firstChild.compareDocumentPosition(detachedXmlComment) 
+PASS paras[1].firstChild.compareDocumentPosition(foreignDocfrag) 
+PASS paras[1].firstChild.compareDocumentPosition(xmlDocfrag) 
+PASS paras[1].firstChild.compareDocumentPosition(xmlDoctype) 
+PASS foreignPara1.contains(null) 
+PASS foreignPara1.compareDocumentPosition(paras[0]) 
+PASS foreignPara1.compareDocumentPosition(paras[0].firstChild) 
+PASS foreignPara1.compareDocumentPosition(paras[1].firstChild) 
+PASS foreignPara1.compareDocumentPosition(foreignPara1) 
+PASS foreignPara1.compareDocumentPosition(foreignPara1.firstChild) 
+PASS foreignPara1.compareDocumentPosition(detachedPara1) 
+PASS foreignPara1.compareDocumentPosition(detachedPara1.firstChild) 
+PASS foreignPara1.compareDocumentPosition(document) 
+PASS foreignPara1.compareDocumentPosition(detachedDiv) 
+PASS foreignPara1.compareDocumentPosition(foreignDoc) 
+PASS foreignPara1.compareDocumentPosition(foreignPara2) 
+PASS foreignPara1.compareDocumentPosition(xmlDoc) 
+PASS foreignPara1.compareDocumentPosition(xmlElement) 
+PASS foreignPara1.compareDocumentPosition(detachedTextNode) 
+PASS foreignPara1.compareDocumentPosition(foreignTextNode) 
+PASS foreignPara1.compareDocumentPosition(processingInstruction) 
+PASS foreignPara1.compareDocumentPosition(detachedProcessingInstruction) 
+PASS foreignPara1.compareDocumentPosition(comment) 
+PASS foreignPara1.compareDocumentPosition(detachedComment) 
+PASS foreignPara1.compareDocumentPosition(docfrag) 
+PASS foreignPara1.compareDocumentPosition(doctype) 
+PASS foreignPara1.compareDocumentPosition(foreignDoctype) 
+PASS foreignPara1.compareDocumentPosition(paras[1]) 
+PASS foreignPara1.compareDocumentPosition(detachedPara2) 
+PASS foreignPara1.compareDocumentPosition(detachedPara2.firstChild) 
+PASS foreignPara1.compareDocumentPosition(testDiv) 
+PASS foreignPara1.compareDocumentPosition(detachedXmlElement) 
+PASS foreignPara1.compareDocumentPosition(detachedForeignTextNode) 
+PASS foreignPara1.compareDocumentPosition(xmlTextNode) 
+PASS foreignPara1.compareDocumentPosition(detachedXmlTextNode) 
+PASS foreignPara1.compareDocumentPosition(xmlComment) 
+PASS foreignPara1.compareDocumentPosition(foreignComment) 
+PASS foreignPara1.compareDocumentPosition(detachedForeignComment) 
+PASS foreignPara1.compareDocumentPosition(detachedXmlComment) 
+PASS foreignPara1.compareDocumentPosition(foreignDocfrag) 
+PASS foreignPara1.compareDocumentPosition(xmlDocfrag) 
+PASS foreignPara1.compareDocumentPosition(xmlDoctype) 
+PASS foreignPara1.firstChild.contains(null) 
+PASS foreignPara1.firstChild.compareDocumentPosition(paras[0]) 
+PASS foreignPara1.firstChild.compareDocumentPosition(paras[0].firstChild) 
+PASS foreignPara1.firstChild.compareDocumentPosition(paras[1].firstChild) 
+PASS foreignPara1.firstChild.compareDocumentPosition(foreignPara1) 
+PASS foreignPara1.firstChild.compareDocumentPosition(foreignPara1.firstChild) 
+PASS foreignPara1.firstChild.compareDocumentPosition(detachedPara1) 
+PASS foreignPara1.firstChild.compareDocumentPosition(detachedPara1.firstChild) 
+PASS foreignPara1.firstChild.compareDocumentPosition(document) 
+PASS foreignPara1.firstChild.compareDocumentPosition(detachedDiv) 
+PASS foreignPara1.firstChild.compareDocumentPosition(foreignDoc) 
+PASS foreignPara1.firstChild.compareDocumentPosition(foreignPara2) 
+PASS foreignPara1.firstChild.compareDocumentPosition(xmlDoc) 
+PASS foreignPara1.firstChild.compareDocumentPosition(xmlElement) 
+PASS foreignPara1.firstChild.compareDocumentPosition(detachedTextNode) 
+PASS foreignPara1.firstChild.compareDocumentPosition(foreignTextNode) 
+PASS foreignPara1.firstChild.compareDocumentPosition(processingInstruction) 
+PASS foreignPara1.firstChild.compareDocumentPosition(detachedProcessingInstruction) 
+PASS foreignPara1.firstChild.compareDocumentPosition(comment) 
+PASS foreignPara1.firstChild.compareDocumentPosition(detachedComment) 
+PASS foreignPara1.firstChild.compareDocumentPosition(docfrag) 
+PASS foreignPara1.firstChild.compareDocumentPosition(doctype) 
+PASS foreignPara1.firstChild.compareDocumentPosition(foreignDoctype) 
+PASS foreignPara1.firstChild.compareDocumentPosition(paras[1]) 
+PASS foreignPara1.firstChild.compareDocumentPosition(detachedPara2) 
+PASS foreignPara1.firstChild.compareDocumentPosition(detachedPara2.firstChild) 
+PASS foreignPara1.firstChild.compareDocumentPosition(testDiv) 
+PASS foreignPara1.firstChild.compareDocumentPosition(detachedXmlElement) 
+PASS foreignPara1.firstChild.compareDocumentPosition(detachedForeignTextNode) 
+PASS foreignPara1.firstChild.compareDocumentPosition(xmlTextNode) 
+PASS foreignPara1.firstChild.compareDocumentPosition(detachedXmlTextNode) 
+PASS foreignPara1.firstChild.compareDocumentPosition(xmlComment) 
+PASS foreignPara1.firstChild.compareDocumentPosition(foreignComment) 
+PASS foreignPara1.firstChild.compareDocumentPosition(detachedForeignComment) 
+PASS foreignPara1.firstChild.compareDocumentPosition(detachedXmlComment) 
+PASS foreignPara1.firstChild.compareDocumentPosition(foreignDocfrag) 
+PASS foreignPara1.firstChild.compareDocumentPosition(xmlDocfrag) 
+PASS foreignPara1.firstChild.compareDocumentPosition(xmlDoctype) 
+PASS detachedPara1.contains(null) 
+PASS detachedPara1.compareDocumentPosition(paras[0]) 
+PASS detachedPara1.compareDocumentPosition(paras[0].firstChild) 
+PASS detachedPara1.compareDocumentPosition(paras[1].firstChild) 
+PASS detachedPara1.compareDocumentPosition(foreignPara1) 
+PASS detachedPara1.compareDocumentPosition(foreignPara1.firstChild) 
+PASS detachedPara1.compareDocumentPosition(detachedPara1) 
+PASS detachedPara1.compareDocumentPosition(detachedPara1.firstChild) 
+PASS detachedPara1.compareDocumentPosition(document) 
+PASS detachedPara1.compareDocumentPosition(detachedDiv) 
+PASS detachedPara1.compareDocumentPosition(foreignDoc) 
+PASS detachedPara1.compareDocumentPosition(foreignPara2) 
+PASS detachedPara1.compareDocumentPosition(xmlDoc) 
+PASS detachedPara1.compareDocumentPosition(xmlElement) 
+PASS detachedPara1.compareDocumentPosition(detachedTextNode) 
+PASS detachedPara1.compareDocumentPosition(foreignTextNode) 
+PASS detachedPara1.compareDocumentPosition(processingInstruction) 
+PASS detachedPara1.compareDocumentPosition(detachedProcessingInstruction) 
+PASS detachedPara1.compareDocumentPosition(comment) 
+PASS detachedPara1.compareDocumentPosition(detachedComment) 
+PASS detachedPara1.compareDocumentPosition(docfrag) 
+PASS detachedPara1.compareDocumentPosition(doctype) 
+PASS detachedPara1.compareDocumentPosition(foreignDoctype) 
+PASS detachedPara1.compareDocumentPosition(paras[1]) 
+PASS detachedPara1.compareDocumentPosition(detachedPara2) 
+PASS detachedPara1.compareDocumentPosition(detachedPara2.firstChild) 
+PASS detachedPara1.compareDocumentPosition(testDiv) 
+PASS detachedPara1.compareDocumentPosition(detachedXmlElement) 
+PASS detachedPara1.compareDocumentPosition(detachedForeignTextNode) 
+PASS detachedPara1.compareDocumentPosition(xmlTextNode) 
+PASS detachedPara1.compareDocumentPosition(detachedXmlTextNode) 
+PASS detachedPara1.compareDocumentPosition(xmlComment) 
+PASS detachedPara1.compareDocumentPosition(foreignComment) 
+PASS detachedPara1.compareDocumentPosition(detachedForeignComment) 
+PASS detachedPara1.compareDocumentPosition(detachedXmlComment) 
+PASS detachedPara1.compareDocumentPosition(foreignDocfrag) 
+PASS detachedPara1.compareDocumentPosition(xmlDocfrag) 
+PASS detachedPara1.compareDocumentPosition(xmlDoctype) 
+PASS detachedPara1.firstChild.contains(null) 
+PASS detachedPara1.firstChild.compareDocumentPosition(paras[0]) 
+PASS detachedPara1.firstChild.compareDocumentPosition(paras[0].firstChild) 
+PASS detachedPara1.firstChild.compareDocumentPosition(paras[1].firstChild) 
+PASS detachedPara1.firstChild.compareDocumentPosition(foreignPara1) 
+PASS detachedPara1.firstChild.compareDocumentPosition(foreignPara1.firstChild) 
+PASS detachedPara1.firstChild.compareDocumentPosition(detachedPara1) 
+PASS detachedPara1.firstChild.compareDocumentPosition(detachedPara1.firstChild) 
+PASS detachedPara1.firstChild.compareDocumentPosition(document) 
+PASS detachedPara1.firstChild.compareDocumentPosition(detachedDiv) 
+PASS detachedPara1.firstChild.compareDocumentPosition(foreignDoc) 
+PASS detachedPara1.firstChild.compareDocumentPosition(foreignPara2) 
+PASS detachedPara1.firstChild.compareDocumentPosition(xmlDoc) 
+PASS detachedPara1.firstChild.compareDocumentPosition(xmlElement) 
+PASS detachedPara1.firstChild.compareDocumentPosition(detachedTextNode) 
+PASS detachedPara1.firstChild.compareDocumentPosition(foreignTextNode) 
+PASS detachedPara1.firstChild.compareDocumentPosition(processingInstruction) 
+PASS detachedPara1.firstChild.compareDocumentPosition(detachedProcessingInstruction) 
+PASS detachedPara1.firstChild.compareDocumentPosition(comment) 
+PASS detachedPara1.firstChild.compareDocumentPosition(detachedComment) 
+PASS detachedPara1.firstChild.compareDocumentPosition(docfrag) 
+PASS detachedPara1.firstChild.compareDocumentPosition(doctype) 
+PASS detachedPara1.firstChild.compareDocumentPosition(foreignDoctype) 
+PASS detachedPara1.firstChild.compareDocumentPosition(paras[1]) 
+PASS detachedPara1.firstChild.compareDocumentPosition(detachedPara2) 
+PASS detachedPara1.firstChild.compareDocumentPosition(detachedPara2.firstChild) 
+PASS detachedPara1.firstChild.compareDocumentPosition(testDiv) 
+PASS detachedPara1.firstChild.compareDocumentPosition(detachedXmlElement) 
+PASS detachedPara1.firstChild.compareDocumentPosition(detachedForeignTextNode) 
+PASS detachedPara1.firstChild.compareDocumentPosition(xmlTextNode) 
+PASS detachedPara1.firstChild.compareDocumentPosition(detachedXmlTextNode) 
+PASS detachedPara1.firstChild.compareDocumentPosition(xmlComment) 
+PASS detachedPara1.firstChild.compareDocumentPosition(foreignComment) 
+PASS detachedPara1.firstChild.compareDocumentPosition(detachedForeignComment) 
+PASS detachedPara1.firstChild.compareDocumentPosition(detachedXmlComment) 
+PASS detachedPara1.firstChild.compareDocumentPosition(foreignDocfrag) 
+PASS detachedPara1.firstChild.compareDocumentPosition(xmlDocfrag) 
+PASS detachedPara1.firstChild.compareDocumentPosition(xmlDoctype) 
+PASS document.contains(null) 
+PASS document.compareDocumentPosition(paras[0]) 
+PASS document.compareDocumentPosition(paras[0].firstChild) 
+PASS document.compareDocumentPosition(paras[1].firstChild) 
+PASS document.compareDocumentPosition(foreignPara1) 
+PASS document.compareDocumentPosition(foreignPara1.firstChild) 
+PASS document.compareDocumentPosition(detachedPara1) 
+PASS document.compareDocumentPosition(detachedPara1.firstChild) 
+PASS document.compareDocumentPosition(document) 
+PASS document.compareDocumentPosition(detachedDiv) 
+PASS document.compareDocumentPosition(foreignDoc) 
+PASS document.compareDocumentPosition(foreignPara2) 
+PASS document.compareDocumentPosition(xmlDoc) 
+PASS document.compareDocumentPosition(xmlElement) 
+PASS document.compareDocumentPosition(detachedTextNode) 
+PASS document.compareDocumentPosition(foreignTextNode) 
+PASS document.compareDocumentPosition(processingInstruction) 
+PASS document.compareDocumentPosition(detachedProcessingInstruction) 
+PASS document.compareDocumentPosition(comment) 
+PASS document.compareDocumentPosition(detachedComment) 
+PASS document.compareDocumentPosition(docfrag) 
+PASS document.compareDocumentPosition(doctype) 
+PASS document.compareDocumentPosition(foreignDoctype) 
+PASS document.compareDocumentPosition(paras[1]) 
+PASS document.compareDocumentPosition(detachedPara2) 
+PASS document.compareDocumentPosition(detachedPara2.firstChild) 
+PASS document.compareDocumentPosition(testDiv) 
+PASS document.compareDocumentPosition(detachedXmlElement) 
+PASS document.compareDocumentPosition(detachedForeignTextNode) 
+PASS document.compareDocumentPosition(xmlTextNode) 
+PASS document.compareDocumentPosition(detachedXmlTextNode) 
+PASS document.compareDocumentPosition(xmlComment) 
+PASS document.compareDocumentPosition(foreignComment) 
+PASS document.compareDocumentPosition(detachedForeignComment) 
+PASS document.compareDocumentPosition(detachedXmlComment) 
+PASS document.compareDocumentPosition(foreignDocfrag) 
+PASS document.compareDocumentPosition(xmlDocfrag) 
+PASS document.compareDocumentPosition(xmlDoctype) 
+PASS detachedDiv.contains(null) 
+PASS detachedDiv.compareDocumentPosition(paras[0]) 
+PASS detachedDiv.compareDocumentPosition(paras[0].firstChild) 
+PASS detachedDiv.compareDocumentPosition(paras[1].firstChild) 
+PASS detachedDiv.compareDocumentPosition(foreignPara1) 
+PASS detachedDiv.compareDocumentPosition(foreignPara1.firstChild) 
+PASS detachedDiv.compareDocumentPosition(detachedPara1) 
+PASS detachedDiv.compareDocumentPosition(detachedPara1.firstChild) 
+PASS detachedDiv.compareDocumentPosition(document) 
+PASS detachedDiv.compareDocumentPosition(detachedDiv) 
+PASS detachedDiv.compareDocumentPosition(foreignDoc) 
+PASS detachedDiv.compareDocumentPosition(foreignPara2) 
+PASS detachedDiv.compareDocumentPosition(xmlDoc) 
+PASS detachedDiv.compareDocumentPosition(xmlElement) 
+PASS detachedDiv.compareDocumentPosition(detachedTextNode) 
+PASS detachedDiv.compareDocumentPosition(foreignTextNode) 
+PASS detachedDiv.compareDocumentPosition(processingInstruction) 
+PASS detachedDiv.compareDocumentPosition(detachedProcessingInstruction) 
+PASS detachedDiv.compareDocumentPosition(comment) 
+PASS detachedDiv.compareDocumentPosition(detachedComment) 
+PASS detachedDiv.compareDocumentPosition(docfrag) 
+PASS detachedDiv.compareDocumentPosition(doctype) 
+PASS detachedDiv.compareDocumentPosition(foreignDoctype) 
+PASS detachedDiv.compareDocumentPosition(paras[1]) 
+PASS detachedDiv.compareDocumentPosition(detachedPara2) 
+PASS detachedDiv.compareDocumentPosition(detachedPara2.firstChild) 
+PASS detachedDiv.compareDocumentPosition(testDiv) 
+PASS detachedDiv.compareDocumentPosition(detachedXmlElement) 
+PASS detachedDiv.compareDocumentPosition(detachedForeignTextNode) 
+PASS detachedDiv.compareDocumentPosition(xmlTextNode) 
+PASS detachedDiv.compareDocumentPosition(detachedXmlTextNode) 
+PASS detachedDiv.compareDocumentPosition(xmlComment) 
+PASS detachedDiv.compareDocumentPosition(foreignComment) 
+PASS detachedDiv.compareDocumentPosition(detachedForeignComment) 
+PASS detachedDiv.compareDocumentPosition(detachedXmlComment) 
+PASS detachedDiv.compareDocumentPosition(foreignDocfrag) 
+PASS detachedDiv.compareDocumentPosition(xmlDocfrag) 
+PASS detachedDiv.compareDocumentPosition(xmlDoctype) 
+PASS foreignDoc.contains(null) 
+PASS foreignDoc.compareDocumentPosition(paras[0]) 
+PASS foreignDoc.compareDocumentPosition(paras[0].firstChild) 
+PASS foreignDoc.compareDocumentPosition(paras[1].firstChild) 
+PASS foreignDoc.compareDocumentPosition(foreignPara1) 
+PASS foreignDoc.compareDocumentPosition(foreignPara1.firstChild) 
+PASS foreignDoc.compareDocumentPosition(detachedPara1) 
+PASS foreignDoc.compareDocumentPosition(detachedPara1.firstChild) 
+PASS foreignDoc.compareDocumentPosition(document) 
+PASS foreignDoc.compareDocumentPosition(detachedDiv) 
+PASS foreignDoc.compareDocumentPosition(foreignDoc) 
+PASS foreignDoc.compareDocumentPosition(foreignPara2) 
+PASS foreignDoc.compareDocumentPosition(xmlDoc) 
+PASS foreignDoc.compareDocumentPosition(xmlElement) 
+PASS foreignDoc.compareDocumentPosition(detachedTextNode) 
+PASS foreignDoc.compareDocumentPosition(foreignTextNode) 
+PASS foreignDoc.compareDocumentPosition(processingInstruction) 
+PASS foreignDoc.compareDocumentPosition(detachedProcessingInstruction) 
+PASS foreignDoc.compareDocumentPosition(comment) 
+PASS foreignDoc.compareDocumentPosition(detachedComment) 
+PASS foreignDoc.compareDocumentPosition(docfrag) 
+PASS foreignDoc.compareDocumentPosition(doctype) 
+PASS foreignDoc.compareDocumentPosition(foreignDoctype) 
+PASS foreignDoc.compareDocumentPosition(paras[1]) 
+PASS foreignDoc.compareDocumentPosition(detachedPara2) 
+PASS foreignDoc.compareDocumentPosition(detachedPara2.firstChild) 
+PASS foreignDoc.compareDocumentPosition(testDiv) 
+PASS foreignDoc.compareDocumentPosition(detachedXmlElement) 
+PASS foreignDoc.compareDocumentPosition(detachedForeignTextNode) 
+PASS foreignDoc.compareDocumentPosition(xmlTextNode) 
+PASS foreignDoc.compareDocumentPosition(detachedXmlTextNode) 
+PASS foreignDoc.compareDocumentPosition(xmlComment) 
+PASS foreignDoc.compareDocumentPosition(foreignComment) 
+PASS foreignDoc.compareDocumentPosition(detachedForeignComment) 
+PASS foreignDoc.compareDocumentPosition(detachedXmlComment) 
+PASS foreignDoc.compareDocumentPosition(foreignDocfrag) 
+PASS foreignDoc.compareDocumentPosition(xmlDocfrag) 
+PASS foreignDoc.compareDocumentPosition(xmlDoctype) 
+PASS foreignPara2.contains(null) 
+PASS foreignPara2.compareDocumentPosition(paras[0]) 
+PASS foreignPara2.compareDocumentPosition(paras[0].firstChild) 
+PASS foreignPara2.compareDocumentPosition(paras[1].firstChild) 
+PASS foreignPara2.compareDocumentPosition(foreignPara1) 
+PASS foreignPara2.compareDocumentPosition(foreignPara1.firstChild) 
+PASS foreignPara2.compareDocumentPosition(detachedPara1) 
+PASS foreignPara2.compareDocumentPosition(detachedPara1.firstChild) 
+PASS foreignPara2.compareDocumentPosition(document) 
+PASS foreignPara2.compareDocumentPosition(detachedDiv) 
+PASS foreignPara2.compareDocumentPosition(foreignDoc) 
+PASS foreignPara2.compareDocumentPosition(foreignPara2) 
+PASS foreignPara2.compareDocumentPosition(xmlDoc) 
+PASS foreignPara2.compareDocumentPosition(xmlElement) 
+PASS foreignPara2.compareDocumentPosition(detachedTextNode) 
+PASS foreignPara2.compareDocumentPosition(foreignTextNode) 
+PASS foreignPara2.compareDocumentPosition(processingInstruction) 
+PASS foreignPara2.compareDocumentPosition(detachedProcessingInstruction) 
+PASS foreignPara2.compareDocumentPosition(comment) 
+PASS foreignPara2.compareDocumentPosition(detachedComment) 
+PASS foreignPara2.compareDocumentPosition(docfrag) 
+PASS foreignPara2.compareDocumentPosition(doctype) 
+PASS foreignPara2.compareDocumentPosition(foreignDoctype) 
+PASS foreignPara2.compareDocumentPosition(paras[1]) 
+PASS foreignPara2.compareDocumentPosition(detachedPara2) 
+PASS foreignPara2.compareDocumentPosition(detachedPara2.firstChild) 
+PASS foreignPara2.compareDocumentPosition(testDiv) 
+PASS foreignPara2.compareDocumentPosition(detachedXmlElement) 
+PASS foreignPara2.compareDocumentPosition(detachedForeignTextNode) 
+PASS foreignPara2.compareDocumentPosition(xmlTextNode) 
+PASS foreignPara2.compareDocumentPosition(detachedXmlTextNode) 
+PASS foreignPara2.compareDocumentPosition(xmlComment) 
+PASS foreignPara2.compareDocumentPosition(foreignComment) 
+PASS foreignPara2.compareDocumentPosition(detachedForeignComment) 
+PASS foreignPara2.compareDocumentPosition(detachedXmlComment) 
+PASS foreignPara2.compareDocumentPosition(foreignDocfrag) 
+PASS foreignPara2.compareDocumentPosition(xmlDocfrag) 
+PASS foreignPara2.compareDocumentPosition(xmlDoctype) 
+PASS xmlDoc.contains(null) 
+PASS xmlDoc.compareDocumentPosition(paras[0]) 
+PASS xmlDoc.compareDocumentPosition(paras[0].firstChild) 
+PASS xmlDoc.compareDocumentPosition(paras[1].firstChild) 
+PASS xmlDoc.compareDocumentPosition(foreignPara1) 
+PASS xmlDoc.compareDocumentPosition(foreignPara1.firstChild) 
+PASS xmlDoc.compareDocumentPosition(detachedPara1) 
+PASS xmlDoc.compareDocumentPosition(detachedPara1.firstChild) 
+PASS xmlDoc.compareDocumentPosition(document) 
+PASS xmlDoc.compareDocumentPosition(detachedDiv) 
+PASS xmlDoc.compareDocumentPosition(foreignDoc) 
+PASS xmlDoc.compareDocumentPosition(foreignPara2) 
+PASS xmlDoc.compareDocumentPosition(xmlDoc) 
+PASS xmlDoc.compareDocumentPosition(xmlElement) 
+PASS xmlDoc.compareDocumentPosition(detachedTextNode) 
+PASS xmlDoc.compareDocumentPosition(foreignTextNode) 
+PASS xmlDoc.compareDocumentPosition(processingInstruction) 
+PASS xmlDoc.compareDocumentPosition(detachedProcessingInstruction) 
+PASS xmlDoc.compareDocumentPosition(comment) 
+PASS xmlDoc.compareDocumentPosition(detachedComment) 
+PASS xmlDoc.compareDocumentPosition(docfrag) 
+PASS xmlDoc.compareDocumentPosition(doctype) 
+PASS xmlDoc.compareDocumentPosition(foreignDoctype) 
+PASS xmlDoc.compareDocumentPosition(paras[1]) 
+PASS xmlDoc.compareDocumentPosition(detachedPara2) 
+PASS xmlDoc.compareDocumentPosition(detachedPara2.firstChild) 
+PASS xmlDoc.compareDocumentPosition(testDiv) 
+PASS xmlDoc.compareDocumentPosition(detachedXmlElement) 
+PASS xmlDoc.compareDocumentPosition(detachedForeignTextNode) 
+PASS xmlDoc.compareDocumentPosition(xmlTextNode) 
+PASS xmlDoc.compareDocumentPosition(detachedXmlTextNode) 
+PASS xmlDoc.compareDocumentPosition(xmlComment) 
+PASS xmlDoc.compareDocumentPosition(foreignComment) 
+PASS xmlDoc.compareDocumentPosition(detachedForeignComment) 
+PASS xmlDoc.compareDocumentPosition(detachedXmlComment) 
+PASS xmlDoc.compareDocumentPosition(foreignDocfrag) 
+PASS xmlDoc.compareDocumentPosition(xmlDocfrag) 
+PASS xmlDoc.compareDocumentPosition(xmlDoctype) 
+PASS xmlElement.contains(null) 
+PASS xmlElement.compareDocumentPosition(paras[0]) 
+PASS xmlElement.compareDocumentPosition(paras[0].firstChild) 
+PASS xmlElement.compareDocumentPosition(paras[1].firstChild) 
+PASS xmlElement.compareDocumentPosition(foreignPara1) 
+PASS xmlElement.compareDocumentPosition(foreignPara1.firstChild) 
+PASS xmlElement.compareDocumentPosition(detachedPara1) 
+PASS xmlElement.compareDocumentPosition(detachedPara1.firstChild) 
+PASS xmlElement.compareDocumentPosition(document) 
+PASS xmlElement.compareDocumentPosition(detachedDiv) 
+PASS xmlElement.compareDocumentPosition(foreignDoc) 
+PASS xmlElement.compareDocumentPosition(foreignPara2) 
+PASS xmlElement.compareDocumentPosition(xmlDoc) 
+PASS xmlElement.compareDocumentPosition(xmlElement) 
+PASS xmlElement.compareDocumentPosition(detachedTextNode) 
+PASS xmlElement.compareDocumentPosition(foreignTextNode) 
+PASS xmlElement.compareDocumentPosition(processingInstruction) 
+PASS xmlElement.compareDocumentPosition(detachedProcessingInstruction) 
+PASS xmlElement.compareDocumentPosition(comment) 
+PASS xmlElement.compareDocumentPosition(detachedComment) 
+PASS xmlElement.compareDocumentPosition(docfrag) 
+PASS xmlElement.compareDocumentPosition(doctype) 
+PASS xmlElement.compareDocumentPosition(foreignDoctype) 
+PASS xmlElement.compareDocumentPosition(paras[1]) 
+PASS xmlElement.compareDocumentPosition(detachedPara2) 
+PASS xmlElement.compareDocumentPosition(detachedPara2.firstChild) 
+PASS xmlElement.compareDocumentPosition(testDiv) 
+PASS xmlElement.compareDocumentPosition(detachedXmlElement) 
+PASS xmlElement.compareDocumentPosition(detachedForeignTextNode) 
+PASS xmlElement.compareDocumentPosition(xmlTextNode) 
+PASS xmlElement.compareDocumentPosition(detachedXmlTextNode) 
+PASS xmlElement.compareDocumentPosition(xmlComment) 
+PASS xmlElement.compareDocumentPosition(foreignComment) 
+PASS xmlElement.compareDocumentPosition(detachedForeignComment) 
+PASS xmlElement.compareDocumentPosition(detachedXmlComment) 
+PASS xmlElement.compareDocumentPosition(foreignDocfrag) 
+PASS xmlElement.compareDocumentPosition(xmlDocfrag) 
+PASS xmlElement.compareDocumentPosition(xmlDoctype) 
+PASS detachedTextNode.contains(null) 
+PASS detachedTextNode.compareDocumentPosition(paras[0]) 
+PASS detachedTextNode.compareDocumentPosition(paras[0].firstChild) 
+PASS detachedTextNode.compareDocumentPosition(paras[1].firstChild) 
+PASS detachedTextNode.compareDocumentPosition(foreignPara1) 
+PASS detachedTextNode.compareDocumentPosition(foreignPara1.firstChild) 
+PASS detachedTextNode.compareDocumentPosition(detachedPara1) 
+PASS detachedTextNode.compareDocumentPosition(detachedPara1.firstChild) 
+PASS detachedTextNode.compareDocumentPosition(document) 
+PASS detachedTextNode.compareDocumentPosition(detachedDiv) 
+PASS detachedTextNode.compareDocumentPosition(foreignDoc) 
+PASS detachedTextNode.compareDocumentPosition(foreignPara2) 
+PASS detachedTextNode.compareDocumentPosition(xmlDoc) 
+PASS detachedTextNode.compareDocumentPosition(xmlElement) 
+PASS detachedTextNode.compareDocumentPosition(detachedTextNode) 
+PASS detachedTextNode.compareDocumentPosition(foreignTextNode) 
+PASS detachedTextNode.compareDocumentPosition(processingInstruction) 
+PASS detachedTextNode.compareDocumentPosition(detachedProcessingInstruction) 
+PASS detachedTextNode.compareDocumentPosition(comment) 
+PASS detachedTextNode.compareDocumentPosition(detachedComment) 
+PASS detachedTextNode.compareDocumentPosition(docfrag) 
+PASS detachedTextNode.compareDocumentPosition(doctype) 
+PASS detachedTextNode.compareDocumentPosition(foreignDoctype) 
+PASS detachedTextNode.compareDocumentPosition(paras[1]) 
+PASS detachedTextNode.compareDocumentPosition(detachedPara2) 
+PASS detachedTextNode.compareDocumentPosition(detachedPara2.firstChild) 
+PASS detachedTextNode.compareDocumentPosition(testDiv) 
+PASS detachedTextNode.compareDocumentPosition(detachedXmlElement) 
+PASS detachedTextNode.compareDocumentPosition(detachedForeignTextNode) 
+PASS detachedTextNode.compareDocumentPosition(xmlTextNode) 
+PASS detachedTextNode.compareDocumentPosition(detachedXmlTextNode) 
+PASS detachedTextNode.compareDocumentPosition(xmlComment) 
+PASS detachedTextNode.compareDocumentPosition(foreignComment) 
+PASS detachedTextNode.compareDocumentPosition(detachedForeignComment) 
+PASS detachedTextNode.compareDocumentPosition(detachedXmlComment) 
+PASS detachedTextNode.compareDocumentPosition(foreignDocfrag) 
+PASS detachedTextNode.compareDocumentPosition(xmlDocfrag) 
+PASS detachedTextNode.compareDocumentPosition(xmlDoctype) 
+PASS foreignTextNode.contains(null) 
+PASS foreignTextNode.compareDocumentPosition(paras[0]) 
+PASS foreignTextNode.compareDocumentPosition(paras[0].firstChild) 
+PASS foreignTextNode.compareDocumentPosition(paras[1].firstChild) 
+PASS foreignTextNode.compareDocumentPosition(foreignPara1) 
+PASS foreignTextNode.compareDocumentPosition(foreignPara1.firstChild) 
+PASS foreignTextNode.compareDocumentPosition(detachedPara1) 
+PASS foreignTextNode.compareDocumentPosition(detachedPara1.firstChild) 
+PASS foreignTextNode.compareDocumentPosition(document) 
+PASS foreignTextNode.compareDocumentPosition(detachedDiv) 
+PASS foreignTextNode.compareDocumentPosition(foreignDoc) 
+PASS foreignTextNode.compareDocumentPosition(foreignPara2) 
+PASS foreignTextNode.compareDocumentPosition(xmlDoc) 
+PASS foreignTextNode.compareDocumentPosition(xmlElement) 
+PASS foreignTextNode.compareDocumentPosition(detachedTextNode) 
+PASS foreignTextNode.compareDocumentPosition(foreignTextNode) 
+PASS foreignTextNode.compareDocumentPosition(processingInstruction) 
+PASS foreignTextNode.compareDocumentPosition(detachedProcessingInstruction) 
+PASS foreignTextNode.compareDocumentPosition(comment) 
+PASS foreignTextNode.compareDocumentPosition(detachedComment) 
+PASS foreignTextNode.compareDocumentPosition(docfrag) 
+PASS foreignTextNode.compareDocumentPosition(doctype) 
+PASS foreignTextNode.compareDocumentPosition(foreignDoctype) 
+PASS foreignTextNode.compareDocumentPosition(paras[1]) 
+PASS foreignTextNode.compareDocumentPosition(detachedPara2) 
+PASS foreignTextNode.compareDocumentPosition(detachedPara2.firstChild) 
+PASS foreignTextNode.compareDocumentPosition(testDiv) 
+PASS foreignTextNode.compareDocumentPosition(detachedXmlElement) 
+PASS foreignTextNode.compareDocumentPosition(detachedForeignTextNode) 
+PASS foreignTextNode.compareDocumentPosition(xmlTextNode) 
+PASS foreignTextNode.compareDocumentPosition(detachedXmlTextNode) 
+PASS foreignTextNode.compareDocumentPosition(xmlComment) 
+PASS foreignTextNode.compareDocumentPosition(foreignComment) 
+PASS foreignTextNode.compareDocumentPosition(detachedForeignComment) 
+PASS foreignTextNode.compareDocumentPosition(detachedXmlComment) 
+PASS foreignTextNode.compareDocumentPosition(foreignDocfrag) 
+PASS foreignTextNode.compareDocumentPosition(xmlDocfrag) 
+PASS foreignTextNode.compareDocumentPosition(xmlDoctype) 
+PASS processingInstruction.contains(null) 
+PASS processingInstruction.compareDocumentPosition(paras[0]) 
+PASS processingInstruction.compareDocumentPosition(paras[0].firstChild) 
+PASS processingInstruction.compareDocumentPosition(paras[1].firstChild) 
+PASS processingInstruction.compareDocumentPosition(foreignPara1) 
+PASS processingInstruction.compareDocumentPosition(foreignPara1.firstChild) 
+PASS processingInstruction.compareDocumentPosition(detachedPara1) 
+PASS processingInstruction.compareDocumentPosition(detachedPara1.firstChild) 
+PASS processingInstruction.compareDocumentPosition(document) 
+PASS processingInstruction.compareDocumentPosition(detachedDiv) 
+PASS processingInstruction.compareDocumentPosition(foreignDoc) 
+PASS processingInstruction.compareDocumentPosition(foreignPara2) 
+PASS processingInstruction.compareDocumentPosition(xmlDoc) 
+PASS processingInstruction.compareDocumentPosition(xmlElement) 
+PASS processingInstruction.compareDocumentPosition(detachedTextNode) 
+PASS processingInstruction.compareDocumentPosition(foreignTextNode) 
+PASS processingInstruction.compareDocumentPosition(processingInstruction) 
+PASS processingInstruction.compareDocumentPosition(detachedProcessingInstruction) 
+PASS processingInstruction.compareDocumentPosition(comment) 
+PASS processingInstruction.compareDocumentPosition(detachedComment) 
+PASS processingInstruction.compareDocumentPosition(docfrag) 
+PASS processingInstruction.compareDocumentPosition(doctype) 
+PASS processingInstruction.compareDocumentPosition(foreignDoctype) 
+PASS processingInstruction.compareDocumentPosition(paras[1]) 
+PASS processingInstruction.compareDocumentPosition(detachedPara2) 
+PASS processingInstruction.compareDocumentPosition(detachedPara2.firstChild) 
+PASS processingInstruction.compareDocumentPosition(testDiv) 
+PASS processingInstruction.compareDocumentPosition(detachedXmlElement) 
+PASS processingInstruction.compareDocumentPosition(detachedForeignTextNode) 
+PASS processingInstruction.compareDocumentPosition(xmlTextNode) 
+PASS processingInstruction.compareDocumentPosition(detachedXmlTextNode) 
+PASS processingInstruction.compareDocumentPosition(xmlComment) 
+PASS processingInstruction.compareDocumentPosition(foreignComment) 
+PASS processingInstruction.compareDocumentPosition(detachedForeignComment) 
+PASS processingInstruction.compareDocumentPosition(detachedXmlComment) 
+PASS processingInstruction.compareDocumentPosition(foreignDocfrag) 
+PASS processingInstruction.compareDocumentPosition(xmlDocfrag) 
+PASS processingInstruction.compareDocumentPosition(xmlDoctype) 
+PASS detachedProcessingInstruction.contains(null) 
+PASS detachedProcessingInstruction.compareDocumentPosition(paras[0]) 
+PASS detachedProcessingInstruction.compareDocumentPosition(paras[0].firstChild) 
+PASS detachedProcessingInstruction.compareDocumentPosition(paras[1].firstChild) 
+PASS detachedProcessingInstruction.compareDocumentPosition(foreignPara1) 
+PASS detachedProcessingInstruction.compareDocumentPosition(foreignPara1.firstChild) 
+PASS detachedProcessingInstruction.compareDocumentPosition(detachedPara1) 
+PASS detachedProcessingInstruction.compareDocumentPosition(detachedPara1.firstChild) 
+PASS detachedProcessingInstruction.compareDocumentPosition(document) 
+PASS detachedProcessingInstruction.compareDocumentPosition(detachedDiv) 
+PASS detachedProcessingInstruction.compareDocumentPosition(foreignDoc) 
+PASS detachedProcessingInstruction.compareDocumentPosition(foreignPara2) 
+PASS detachedProcessingInstruction.compareDocumentPosition(xmlDoc) 
+PASS detachedProcessingInstruction.compareDocumentPosition(xmlElement) 
+PASS detachedProcessingInstruction.compareDocumentPosition(detachedTextNode) 
+PASS detachedProcessingInstruction.compareDocumentPosition(foreignTextNode) 
+PASS detachedProcessingInstruction.compareDocumentPosition(processingInstruction) 
+PASS detachedProcessingInstruction.compareDocumentPosition(detachedProcessingInstruction) 
+PASS detachedProcessingInstruction.compareDocumentPosition(comment) 
+PASS detachedProcessingInstruction.compareDocumentPosition(detachedComment) 
+PASS detachedProcessingInstruction.compareDocumentPosition(docfrag) 
+PASS detachedProcessingInstruction.compareDocumentPosition(doctype) 
+PASS detachedProcessingInstruction.compareDocumentPosition(foreignDoctype) 
+PASS detachedProcessingInstruction.compareDocumentPosition(paras[1]) 
+PASS detachedProcessingInstruction.compareDocumentPosition(detachedPara2) 
+PASS detachedProcessingInstruction.compareDocumentPosition(detachedPara2.firstChild) 
+PASS detachedProcessingInstruction.compareDocumentPosition(testDiv) 
+PASS detachedProcessingInstruction.compareDocumentPosition(detachedXmlElement) 
+PASS detachedProcessingInstruction.compareDocumentPosition(detachedForeignTextNode) 
+PASS detachedProcessingInstruction.compareDocumentPosition(xmlTextNode) 
+PASS detachedProcessingInstruction.compareDocumentPosition(detachedXmlTextNode) 
+PASS detachedProcessingInstruction.compareDocumentPosition(xmlComment) 
+PASS detachedProcessingInstruction.compareDocumentPosition(foreignComment) 
+PASS detachedProcessingInstruction.compareDocumentPosition(detachedForeignComment) 
+PASS detachedProcessingInstruction.compareDocumentPosition(detachedXmlComment) 
+PASS detachedProcessingInstruction.compareDocumentPosition(foreignDocfrag) 
+PASS detachedProcessingInstruction.compareDocumentPosition(xmlDocfrag) 
+PASS detachedProcessingInstruction.compareDocumentPosition(xmlDoctype) 
+PASS comment.contains(null) 
+PASS comment.compareDocumentPosition(paras[0]) 
+PASS comment.compareDocumentPosition(paras[0].firstChild) 
+PASS comment.compareDocumentPosition(paras[1].firstChild) 
+PASS comment.compareDocumentPosition(foreignPara1) 
+PASS comment.compareDocumentPosition(foreignPara1.firstChild) 
+PASS comment.compareDocumentPosition(detachedPara1) 
+PASS comment.compareDocumentPosition(detachedPara1.firstChild) 
+PASS comment.compareDocumentPosition(document) 
+PASS comment.compareDocumentPosition(detachedDiv) 
+PASS comment.compareDocumentPosition(foreignDoc) 
+PASS comment.compareDocumentPosition(foreignPara2) 
+PASS comment.compareDocumentPosition(xmlDoc) 
+PASS comment.compareDocumentPosition(xmlElement) 
+PASS comment.compareDocumentPosition(detachedTextNode) 
+PASS comment.compareDocumentPosition(foreignTextNode) 
+PASS comment.compareDocumentPosition(processingInstruction) 
+PASS comment.compareDocumentPosition(detachedProcessingInstruction) 
+PASS comment.compareDocumentPosition(comment) 
+PASS comment.compareDocumentPosition(detachedComment) 
+PASS comment.compareDocumentPosition(docfrag) 
+PASS comment.compareDocumentPosition(doctype) 
+PASS comment.compareDocumentPosition(foreignDoctype) 
+PASS comment.compareDocumentPosition(paras[1]) 
+PASS comment.compareDocumentPosition(detachedPara2) 
+PASS comment.compareDocumentPosition(detachedPara2.firstChild) 
+PASS comment.compareDocumentPosition(testDiv) 
+PASS comment.compareDocumentPosition(detachedXmlElement) 
+PASS comment.compareDocumentPosition(detachedForeignTextNode) 
+PASS comment.compareDocumentPosition(xmlTextNode) 
+PASS comment.compareDocumentPosition(detachedXmlTextNode) 
+PASS comment.compareDocumentPosition(xmlComment) 
+PASS comment.compareDocumentPosition(foreignComment) 
+PASS comment.compareDocumentPosition(detachedForeignComment) 
+PASS comment.compareDocumentPosition(detachedXmlComment) 
+PASS comment.compareDocumentPosition(foreignDocfrag) 
+PASS comment.compareDocumentPosition(xmlDocfrag) 
+PASS comment.compareDocumentPosition(xmlDoctype) 
+PASS detachedComment.contains(null) 
+PASS detachedComment.compareDocumentPosition(paras[0]) 
+PASS detachedComment.compareDocumentPosition(paras[0].firstChild) 
+PASS detachedComment.compareDocumentPosition(paras[1].firstChild) 
+PASS detachedComment.compareDocumentPosition(foreignPara1) 
+PASS detachedComment.compareDocumentPosition(foreignPara1.firstChild) 
+PASS detachedComment.compareDocumentPosition(detachedPara1) 
+PASS detachedComment.compareDocumentPosition(detachedPara1.firstChild) 
+PASS detachedComment.compareDocumentPosition(document) 
+PASS detachedComment.compareDocumentPosition(detachedDiv) 
+PASS detachedComment.compareDocumentPosition(foreignDoc) 
+PASS detachedComment.compareDocumentPosition(foreignPara2) 
+PASS detachedComment.compareDocumentPosition(xmlDoc) 
+PASS detachedComment.compareDocumentPosition(xmlElement) 
+PASS detachedComment.compareDocumentPosition(detachedTextNode) 
+PASS detachedComment.compareDocumentPosition(foreignTextNode) 
+PASS detachedComment.compareDocumentPosition(processingInstruction) 
+PASS detachedComment.compareDocumentPosition(detachedProcessingInstruction) 
+PASS detachedComment.compareDocumentPosition(comment) 
+PASS detachedComment.compareDocumentPosition(detachedComment) 
+PASS detachedComment.compareDocumentPosition(docfrag) 
+PASS detachedComment.compareDocumentPosition(doctype) 
+PASS detachedComment.compareDocumentPosition(foreignDoctype) 
+PASS detachedComment.compareDocumentPosition(paras[1]) 
+PASS detachedComment.compareDocumentPosition(detachedPara2) 
+PASS detachedComment.compareDocumentPosition(detachedPara2.firstChild) 
+PASS detachedComment.compareDocumentPosition(testDiv) 
+PASS detachedComment.compareDocumentPosition(detachedXmlElement) 
+PASS detachedComment.compareDocumentPosition(detachedForeignTextNode) 
+PASS detachedComment.compareDocumentPosition(xmlTextNode) 
+PASS detachedComment.compareDocumentPosition(detachedXmlTextNode) 
+PASS detachedComment.compareDocumentPosition(xmlComment) 
+PASS detachedComment.compareDocumentPosition(foreignComment) 
+PASS detachedComment.compareDocumentPosition(detachedForeignComment) 
+PASS detachedComment.compareDocumentPosition(detachedXmlComment) 
+PASS detachedComment.compareDocumentPosition(foreignDocfrag) 
+PASS detachedComment.compareDocumentPosition(xmlDocfrag) 
+PASS detachedComment.compareDocumentPosition(xmlDoctype) 
+PASS docfrag.contains(null) 
+PASS docfrag.compareDocumentPosition(paras[0]) 
+PASS docfrag.compareDocumentPosition(paras[0].firstChild) 
+PASS docfrag.compareDocumentPosition(paras[1].firstChild) 
+PASS docfrag.compareDocumentPosition(foreignPara1) 
+PASS docfrag.compareDocumentPosition(foreignPara1.firstChild) 
+PASS docfrag.compareDocumentPosition(detachedPara1) 
+PASS docfrag.compareDocumentPosition(detachedPara1.firstChild) 
+PASS docfrag.compareDocumentPosition(document) 
+PASS docfrag.compareDocumentPosition(detachedDiv) 
+PASS docfrag.compareDocumentPosition(foreignDoc) 
+PASS docfrag.compareDocumentPosition(foreignPara2) 
+PASS docfrag.compareDocumentPosition(xmlDoc) 
+PASS docfrag.compareDocumentPosition(xmlElement) 
+PASS docfrag.compareDocumentPosition(detachedTextNode) 
+PASS docfrag.compareDocumentPosition(foreignTextNode) 
+PASS docfrag.compareDocumentPosition(processingInstruction) 
+PASS docfrag.compareDocumentPosition(detachedProcessingInstruction) 
+PASS docfrag.compareDocumentPosition(comment) 
+PASS docfrag.compareDocumentPosition(detachedComment) 
+PASS docfrag.compareDocumentPosition(docfrag) 
+PASS docfrag.compareDocumentPosition(doctype) 
+PASS docfrag.compareDocumentPosition(foreignDoctype) 
+PASS docfrag.compareDocumentPosition(paras[1]) 
+PASS docfrag.compareDocumentPosition(detachedPara2) 
+PASS docfrag.compareDocumentPosition(detachedPara2.firstChild) 
+PASS docfrag.compareDocumentPosition(testDiv) 
+PASS docfrag.compareDocumentPosition(detachedXmlElement) 
+PASS docfrag.compareDocumentPosition(detachedForeignTextNode) 
+PASS docfrag.compareDocumentPosition(xmlTextNode) 
+PASS docfrag.compareDocumentPosition(detachedXmlTextNode) 
+PASS docfrag.compareDocumentPosition(xmlComment) 
+PASS docfrag.compareDocumentPosition(foreignComment) 
+PASS docfrag.compareDocumentPosition(detachedForeignComment) 
+PASS docfrag.compareDocumentPosition(detachedXmlComment) 
+PASS docfrag.compareDocumentPosition(foreignDocfrag) 
+PASS docfrag.compareDocumentPosition(xmlDocfrag) 
+PASS docfrag.compareDocumentPosition(xmlDoctype) 
+PASS doctype.contains(null) 
+PASS doctype.compareDocumentPosition(paras[0]) 
+PASS doctype.compareDocumentPosition(paras[0].firstChild) 
+PASS doctype.compareDocumentPosition(paras[1].firstChild) 
+PASS doctype.compareDocumentPosition(foreignPara1) 
+PASS doctype.compareDocumentPosition(foreignPara1.firstChild) 
+PASS doctype.compareDocumentPosition(detachedPara1) 
+PASS doctype.compareDocumentPosition(detachedPara1.firstChild) 
+PASS doctype.compareDocumentPosition(document) 
+PASS doctype.compareDocumentPosition(detachedDiv) 
+PASS doctype.compareDocumentPosition(foreignDoc) 
+PASS doctype.compareDocumentPosition(foreignPara2) 
+PASS doctype.compareDocumentPosition(xmlDoc) 
+PASS doctype.compareDocumentPosition(xmlElement) 
+PASS doctype.compareDocumentPosition(detachedTextNode) 
+PASS doctype.compareDocumentPosition(foreignTextNode) 
+PASS doctype.compareDocumentPosition(processingInstruction) 
+PASS doctype.compareDocumentPosition(detachedProcessingInstruction) 
+PASS doctype.compareDocumentPosition(comment) 
+PASS doctype.compareDocumentPosition(detachedComment) 
+PASS doctype.compareDocumentPosition(docfrag) 
+PASS doctype.compareDocumentPosition(doctype) 
+PASS doctype.compareDocumentPosition(foreignDoctype) 
+PASS doctype.compareDocumentPosition(paras[1]) 
+PASS doctype.compareDocumentPosition(detachedPara2) 
+PASS doctype.compareDocumentPosition(detachedPara2.firstChild) 
+PASS doctype.compareDocumentPosition(testDiv) 
+PASS doctype.compareDocumentPosition(detachedXmlElement) 
+PASS doctype.compareDocumentPosition(detachedForeignTextNode) 
+PASS doctype.compareDocumentPosition(xmlTextNode) 
+PASS doctype.compareDocumentPosition(detachedXmlTextNode) 
+PASS doctype.compareDocumentPosition(xmlComment) 
+PASS doctype.compareDocumentPosition(foreignComment) 
+PASS doctype.compareDocumentPosition(detachedForeignComment) 
+PASS doctype.compareDocumentPosition(detachedXmlComment) 
+PASS doctype.compareDocumentPosition(foreignDocfrag) 
+PASS doctype.compareDocumentPosition(xmlDocfrag) 
+PASS doctype.compareDocumentPosition(xmlDoctype) 
+PASS foreignDoctype.contains(null) 
+PASS foreignDoctype.compareDocumentPosition(paras[0]) 
+PASS foreignDoctype.compareDocumentPosition(paras[0].firstChild) 
+PASS foreignDoctype.compareDocumentPosition(paras[1].firstChild) 
+PASS foreignDoctype.compareDocumentPosition(foreignPara1) 
+PASS foreignDoctype.compareDocumentPosition(foreignPara1.firstChild) 
+PASS foreignDoctype.compareDocumentPosition(detachedPara1) 
+PASS foreignDoctype.compareDocumentPosition(detachedPara1.firstChild) 
+PASS foreignDoctype.compareDocumentPosition(document) 
+PASS foreignDoctype.compareDocumentPosition(detachedDiv) 
+PASS foreignDoctype.compareDocumentPosition(foreignDoc) 
+PASS foreignDoctype.compareDocumentPosition(foreignPara2) 
+PASS foreignDoctype.compareDocumentPosition(xmlDoc) 
+PASS foreignDoctype.compareDocumentPosition(xmlElement) 
+PASS foreignDoctype.compareDocumentPosition(detachedTextNode) 
+PASS foreignDoctype.compareDocumentPosition(foreignTextNode) 
+PASS foreignDoctype.compareDocumentPosition(processingInstruction) 
+PASS foreignDoctype.compareDocumentPosition(detachedProcessingInstruction) 
+PASS foreignDoctype.compareDocumentPosition(comment) 
+PASS foreignDoctype.compareDocumentPosition(detachedComment) 
+PASS foreignDoctype.compareDocumentPosition(docfrag) 
+PASS foreignDoctype.compareDocumentPosition(doctype) 
+PASS foreignDoctype.compareDocumentPosition(foreignDoctype) 
+PASS foreignDoctype.compareDocumentPosition(paras[1]) 
+PASS foreignDoctype.compareDocumentPosition(detachedPara2) 
+PASS foreignDoctype.compareDocumentPosition(detachedPara2.firstChild) 
+PASS foreignDoctype.compareDocumentPosition(testDiv) 
+PASS foreignDoctype.compareDocumentPosition(detachedXmlElement) 
+PASS foreignDoctype.compareDocumentPosition(detachedForeignTextNode) 
+PASS foreignDoctype.compareDocumentPosition(xmlTextNode) 
+PASS foreignDoctype.compareDocumentPosition(detachedXmlTextNode) 
+PASS foreignDoctype.compareDocumentPosition(xmlComment) 
+PASS foreignDoctype.compareDocumentPosition(foreignComment) 
+PASS foreignDoctype.compareDocumentPosition(detachedForeignComment) 
+PASS foreignDoctype.compareDocumentPosition(detachedXmlComment) 
+PASS foreignDoctype.compareDocumentPosition(foreignDocfrag) 
+PASS foreignDoctype.compareDocumentPosition(xmlDocfrag) 
+PASS foreignDoctype.compareDocumentPosition(xmlDoctype) 
+PASS paras[1].contains(null) 
+PASS paras[1].compareDocumentPosition(paras[0]) 
+PASS paras[1].compareDocumentPosition(paras[0].firstChild) 
+PASS paras[1].compareDocumentPosition(paras[1].firstChild) 
+PASS paras[1].compareDocumentPosition(foreignPara1) 
+PASS paras[1].compareDocumentPosition(foreignPara1.firstChild) 
+PASS paras[1].compareDocumentPosition(detachedPara1) 
+PASS paras[1].compareDocumentPosition(detachedPara1.firstChild) 
+PASS paras[1].compareDocumentPosition(document) 
+PASS paras[1].compareDocumentPosition(detachedDiv) 
+PASS paras[1].compareDocumentPosition(foreignDoc) 
+PASS paras[1].compareDocumentPosition(foreignPara2) 
+PASS paras[1].compareDocumentPosition(xmlDoc) 
+PASS paras[1].compareDocumentPosition(xmlElement) 
+PASS paras[1].compareDocumentPosition(detachedTextNode) 
+PASS paras[1].compareDocumentPosition(foreignTextNode) 
+PASS paras[1].compareDocumentPosition(processingInstruction) 
+PASS paras[1].compareDocumentPosition(detachedProcessingInstruction) 
+PASS paras[1].compareDocumentPosition(comment) 
+PASS paras[1].compareDocumentPosition(detachedComment) 
+PASS paras[1].compareDocumentPosition(docfrag) 
+PASS paras[1].compareDocumentPosition(doctype) 
+PASS paras[1].compareDocumentPosition(foreignDoctype) 
+PASS paras[1].compareDocumentPosition(paras[1]) 
+PASS paras[1].compareDocumentPosition(detachedPara2) 
+PASS paras[1].compareDocumentPosition(detachedPara2.firstChild) 
+PASS paras[1].compareDocumentPosition(testDiv) 
+PASS paras[1].compareDocumentPosition(detachedXmlElement) 
+PASS paras[1].compareDocumentPosition(detachedForeignTextNode) 
+PASS paras[1].compareDocumentPosition(xmlTextNode) 
+PASS paras[1].compareDocumentPosition(detachedXmlTextNode) 
+PASS paras[1].compareDocumentPosition(xmlComment) 
+PASS paras[1].compareDocumentPosition(foreignComment) 
+PASS paras[1].compareDocumentPosition(detachedForeignComment) 
+PASS paras[1].compareDocumentPosition(detachedXmlComment) 
+PASS paras[1].compareDocumentPosition(foreignDocfrag) 
+PASS paras[1].compareDocumentPosition(xmlDocfrag) 
+PASS paras[1].compareDocumentPosition(xmlDoctype) 
+PASS detachedPara2.contains(null) 
+PASS detachedPara2.compareDocumentPosition(paras[0]) 
+PASS detachedPara2.compareDocumentPosition(paras[0].firstChild) 
+PASS detachedPara2.compareDocumentPosition(paras[1].firstChild) 
+PASS detachedPara2.compareDocumentPosition(foreignPara1) 
+PASS detachedPara2.compareDocumentPosition(foreignPara1.firstChild) 
+PASS detachedPara2.compareDocumentPosition(detachedPara1) 
+PASS detachedPara2.compareDocumentPosition(detachedPara1.firstChild) 
+PASS detachedPara2.compareDocumentPosition(document) 
+PASS detachedPara2.compareDocumentPosition(detachedDiv) 
+PASS detachedPara2.compareDocumentPosition(foreignDoc) 
+PASS detachedPara2.compareDocumentPosition(foreignPara2) 
+PASS detachedPara2.compareDocumentPosition(xmlDoc) 
+PASS detachedPara2.compareDocumentPosition(xmlElement) 
+PASS detachedPara2.compareDocumentPosition(detachedTextNode) 
+PASS detachedPara2.compareDocumentPosition(foreignTextNode) 
+PASS detachedPara2.compareDocumentPosition(processingInstruction) 
+PASS detachedPara2.compareDocumentPosition(detachedProcessingInstruction) 
+PASS detachedPara2.compareDocumentPosition(comment) 
+PASS detachedPara2.compareDocumentPosition(detachedComment) 
+PASS detachedPara2.compareDocumentPosition(docfrag) 
+PASS detachedPara2.compareDocumentPosition(doctype) 
+PASS detachedPara2.compareDocumentPosition(foreignDoctype) 
+PASS detachedPara2.compareDocumentPosition(paras[1]) 
+PASS detachedPara2.compareDocumentPosition(detachedPara2) 
+PASS detachedPara2.compareDocumentPosition(detachedPara2.firstChild) 
+PASS detachedPara2.compareDocumentPosition(testDiv) 
+PASS detachedPara2.compareDocumentPosition(detachedXmlElement) 
+PASS detachedPara2.compareDocumentPosition(detachedForeignTextNode) 
+PASS detachedPara2.compareDocumentPosition(xmlTextNode) 
+PASS detachedPara2.compareDocumentPosition(detachedXmlTextNode) 
+PASS detachedPara2.compareDocumentPosition(xmlComment) 
+PASS detachedPara2.compareDocumentPosition(foreignComment) 
+PASS detachedPara2.compareDocumentPosition(detachedForeignComment) 
+PASS detachedPara2.compareDocumentPosition(detachedXmlComment) 
+PASS detachedPara2.compareDocumentPosition(foreignDocfrag) 
+PASS detachedPara2.compareDocumentPosition(xmlDocfrag) 
+PASS detachedPara2.compareDocumentPosition(xmlDoctype) 
+PASS detachedPara2.firstChild.contains(null) 
+PASS detachedPara2.firstChild.compareDocumentPosition(paras[0]) 
+PASS detachedPara2.firstChild.compareDocumentPosition(paras[0].firstChild) 
+PASS detachedPara2.firstChild.compareDocumentPosition(paras[1].firstChild) 
+PASS detachedPara2.firstChild.compareDocumentPosition(foreignPara1) 
+PASS detachedPara2.firstChild.compareDocumentPosition(foreignPara1.firstChild) 
+PASS detachedPara2.firstChild.compareDocumentPosition(detachedPara1) 
+PASS detachedPara2.firstChild.compareDocumentPosition(detachedPara1.firstChild) 
+PASS detachedPara2.firstChild.compareDocumentPosition(document) 
+PASS detachedPara2.firstChild.compareDocumentPosition(detachedDiv) 
+PASS detachedPara2.firstChild.compareDocumentPosition(foreignDoc) 
+PASS detachedPara2.firstChild.compareDocumentPosition(foreignPara2) 
+PASS detachedPara2.firstChild.compareDocumentPosition(xmlDoc) 
+PASS detachedPara2.firstChild.compareDocumentPosition(xmlElement) 
+PASS detachedPara2.firstChild.compareDocumentPosition(detachedTextNode) 
+PASS detachedPara2.firstChild.compareDocumentPosition(foreignTextNode) 
+PASS detachedPara2.firstChild.compareDocumentPosition(processingInstruction) 
+PASS detachedPara2.firstChild.compareDocumentPosition(detachedProcessingInstruction) 
+PASS detachedPara2.firstChild.compareDocumentPosition(comment) 
+PASS detachedPara2.firstChild.compareDocumentPosition(detachedComment) 
+PASS detachedPara2.firstChild.compareDocumentPosition(docfrag) 
+PASS detachedPara2.firstChild.compareDocumentPosition(doctype) 
+PASS detachedPara2.firstChild.compareDocumentPosition(foreignDoctype) 
+PASS detachedPara2.firstChild.compareDocumentPosition(paras[1]) 
+PASS detachedPara2.firstChild.compareDocumentPosition(detachedPara2) 
+PASS detachedPara2.firstChild.compareDocumentPosition(detachedPara2.firstChild) 
+PASS detachedPara2.firstChild.compareDocumentPosition(testDiv) 
+PASS detachedPara2.firstChild.compareDocumentPosition(detachedXmlElement) 
+PASS detachedPara2.firstChild.compareDocumentPosition(detachedForeignTextNode) 
+PASS detachedPara2.firstChild.compareDocumentPosition(xmlTextNode) 
+PASS detachedPara2.firstChild.compareDocumentPosition(detachedXmlTextNode) 
+PASS detachedPara2.firstChild.compareDocumentPosition(xmlComment) 
+PASS detachedPara2.firstChild.compareDocumentPosition(foreignComment) 
+PASS detachedPara2.firstChild.compareDocumentPosition(detachedForeignComment) 
+PASS detachedPara2.firstChild.compareDocumentPosition(detachedXmlComment) 
+PASS detachedPara2.firstChild.compareDocumentPosition(foreignDocfrag) 
+PASS detachedPara2.firstChild.compareDocumentPosition(xmlDocfrag) 
+PASS detachedPara2.firstChild.compareDocumentPosition(xmlDoctype) 
+PASS testDiv.contains(null) 
+PASS testDiv.compareDocumentPosition(paras[0]) 
+PASS testDiv.compareDocumentPosition(paras[0].firstChild) 
+PASS testDiv.compareDocumentPosition(paras[1].firstChild) 
+PASS testDiv.compareDocumentPosition(foreignPara1) 
+PASS testDiv.compareDocumentPosition(foreignPara1.firstChild) 
+PASS testDiv.compareDocumentPosition(detachedPara1) 
+PASS testDiv.compareDocumentPosition(detachedPara1.firstChild) 
+PASS testDiv.compareDocumentPosition(document) 
+PASS testDiv.compareDocumentPosition(detachedDiv) 
+PASS testDiv.compareDocumentPosition(foreignDoc) 
+PASS testDiv.compareDocumentPosition(foreignPara2) 
+PASS testDiv.compareDocumentPosition(xmlDoc) 
+PASS testDiv.compareDocumentPosition(xmlElement) 
+PASS testDiv.compareDocumentPosition(detachedTextNode) 
+PASS testDiv.compareDocumentPosition(foreignTextNode) 
+PASS testDiv.compareDocumentPosition(processingInstruction) 
+PASS testDiv.compareDocumentPosition(detachedProcessingInstruction) 
+PASS testDiv.compareDocumentPosition(comment) 
+PASS testDiv.compareDocumentPosition(detachedComment) 
+PASS testDiv.compareDocumentPosition(docfrag) 
+PASS testDiv.compareDocumentPosition(doctype) 
+PASS testDiv.compareDocumentPosition(foreignDoctype) 
+PASS testDiv.compareDocumentPosition(paras[1]) 
+PASS testDiv.compareDocumentPosition(detachedPara2) 
+PASS testDiv.compareDocumentPosition(detachedPara2.firstChild) 
+PASS testDiv.compareDocumentPosition(testDiv) 
+PASS testDiv.compareDocumentPosition(detachedXmlElement) 
+PASS testDiv.compareDocumentPosition(detachedForeignTextNode) 
+PASS testDiv.compareDocumentPosition(xmlTextNode) 
+PASS testDiv.compareDocumentPosition(detachedXmlTextNode) 
+PASS testDiv.compareDocumentPosition(xmlComment) 
+PASS testDiv.compareDocumentPosition(foreignComment) 
+PASS testDiv.compareDocumentPosition(detachedForeignComment) 
+PASS testDiv.compareDocumentPosition(detachedXmlComment) 
+PASS testDiv.compareDocumentPosition(foreignDocfrag) 
+PASS testDiv.compareDocumentPosition(xmlDocfrag) 
+PASS testDiv.compareDocumentPosition(xmlDoctype) 
+PASS detachedXmlElement.contains(null) 
+PASS detachedXmlElement.compareDocumentPosition(paras[0]) 
+PASS detachedXmlElement.compareDocumentPosition(paras[0].firstChild) 
+PASS detachedXmlElement.compareDocumentPosition(paras[1].firstChild) 
+PASS detachedXmlElement.compareDocumentPosition(foreignPara1) 
+PASS detachedXmlElement.compareDocumentPosition(foreignPara1.firstChild) 
+PASS detachedXmlElement.compareDocumentPosition(detachedPara1) 
+PASS detachedXmlElement.compareDocumentPosition(detachedPara1.firstChild) 
+PASS detachedXmlElement.compareDocumentPosition(document) 
+PASS detachedXmlElement.compareDocumentPosition(detachedDiv) 
+PASS detachedXmlElement.compareDocumentPosition(foreignDoc) 
+PASS detachedXmlElement.compareDocumentPosition(foreignPara2) 
+PASS detachedXmlElement.compareDocumentPosition(xmlDoc) 
+PASS detachedXmlElement.compareDocumentPosition(xmlElement) 
+PASS detachedXmlElement.compareDocumentPosition(detachedTextNode) 
+PASS detachedXmlElement.compareDocumentPosition(foreignTextNode) 
+PASS detachedXmlElement.compareDocumentPosition(processingInstruction) 
+PASS detachedXmlElement.compareDocumentPosition(detachedProcessingInstruction) 
+PASS detachedXmlElement.compareDocumentPosition(comment) 
+PASS detachedXmlElement.compareDocumentPosition(detachedComment) 
+PASS detachedXmlElement.compareDocumentPosition(docfrag) 
+PASS detachedXmlElement.compareDocumentPosition(doctype) 
+PASS detachedXmlElement.compareDocumentPosition(foreignDoctype) 
+PASS detachedXmlElement.compareDocumentPosition(paras[1]) 
+PASS detachedXmlElement.compareDocumentPosition(detachedPara2) 
+PASS detachedXmlElement.compareDocumentPosition(detachedPara2.firstChild) 
+PASS detachedXmlElement.compareDocumentPosition(testDiv) 
+PASS detachedXmlElement.compareDocumentPosition(detachedXmlElement) 
+PASS detachedXmlElement.compareDocumentPosition(detachedForeignTextNode) 
+PASS detachedXmlElement.compareDocumentPosition(xmlTextNode) 
+PASS detachedXmlElement.compareDocumentPosition(detachedXmlTextNode) 
+PASS detachedXmlElement.compareDocumentPosition(xmlComment) 
+PASS detachedXmlElement.compareDocumentPosition(foreignComment) 
+PASS detachedXmlElement.compareDocumentPosition(detachedForeignComment) 
+PASS detachedXmlElement.compareDocumentPosition(detachedXmlComment) 
+PASS detachedXmlElement.compareDocumentPosition(foreignDocfrag) 
+PASS detachedXmlElement.compareDocumentPosition(xmlDocfrag) 
+PASS detachedXmlElement.compareDocumentPosition(xmlDoctype) 
+PASS detachedForeignTextNode.contains(null) 
+PASS detachedForeignTextNode.compareDocumentPosition(paras[0]) 
+PASS detachedForeignTextNode.compareDocumentPosition(paras[0].firstChild) 
+PASS detachedForeignTextNode.compareDocumentPosition(paras[1].firstChild) 
+PASS detachedForeignTextNode.compareDocumentPosition(foreignPara1) 
+PASS detachedForeignTextNode.compareDocumentPosition(foreignPara1.firstChild) 
+PASS detachedForeignTextNode.compareDocumentPosition(detachedPara1) 
+PASS detachedForeignTextNode.compareDocumentPosition(detachedPara1.firstChild) 
+PASS detachedForeignTextNode.compareDocumentPosition(document) 
+PASS detachedForeignTextNode.compareDocumentPosition(detachedDiv) 
+PASS detachedForeignTextNode.compareDocumentPosition(foreignDoc) 
+PASS detachedForeignTextNode.compareDocumentPosition(foreignPara2) 
+PASS detachedForeignTextNode.compareDocumentPosition(xmlDoc) 
+PASS detachedForeignTextNode.compareDocumentPosition(xmlElement) 
+PASS detachedForeignTextNode.compareDocumentPosition(detachedTextNode) 
+PASS detachedForeignTextNode.compareDocumentPosition(foreignTextNode) 
+PASS detachedForeignTextNode.compareDocumentPosition(processingInstruction) 
+PASS detachedForeignTextNode.compareDocumentPosition(detachedProcessingInstruction) 
+PASS detachedForeignTextNode.compareDocumentPosition(comment) 
+PASS detachedForeignTextNode.compareDocumentPosition(detachedComment) 
+PASS detachedForeignTextNode.compareDocumentPosition(docfrag) 
+PASS detachedForeignTextNode.compareDocumentPosition(doctype) 
+PASS detachedForeignTextNode.compareDocumentPosition(foreignDoctype) 
+PASS detachedForeignTextNode.compareDocumentPosition(paras[1]) 
+PASS detachedForeignTextNode.compareDocumentPosition(detachedPara2) 
+PASS detachedForeignTextNode.compareDocumentPosition(detachedPara2.firstChild) 
+PASS detachedForeignTextNode.compareDocumentPosition(testDiv) 
+PASS detachedForeignTextNode.compareDocumentPosition(detachedXmlElement) 
+PASS detachedForeignTextNode.compareDocumentPosition(detachedForeignTextNode) 
+PASS detachedForeignTextNode.compareDocumentPosition(xmlTextNode) 
+PASS detachedForeignTextNode.compareDocumentPosition(detachedXmlTextNode) 
+PASS detachedForeignTextNode.compareDocumentPosition(xmlComment) 
+PASS detachedForeignTextNode.compareDocumentPosition(foreignComment) 
+PASS detachedForeignTextNode.compareDocumentPosition(detachedForeignComment) 
+PASS detachedForeignTextNode.compareDocumentPosition(detachedXmlComment) 
+PASS detachedForeignTextNode.compareDocumentPosition(foreignDocfrag) 
+PASS detachedForeignTextNode.compareDocumentPosition(xmlDocfrag) 
+PASS detachedForeignTextNode.compareDocumentPosition(xmlDoctype) 
+PASS xmlTextNode.contains(null) 
+PASS xmlTextNode.compareDocumentPosition(paras[0]) 
+PASS xmlTextNode.compareDocumentPosition(paras[0].firstChild) 
+PASS xmlTextNode.compareDocumentPosition(paras[1].firstChild) 
+PASS xmlTextNode.compareDocumentPosition(foreignPara1) 
+PASS xmlTextNode.compareDocumentPosition(foreignPara1.firstChild) 
+PASS xmlTextNode.compareDocumentPosition(detachedPara1) 
+PASS xmlTextNode.compareDocumentPosition(detachedPara1.firstChild) 
+PASS xmlTextNode.compareDocumentPosition(document) 
+PASS xmlTextNode.compareDocumentPosition(detachedDiv) 
+PASS xmlTextNode.compareDocumentPosition(foreignDoc) 
+PASS xmlTextNode.compareDocumentPosition(foreignPara2) 
+PASS xmlTextNode.compareDocumentPosition(xmlDoc) 
+PASS xmlTextNode.compareDocumentPosition(xmlElement) 
+PASS xmlTextNode.compareDocumentPosition(detachedTextNode) 
+PASS xmlTextNode.compareDocumentPosition(foreignTextNode) 
+PASS xmlTextNode.compareDocumentPosition(processingInstruction) 
+PASS xmlTextNode.compareDocumentPosition(detachedProcessingInstruction) 
+PASS xmlTextNode.compareDocumentPosition(comment) 
+PASS xmlTextNode.compareDocumentPosition(detachedComment) 
+PASS xmlTextNode.compareDocumentPosition(docfrag) 
+PASS xmlTextNode.compareDocumentPosition(doctype) 
+PASS xmlTextNode.compareDocumentPosition(foreignDoctype) 
+PASS xmlTextNode.compareDocumentPosition(paras[1]) 
+PASS xmlTextNode.compareDocumentPosition(detachedPara2) 
+PASS xmlTextNode.compareDocumentPosition(detachedPara2.firstChild) 
+PASS xmlTextNode.compareDocumentPosition(testDiv) 
+PASS xmlTextNode.compareDocumentPosition(detachedXmlElement) 
+PASS xmlTextNode.compareDocumentPosition(detachedForeignTextNode) 
+PASS xmlTextNode.compareDocumentPosition(xmlTextNode) 
+PASS xmlTextNode.compareDocumentPosition(detachedXmlTextNode) 
+PASS xmlTextNode.compareDocumentPosition(xmlComment) 
+PASS xmlTextNode.compareDocumentPosition(foreignComment) 
+PASS xmlTextNode.compareDocumentPosition(detachedForeignComment) 
+PASS xmlTextNode.compareDocumentPosition(detachedXmlComment) 
+PASS xmlTextNode.compareDocumentPosition(foreignDocfrag) 
+PASS xmlTextNode.compareDocumentPosition(xmlDocfrag) 
+PASS xmlTextNode.compareDocumentPosition(xmlDoctype) 
+PASS detachedXmlTextNode.contains(null) 
+PASS detachedXmlTextNode.compareDocumentPosition(paras[0]) 
+PASS detachedXmlTextNode.compareDocumentPosition(paras[0].firstChild) 
+PASS detachedXmlTextNode.compareDocumentPosition(paras[1].firstChild) 
+PASS detachedXmlTextNode.compareDocumentPosition(foreignPara1) 
+PASS detachedXmlTextNode.compareDocumentPosition(foreignPara1.firstChild) 
+PASS detachedXmlTextNode.compareDocumentPosition(detachedPara1) 
+PASS detachedXmlTextNode.compareDocumentPosition(detachedPara1.firstChild) 
+PASS detachedXmlTextNode.compareDocumentPosition(document) 
+PASS detachedXmlTextNode.compareDocumentPosition(detachedDiv) 
+PASS detachedXmlTextNode.compareDocumentPosition(foreignDoc) 
+PASS detachedXmlTextNode.compareDocumentPosition(foreignPara2) 
+PASS detachedXmlTextNode.compareDocumentPosition(xmlDoc) 
+PASS detachedXmlTextNode.compareDocumentPosition(xmlElement) 
+PASS detachedXmlTextNode.compareDocumentPosition(detachedTextNode) 
+PASS detachedXmlTextNode.compareDocumentPosition(foreignTextNode) 
+PASS detachedXmlTextNode.compareDocumentPosition(processingInstruction) 
+PASS detachedXmlTextNode.compareDocumentPosition(detachedProcessingInstruction) 
+PASS detachedXmlTextNode.compareDocumentPosition(comment) 
+PASS detachedXmlTextNode.compareDocumentPosition(detachedComment) 
+PASS detachedXmlTextNode.compareDocumentPosition(docfrag) 
+PASS detachedXmlTextNode.compareDocumentPosition(doctype) 
+PASS detachedXmlTextNode.compareDocumentPosition(foreignDoctype) 
+PASS detachedXmlTextNode.compareDocumentPosition(paras[1]) 
+PASS detachedXmlTextNode.compareDocumentPosition(detachedPara2) 
+PASS detachedXmlTextNode.compareDocumentPosition(detachedPara2.firstChild) 
+PASS detachedXmlTextNode.compareDocumentPosition(testDiv) 
+PASS detachedXmlTextNode.compareDocumentPosition(detachedXmlElement) 
+PASS detachedXmlTextNode.compareDocumentPosition(detachedForeignTextNode) 
+PASS detachedXmlTextNode.compareDocumentPosition(xmlTextNode) 
+PASS detachedXmlTextNode.compareDocumentPosition(detachedXmlTextNode) 
+PASS detachedXmlTextNode.compareDocumentPosition(xmlComment) 
+PASS detachedXmlTextNode.compareDocumentPosition(foreignComment) 
+PASS detachedXmlTextNode.compareDocumentPosition(detachedForeignComment) 
+PASS detachedXmlTextNode.compareDocumentPosition(detachedXmlComment) 
+PASS detachedXmlTextNode.compareDocumentPosition(foreignDocfrag) 
+PASS detachedXmlTextNode.compareDocumentPosition(xmlDocfrag) 
+PASS detachedXmlTextNode.compareDocumentPosition(xmlDoctype) 
+PASS xmlComment.contains(null) 
+PASS xmlComment.compareDocumentPosition(paras[0]) 
+PASS xmlComment.compareDocumentPosition(paras[0].firstChild) 
+PASS xmlComment.compareDocumentPosition(paras[1].firstChild) 
+PASS xmlComment.compareDocumentPosition(foreignPara1) 
+PASS xmlComment.compareDocumentPosition(foreignPara1.firstChild) 
+PASS xmlComment.compareDocumentPosition(detachedPara1) 
+PASS xmlComment.compareDocumentPosition(detachedPara1.firstChild) 
+PASS xmlComment.compareDocumentPosition(document) 
+PASS xmlComment.compareDocumentPosition(detachedDiv) 
+PASS xmlComment.compareDocumentPosition(foreignDoc) 
+PASS xmlComment.compareDocumentPosition(foreignPara2) 
+PASS xmlComment.compareDocumentPosition(xmlDoc) 
+PASS xmlComment.compareDocumentPosition(xmlElement) 
+PASS xmlComment.compareDocumentPosition(detachedTextNode) 
+PASS xmlComment.compareDocumentPosition(foreignTextNode) 
+PASS xmlComment.compareDocumentPosition(processingInstruction) 
+PASS xmlComment.compareDocumentPosition(detachedProcessingInstruction) 
+PASS xmlComment.compareDocumentPosition(comment) 
+PASS xmlComment.compareDocumentPosition(detachedComment) 
+PASS xmlComment.compareDocumentPosition(docfrag) 
+PASS xmlComment.compareDocumentPosition(doctype) 
+PASS xmlComment.compareDocumentPosition(foreignDoctype) 
+PASS xmlComment.compareDocumentPosition(paras[1]) 
+PASS xmlComment.compareDocumentPosition(detachedPara2) 
+PASS xmlComment.compareDocumentPosition(detachedPara2.firstChild) 
+PASS xmlComment.compareDocumentPosition(testDiv) 
+PASS xmlComment.compareDocumentPosition(detachedXmlElement) 
+PASS xmlComment.compareDocumentPosition(detachedForeignTextNode) 
+PASS xmlComment.compareDocumentPosition(xmlTextNode) 
+PASS xmlComment.compareDocumentPosition(detachedXmlTextNode) 
+PASS xmlComment.compareDocumentPosition(xmlComment) 
+PASS xmlComment.compareDocumentPosition(foreignComment) 
+PASS xmlComment.compareDocumentPosition(detachedForeignComment) 
+PASS xmlComment.compareDocumentPosition(detachedXmlComment) 
+PASS xmlComment.compareDocumentPosition(foreignDocfrag) 
+PASS xmlComment.compareDocumentPosition(xmlDocfrag) 
+PASS xmlComment.compareDocumentPosition(xmlDoctype) 
+PASS foreignComment.contains(null) 
+PASS foreignComment.compareDocumentPosition(paras[0]) 
+PASS foreignComment.compareDocumentPosition(paras[0].firstChild) 
+PASS foreignComment.compareDocumentPosition(paras[1].firstChild) 
+PASS foreignComment.compareDocumentPosition(foreignPara1) 
+PASS foreignComment.compareDocumentPosition(foreignPara1.firstChild) 
+PASS foreignComment.compareDocumentPosition(detachedPara1) 
+PASS foreignComment.compareDocumentPosition(detachedPara1.firstChild) 
+PASS foreignComment.compareDocumentPosition(document) 
+PASS foreignComment.compareDocumentPosition(detachedDiv) 
+PASS foreignComment.compareDocumentPosition(foreignDoc) 
+PASS foreignComment.compareDocumentPosition(foreignPara2) 
+PASS foreignComment.compareDocumentPosition(xmlDoc) 
+PASS foreignComment.compareDocumentPosition(xmlElement) 
+PASS foreignComment.compareDocumentPosition(detachedTextNode) 
+PASS foreignComment.compareDocumentPosition(foreignTextNode) 
+PASS foreignComment.compareDocumentPosition(processingInstruction) 
+PASS foreignComment.compareDocumentPosition(detachedProcessingInstruction) 
+PASS foreignComment.compareDocumentPosition(comment) 
+PASS foreignComment.compareDocumentPosition(detachedComment) 
+PASS foreignComment.compareDocumentPosition(docfrag) 
+PASS foreignComment.compareDocumentPosition(doctype) 
+PASS foreignComment.compareDocumentPosition(foreignDoctype) 
+PASS foreignComment.compareDocumentPosition(paras[1]) 
+PASS foreignComment.compareDocumentPosition(detachedPara2) 
+PASS foreignComment.compareDocumentPosition(detachedPara2.firstChild) 
+PASS foreignComment.compareDocumentPosition(testDiv) 
+PASS foreignComment.compareDocumentPosition(detachedXmlElement) 
+PASS foreignComment.compareDocumentPosition(detachedForeignTextNode) 
+PASS foreignComment.compareDocumentPosition(xmlTextNode) 
+PASS foreignComment.compareDocumentPosition(detachedXmlTextNode) 
+PASS foreignComment.compareDocumentPosition(xmlComment) 
+PASS foreignComment.compareDocumentPosition(foreignComment) 
+PASS foreignComment.compareDocumentPosition(detachedForeignComment) 
+PASS foreignComment.compareDocumentPosition(detachedXmlComment) 
+PASS foreignComment.compareDocumentPosition(foreignDocfrag) 
+PASS foreignComment.compareDocumentPosition(xmlDocfrag) 
+PASS foreignComment.compareDocumentPosition(xmlDoctype) 
+PASS detachedForeignComment.contains(null) 
+PASS detachedForeignComment.compareDocumentPosition(paras[0]) 
+PASS detachedForeignComment.compareDocumentPosition(paras[0].firstChild) 
+PASS detachedForeignComment.compareDocumentPosition(paras[1].firstChild) 
+PASS detachedForeignComment.compareDocumentPosition(foreignPara1) 
+PASS detachedForeignComment.compareDocumentPosition(foreignPara1.firstChild) 
+PASS detachedForeignComment.compareDocumentPosition(detachedPara1) 
+PASS detachedForeignComment.compareDocumentPosition(detachedPara1.firstChild) 
+PASS detachedForeignComment.compareDocumentPosition(document) 
+PASS detachedForeignComment.compareDocumentPosition(detachedDiv) 
+PASS detachedForeignComment.compareDocumentPosition(foreignDoc) 
+PASS detachedForeignComment.compareDocumentPosition(foreignPara2) 
+PASS detachedForeignComment.compareDocumentPosition(xmlDoc) 
+PASS detachedForeignComment.compareDocumentPosition(xmlElement) 
+PASS detachedForeignComment.compareDocumentPosition(detachedTextNode) 
+PASS detachedForeignComment.compareDocumentPosition(foreignTextNode) 
+PASS detachedForeignComment.compareDocumentPosition(processingInstruction) 
+PASS detachedForeignComment.compareDocumentPosition(detachedProcessingInstruction) 
+PASS detachedForeignComment.compareDocumentPosition(comment) 
+PASS detachedForeignComment.compareDocumentPosition(detachedComment) 
+PASS detachedForeignComment.compareDocumentPosition(docfrag) 
+PASS detachedForeignComment.compareDocumentPosition(doctype) 
+PASS detachedForeignComment.compareDocumentPosition(foreignDoctype) 
+PASS detachedForeignComment.compareDocumentPosition(paras[1]) 
+PASS detachedForeignComment.compareDocumentPosition(detachedPara2) 
+PASS detachedForeignComment.compareDocumentPosition(detachedPara2.firstChild) 
+PASS detachedForeignComment.compareDocumentPosition(testDiv) 
+PASS detachedForeignComment.compareDocumentPosition(detachedXmlElement) 
+PASS detachedForeignComment.compareDocumentPosition(detachedForeignTextNode) 
+PASS detachedForeignComment.compareDocumentPosition(xmlTextNode) 
+PASS detachedForeignComment.compareDocumentPosition(detachedXmlTextNode) 
+PASS detachedForeignComment.compareDocumentPosition(xmlComment) 
+PASS detachedForeignComment.compareDocumentPosition(foreignComment) 
+PASS detachedForeignComment.compareDocumentPosition(detachedForeignComment) 
+PASS detachedForeignComment.compareDocumentPosition(detachedXmlComment) 
+PASS detachedForeignComment.compareDocumentPosition(foreignDocfrag) 
+PASS detachedForeignComment.compareDocumentPosition(xmlDocfrag) 
+PASS detachedForeignComment.compareDocumentPosition(xmlDoctype) 
+PASS detachedXmlComment.contains(null) 
+PASS detachedXmlComment.compareDocumentPosition(paras[0]) 
+PASS detachedXmlComment.compareDocumentPosition(paras[0].firstChild) 
+PASS detachedXmlComment.compareDocumentPosition(paras[1].firstChild) 
+PASS detachedXmlComment.compareDocumentPosition(foreignPara1) 
+PASS detachedXmlComment.compareDocumentPosition(foreignPara1.firstChild) 
+PASS detachedXmlComment.compareDocumentPosition(detachedPara1) 
+PASS detachedXmlComment.compareDocumentPosition(detachedPara1.firstChild) 
+PASS detachedXmlComment.compareDocumentPosition(document) 
+PASS detachedXmlComment.compareDocumentPosition(detachedDiv) 
+PASS detachedXmlComment.compareDocumentPosition(foreignDoc) 
+PASS detachedXmlComment.compareDocumentPosition(foreignPara2) 
+PASS detachedXmlComment.compareDocumentPosition(xmlDoc) 
+PASS detachedXmlComment.compareDocumentPosition(xmlElement) 
+PASS detachedXmlComment.compareDocumentPosition(detachedTextNode) 
+PASS detachedXmlComment.compareDocumentPosition(foreignTextNode) 
+PASS detachedXmlComment.compareDocumentPosition(processingInstruction) 
+PASS detachedXmlComment.compareDocumentPosition(detachedProcessingInstruction) 
+PASS detachedXmlComment.compareDocumentPosition(comment) 
+PASS detachedXmlComment.compareDocumentPosition(detachedComment) 
+PASS detachedXmlComment.compareDocumentPosition(docfrag) 
+PASS detachedXmlComment.compareDocumentPosition(doctype) 
+PASS detachedXmlComment.compareDocumentPosition(foreignDoctype) 
+PASS detachedXmlComment.compareDocumentPosition(paras[1]) 
+PASS detachedXmlComment.compareDocumentPosition(detachedPara2) 
+PASS detachedXmlComment.compareDocumentPosition(detachedPara2.firstChild) 
+PASS detachedXmlComment.compareDocumentPosition(testDiv) 
+PASS detachedXmlComment.compareDocumentPosition(detachedXmlElement) 
+PASS detachedXmlComment.compareDocumentPosition(detachedForeignTextNode) 
+PASS detachedXmlComment.compareDocumentPosition(xmlTextNode) 
+PASS detachedXmlComment.compareDocumentPosition(detachedXmlTextNode) 
+PASS detachedXmlComment.compareDocumentPosition(xmlComment) 
+PASS detachedXmlComment.compareDocumentPosition(foreignComment) 
+PASS detachedXmlComment.compareDocumentPosition(detachedForeignComment) 
+PASS detachedXmlComment.compareDocumentPosition(detachedXmlComment) 
+PASS detachedXmlComment.compareDocumentPosition(foreignDocfrag) 
+PASS detachedXmlComment.compareDocumentPosition(xmlDocfrag) 
+PASS detachedXmlComment.compareDocumentPosition(xmlDoctype) 
+PASS foreignDocfrag.contains(null) 
+PASS foreignDocfrag.compareDocumentPosition(paras[0]) 
+PASS foreignDocfrag.compareDocumentPosition(paras[0].firstChild) 
+PASS foreignDocfrag.compareDocumentPosition(paras[1].firstChild) 
+PASS foreignDocfrag.compareDocumentPosition(foreignPara1) 
+PASS foreignDocfrag.compareDocumentPosition(foreignPara1.firstChild) 
+PASS foreignDocfrag.compareDocumentPosition(detachedPara1) 
+PASS foreignDocfrag.compareDocumentPosition(detachedPara1.firstChild) 
+PASS foreignDocfrag.compareDocumentPosition(document) 
+PASS foreignDocfrag.compareDocumentPosition(detachedDiv) 
+PASS foreignDocfrag.compareDocumentPosition(foreignDoc) 
+PASS foreignDocfrag.compareDocumentPosition(foreignPara2) 
+PASS foreignDocfrag.compareDocumentPosition(xmlDoc) 
+PASS foreignDocfrag.compareDocumentPosition(xmlElement) 
+PASS foreignDocfrag.compareDocumentPosition(detachedTextNode) 
+PASS foreignDocfrag.compareDocumentPosition(foreignTextNode) 
+PASS foreignDocfrag.compareDocumentPosition(processingInstruction) 
+PASS foreignDocfrag.compareDocumentPosition(detachedProcessingInstruction) 
+PASS foreignDocfrag.compareDocumentPosition(comment) 
+PASS foreignDocfrag.compareDocumentPosition(detachedComment) 
+PASS foreignDocfrag.compareDocumentPosition(docfrag) 
+PASS foreignDocfrag.compareDocumentPosition(doctype) 
+PASS foreignDocfrag.compareDocumentPosition(foreignDoctype) 
+PASS foreignDocfrag.compareDocumentPosition(paras[1]) 
+PASS foreignDocfrag.compareDocumentPosition(detachedPara2) 
+PASS foreignDocfrag.compareDocumentPosition(detachedPara2.firstChild) 
+PASS foreignDocfrag.compareDocumentPosition(testDiv) 
+PASS foreignDocfrag.compareDocumentPosition(detachedXmlElement) 
+PASS foreignDocfrag.compareDocumentPosition(detachedForeignTextNode) 
+PASS foreignDocfrag.compareDocumentPosition(xmlTextNode) 
+PASS foreignDocfrag.compareDocumentPosition(detachedXmlTextNode) 
+PASS foreignDocfrag.compareDocumentPosition(xmlComment) 
+PASS foreignDocfrag.compareDocumentPosition(foreignComment) 
+PASS foreignDocfrag.compareDocumentPosition(detachedForeignComment) 
+PASS foreignDocfrag.compareDocumentPosition(detachedXmlComment) 
+PASS foreignDocfrag.compareDocumentPosition(foreignDocfrag) 
+PASS foreignDocfrag.compareDocumentPosition(xmlDocfrag) 
+PASS foreignDocfrag.compareDocumentPosition(xmlDoctype) 
+PASS xmlDocfrag.contains(null) 
+PASS xmlDocfrag.compareDocumentPosition(paras[0]) 
+PASS xmlDocfrag.compareDocumentPosition(paras[0].firstChild) 
+PASS xmlDocfrag.compareDocumentPosition(paras[1].firstChild) 
+PASS xmlDocfrag.compareDocumentPosition(foreignPara1) 
+PASS xmlDocfrag.compareDocumentPosition(foreignPara1.firstChild) 
+PASS xmlDocfrag.compareDocumentPosition(detachedPara1) 
+PASS xmlDocfrag.compareDocumentPosition(detachedPara1.firstChild) 
+PASS xmlDocfrag.compareDocumentPosition(document) 
+PASS xmlDocfrag.compareDocumentPosition(detachedDiv) 
+PASS xmlDocfrag.compareDocumentPosition(foreignDoc) 
+PASS xmlDocfrag.compareDocumentPosition(foreignPara2) 
+PASS xmlDocfrag.compareDocumentPosition(xmlDoc) 
+PASS xmlDocfrag.compareDocumentPosition(xmlElement) 
+PASS xmlDocfrag.compareDocumentPosition(detachedTextNode) 
+PASS xmlDocfrag.compareDocumentPosition(foreignTextNode) 
+PASS xmlDocfrag.compareDocumentPosition(processingInstruction) 
+PASS xmlDocfrag.compareDocumentPosition(detachedProcessingInstruction) 
+PASS xmlDocfrag.compareDocumentPosition(comment) 
+PASS xmlDocfrag.compareDocumentPosition(detachedComment) 
+PASS xmlDocfrag.compareDocumentPosition(docfrag) 
+PASS xmlDocfrag.compareDocumentPosition(doctype) 
+PASS xmlDocfrag.compareDocumentPosition(foreignDoctype) 
+PASS xmlDocfrag.compareDocumentPosition(paras[1]) 
+PASS xmlDocfrag.compareDocumentPosition(detachedPara2) 
+PASS xmlDocfrag.compareDocumentPosition(detachedPara2.firstChild) 
+PASS xmlDocfrag.compareDocumentPosition(testDiv) 
+PASS xmlDocfrag.compareDocumentPosition(detachedXmlElement) 
+PASS xmlDocfrag.compareDocumentPosition(detachedForeignTextNode) 
+PASS xmlDocfrag.compareDocumentPosition(xmlTextNode) 
+PASS xmlDocfrag.compareDocumentPosition(detachedXmlTextNode) 
+PASS xmlDocfrag.compareDocumentPosition(xmlComment) 
+PASS xmlDocfrag.compareDocumentPosition(foreignComment) 
+PASS xmlDocfrag.compareDocumentPosition(detachedForeignComment) 
+PASS xmlDocfrag.compareDocumentPosition(detachedXmlComment) 
+PASS xmlDocfrag.compareDocumentPosition(foreignDocfrag) 
+PASS xmlDocfrag.compareDocumentPosition(xmlDocfrag) 
+PASS xmlDocfrag.compareDocumentPosition(xmlDoctype) 
+PASS xmlDoctype.contains(null) 
+PASS xmlDoctype.compareDocumentPosition(paras[0]) 
+PASS xmlDoctype.compareDocumentPosition(paras[0].firstChild) 
+PASS xmlDoctype.compareDocumentPosition(paras[1].firstChild) 
+PASS xmlDoctype.compareDocumentPosition(foreignPara1) 
+PASS xmlDoctype.compareDocumentPosition(foreignPara1.firstChild) 
+PASS xmlDoctype.compareDocumentPosition(detachedPara1) 
+PASS xmlDoctype.compareDocumentPosition(detachedPara1.firstChild) 
+PASS xmlDoctype.compareDocumentPosition(document) 
+PASS xmlDoctype.compareDocumentPosition(detachedDiv) 
+PASS xmlDoctype.compareDocumentPosition(foreignDoc) 
+PASS xmlDoctype.compareDocumentPosition(foreignPara2) 
+PASS xmlDoctype.compareDocumentPosition(xmlDoc) 
+PASS xmlDoctype.compareDocumentPosition(xmlElement) 
+PASS xmlDoctype.compareDocumentPosition(detachedTextNode) 
+PASS xmlDoctype.compareDocumentPosition(foreignTextNode) 
+PASS xmlDoctype.compareDocumentPosition(processingInstruction) 
+PASS xmlDoctype.compareDocumentPosition(detachedProcessingInstruction) 
+PASS xmlDoctype.compareDocumentPosition(comment) 
+PASS xmlDoctype.compareDocumentPosition(detachedComment) 
+PASS xmlDoctype.compareDocumentPosition(docfrag) 
+PASS xmlDoctype.compareDocumentPosition(doctype) 
+PASS xmlDoctype.compareDocumentPosition(foreignDoctype) 
+PASS xmlDoctype.compareDocumentPosition(paras[1]) 
+PASS xmlDoctype.compareDocumentPosition(detachedPara2) 
+PASS xmlDoctype.compareDocumentPosition(detachedPara2.firstChild) 
+PASS xmlDoctype.compareDocumentPosition(testDiv) 
+PASS xmlDoctype.compareDocumentPosition(detachedXmlElement) 
+PASS xmlDoctype.compareDocumentPosition(detachedForeignTextNode) 
+PASS xmlDoctype.compareDocumentPosition(xmlTextNode) 
+PASS xmlDoctype.compareDocumentPosition(detachedXmlTextNode) 
+PASS xmlDoctype.compareDocumentPosition(xmlComment) 
+PASS xmlDoctype.compareDocumentPosition(foreignComment) 
+PASS xmlDoctype.compareDocumentPosition(detachedForeignComment) 
+PASS xmlDoctype.compareDocumentPosition(detachedXmlComment) 
+PASS xmlDoctype.compareDocumentPosition(foreignDocfrag) 
+PASS xmlDoctype.compareDocumentPosition(xmlDocfrag) 
+PASS xmlDoctype.compareDocumentPosition(xmlDoctype) 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodecontainsxhtmlexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodecontainsxhtmlexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains-xhtml-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-contains-xhtml-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains-xhtml-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains-xhtml-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+ Link text
+
+FAIL Should throw TypeError if the arguments are wrong. assert_throws: function &quot;function () {
+    document.contains();
+  }&quot; did not throw
+PASS contains(null) should be false 
+PASS document.contains 
+PASS contains with a button 
+PASS contains with a text node 
+PASS contains with a processing instruction 
+FAIL contains with a document fragment NotSupportedError: DOM Exception 9
+PASS contaibs with another document 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodecontainsxhtmlxhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodecontainsxhtmlxhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains-xhtml.xhtml (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-contains-xhtml.xhtml) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains-xhtml.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains-xhtml.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,83 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+&lt;head&gt;
+&lt;title&gt;Node.nodeName&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Olli Pettay&quot; href=&quot;mailto:Olli@Pettay.fi&quot;/&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Ms2ger&quot; href=&quot;mailto:Ms2ger@gmail.com&quot;/&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id=&quot;log&quot;/&gt;
+&lt;div id=&quot;test&quot;&gt;
+  &lt;input type=&quot;button&quot; id=&quot;testbutton&quot;/&gt;
+  &lt;a id=&quot;link&quot;&gt;Link text&lt;/a&gt;
+&lt;/div&gt;
+&lt;script&gt;
+&lt;![CDATA[
+test(function() {
+  assert_throws(new TypeError(), function() {
+    document.contains();
+  });
+  assert_throws(new TypeError(), function() {
+    document.contains(9);
+  });
+}, &quot;Should throw TypeError if the arguments are wrong.&quot;);
+
+test(function() {
+  assert_equals(document.contains(null), false, &quot;Document shouldn't contain null.&quot;);
+}, &quot;contains(null) should be false&quot;);
+
+test(function() {
+  assert_equals(document.contains(document), true, &quot;Document should contain itself!&quot;);
+  assert_equals(document.contains(document.createElement(&quot;foo&quot;)), false, &quot;Document shouldn't contain element which is't in the document&quot;);
+  assert_equals(document.contains(document.createTextNode(&quot;foo&quot;)), false, &quot;Document shouldn't contain text node which is't in the document&quot;);
+}, &quot;document.contains&quot;);
+
+test(function() {
+  var tb = document.getElementById(&quot;testbutton&quot;);
+  assert_equals(tb.contains(tb), true, &quot;Element should contain itself.&quot;)
+  assert_equals(document.contains(tb), true, &quot;Document should contain element in it!&quot;);
+  assert_equals(document.documentElement.contains(tb), true, &quot;Element should contain element in it!&quot;);
+}, &quot;contains with a button&quot;);
+
+test(function() {
+  var link = document.getElementById(&quot;link&quot;);
+  var text = link.firstChild;
+  assert_equals(document.contains(text), true, &quot;Document should contain a text node in it.&quot;);
+  assert_equals(link.contains(text), true, &quot;Element should contain a text node in it.&quot;);
+  assert_equals(text.contains(text), true, &quot;Text node should contain itself.&quot;);
+  assert_equals(text.contains(link), false, &quot;text node shouldn't contain its parent.&quot;);
+}, &quot;contains with a text node&quot;);
+
+test(function() {
+  var pi = document.createProcessingInstruction(&quot;adf&quot;, &quot;asd&quot;);
+  assert_equals(pi.contains(document), false, &quot;Processing instruction shouldn't contain document&quot;);
+  assert_equals(document.contains(pi), false, &quot;Document shouldn't contain newly created processing instruction&quot;);
+  document.documentElement.appendChild(pi);
+  document.contains(pi, true, &quot;Document should contain processing instruction&quot;);
+}, &quot;contains with a processing instruction&quot;);
+
+test(function() {
+  if (&quot;createContextualFragment&quot; in document.createRange()) {
+    var df = document.createRange().createContextualFragment(&quot;&lt;div&gt;foo&lt;/div&gt;&quot;);
+    assert_equals(df.contains(df.firstChild), true, &quot;Document fragment should contain its child&quot;);
+    assert_equals(df.contains(df.firstChild.firstChild), true,
+       &quot;Document fragment should contain its descendant&quot;);
+    assert_equals(df.contains(df), true, &quot;Document fragment should contain itself.&quot;);
+  }
+}, &quot;contains with a document fragment&quot;);
+
+test(function() {
+  var d = document.implementation.createHTMLDocument(&quot;&quot;);
+  assert_equals(document.contains(d), false,
+     &quot;Document shouldn't contain another document.&quot;);
+  assert_equals(document.contains(d.createElement(&quot;div&quot;)), false,
+     &quot;Document shouldn't contain an element from another document.&quot;);
+  assert_equals(document.contains(d.documentElement), false,
+     &quot;Document shouldn't contain an element from another document.&quot;);
+}, &quot;contaibs with another document&quot;);
+]]&gt;
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodecontainshtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodecontainshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-contains.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-contains.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,36 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Node.contains() tests&lt;/title&gt;
+&lt;link rel=author title=&quot;Aryeh Gregor&quot; href=ayg@aryeh.name&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;script src=../common.js&gt;&lt;/script&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+
+testNodes.forEach(function(referenceName) {
+  var reference = eval(referenceName);
+
+  test(function() {
+    assert_false(reference.contains(null));
+  }, referenceName + &quot;.contains(null)&quot;);
+
+  testNodes.forEach(function(otherName) {
+    var other = eval(otherName);
+    test(function() {
+      var ancestor = other;
+      while (ancestor &amp;&amp; ancestor !== reference) {
+        ancestor = ancestor.parentNode;
+      }
+      if (ancestor === reference) {
+        assert_true(reference.contains(other));
+      } else {
+        assert_false(reference.contains(other));
+      }
+    }, referenceName + &quot;.compareDocumentPosition(&quot; + otherName + &quot;)&quot;);
+  });
+});
+
+testDiv.parentNode.removeChild(testDiv);
+&lt;/script&gt;
+&lt;!-- vim: set expandtab tabstop=2 shiftwidth=2: --&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeinsertBeforeexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodeinsertBeforeexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-insertBefore-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-insertBefore-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-insertBefore-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-insertBefore-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,44 @@
</span><ins>+
+FAIL Calling insertBefore with a non-Node first argument must throw TypeError. assert_throws: function &quot;function () { document.body.insertBefore(null, null) }&quot; threw object &quot;Error: NotFoundError: DOM Exception 8&quot; (&quot;NotFoundError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+FAIL Calling insertBefore with a non-Node first argument on a leaf node DocumentType must throw TypeError. assert_throws: function &quot;function () { node.insertBefore(null, null) }&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; (&quot;HierarchyRequestError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Calling insertBefore an a leaf node DocumentType must throw HIERARCHY_REQUEST_ERR. 
+FAIL Calling insertBefore with a non-Node first argument on a leaf node Text must throw TypeError. assert_throws: function &quot;function () { node.insertBefore(null, null) }&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; (&quot;HierarchyRequestError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Calling insertBefore an a leaf node Text must throw HIERARCHY_REQUEST_ERR. 
+FAIL Calling insertBefore with a non-Node first argument on a leaf node Comment must throw TypeError. assert_throws: function &quot;function () { node.insertBefore(null, null) }&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; (&quot;HierarchyRequestError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Calling insertBefore an a leaf node Comment must throw HIERARCHY_REQUEST_ERR. 
+FAIL Calling insertBefore with a non-Node first argument on a leaf node ProcessingInstruction must throw TypeError. assert_throws: function &quot;function () { node.insertBefore(null, null) }&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; (&quot;HierarchyRequestError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+PASS Calling insertBefore an a leaf node ProcessingInstruction must throw HIERARCHY_REQUEST_ERR. 
+PASS Calling insertBefore with an inclusive ancestor of the context object must throw HIERARCHY_REQUEST_ERR. 
+PASS Calling insertBefore with a reference child whose parent is not the context node must throw a NotFoundError. 
+PASS If the context node is a document, inserting a document or text node should throw a HierarchyRequestError. 
+FAIL If the context node is a document, appending a DocumentFragment that contains a text node or too many elements should throw a HierarchyRequestError. assert_throws: function &quot;function () {
+    doc.insertBefore(df, null);
+  }&quot; did not throw
+FAIL If the context node is a document, inserting a DocumentFragment that contains a text node or too many elements should throw a HierarchyRequestError. assert_throws: function &quot;function () {
+    doc.insertBefore(df, doc.firstChild);
+  }&quot; did not throw
+PASS If the context node is a document, inserting a DocumentFragment with an element if there already is an element child should throw a HierarchyRequestError. 
+FAIL If the context node is a document and a doctype is following the reference child, inserting a DocumentFragment with an element should throw a HierarchyRequestError. assert_throws: function &quot;function () {
+    doc.insertBefore(df, doc.doctype);
+  }&quot; did not throw
+FAIL If the context node is a document, inserting a DocumentFragment with an element before the doctype should throw a HierarchyRequestError. assert_throws: function &quot;function () {
+    doc.insertBefore(df, comment);
+  }&quot; did not throw
+PASS If the context node is a document, inserting an element if there already is an element child should throw a HierarchyRequestError. 
+FAIL If the context node is a document, inserting an element before the doctype should throw a HierarchyRequestError. assert_throws: function &quot;function () {
+    doc.insertBefore(a, doc.doctype);
+  }&quot; did not throw
+FAIL If the context node is a document and a doctype is following the reference child, inserting an element should throw a HierarchyRequestError. assert_throws: function &quot;function () {
+    doc.insertBefore(a, comment);
+  }&quot; did not throw
+PASS If the context node is a document, inserting a doctype if there already is a doctype child should throw a HierarchyRequestError. 
+FAIL If the context node is a document, inserting a doctype after the document element should throw a HierarchyRequestError. assert_throws: function &quot;function () {
+    doc.insertBefore(doctype, comment);
+  }&quot; did not throw
+FAIL If the context node is a document with and element child, appending a doctype should throw a HierarchyRequestError. assert_throws: function &quot;function () {
+    doc.insertBefore(doctype, null);
+  }&quot; did not throw
+PASS If the context node is a DocumentFragment, inserting a document or a doctype should throw a HierarchyRequestError. 
+PASS If the context node is an element, inserting a document or a doctype should throw a HierarchyRequestError. 
+PASS Inserting a node before itself should not move the node 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeinsertBeforehtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodeinsertBeforehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-insertBefore.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-insertBefore.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-insertBefore.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-insertBefore.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,306 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;Node.insertBefore&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+function testLeafNode(nodeName, createNodeFunction) {
+  test(function() {
+    var node = createNodeFunction();
+    assert_throws(new TypeError(), function() { node.insertBefore(null, null) })
+  }, &quot;Calling insertBefore with a non-Node first argument on a leaf node &quot; + nodeName + &quot; must throw TypeError.&quot;)
+  test(function() {
+    var node = createNodeFunction();
+    assert_throws(&quot;HIERARCHY_REQUEST_ERR&quot;, function() { node.insertBefore(document.createTextNode(&quot;fail&quot;), null) })
+    // Would be step 2.
+    assert_throws(&quot;HIERARCHY_REQUEST_ERR&quot;, function() { node.insertBefore(node, null) })
+    // Would be step 3.
+    assert_throws(&quot;HIERARCHY_REQUEST_ERR&quot;, function() { node.insertBefore(node, document.createTextNode(&quot;child&quot;)) })
+  }, &quot;Calling insertBefore an a leaf node &quot; + nodeName + &quot; must throw HIERARCHY_REQUEST_ERR.&quot;)
+}
+
+test(function() {
+  // WebIDL.
+  assert_throws(new TypeError(), function() { document.body.insertBefore(null, null) })
+  assert_throws(new TypeError(), function() { document.body.insertBefore(null, document.body.firstChild) })
+  assert_throws(new TypeError(), function() { document.body.insertBefore({'a':'b'}, document.body.firstChild) })
+}, &quot;Calling insertBefore with a non-Node first argument must throw TypeError.&quot;)
+
+testLeafNode(&quot;DocumentType&quot;, function () { return document.doctype; } )
+testLeafNode(&quot;Text&quot;, function () { return document.createTextNode(&quot;Foo&quot;) })
+testLeafNode(&quot;Comment&quot;, function () { return document.createComment(&quot;Foo&quot;) })
+testLeafNode(&quot;ProcessingInstruction&quot;, function () { return document.createProcessingInstruction(&quot;foo&quot;, &quot;bar&quot;) })
+
+test(function() {
+  // Step 2.
+  assert_throws(&quot;HIERARCHY_REQUEST_ERR&quot;, function() { document.body.insertBefore(document.body, document.getElementById(&quot;log&quot;)) })
+  assert_throws(&quot;HIERARCHY_REQUEST_ERR&quot;, function() { document.body.insertBefore(document.documentElement, document.getElementById(&quot;log&quot;)) })
+}, &quot;Calling insertBefore with an inclusive ancestor of the context object must throw HIERARCHY_REQUEST_ERR.&quot;)
+
+// Step 3.
+test(function() {
+  var a = document.createElement(&quot;div&quot;);
+  var b = document.createElement(&quot;div&quot;);
+  var c = document.createElement(&quot;div&quot;);
+  assert_throws(&quot;NotFoundError&quot;, function() {
+    a.insertBefore(b, c);
+  });
+}, &quot;Calling insertBefore with a reference child whose parent is not the context node must throw a NotFoundError.&quot;)
+
+// Step 4.1.
+test(function() {
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  var doc2 = document.implementation.createHTMLDocument(&quot;title2&quot;);
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.insertBefore(doc2, doc.documentElement);
+  });
+
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.insertBefore(doc.createTextNode(&quot;text&quot;), doc.documentElement);
+  });
+}, &quot;If the context node is a document, inserting a document or text node should throw a HierarchyRequestError.&quot;)
+
+// Step 4.2.1.
+test(function() {
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  doc.removeChild(doc.documentElement);
+
+  var df = doc.createDocumentFragment();
+  df.appendChild(doc.createElement(&quot;a&quot;));
+  df.appendChild(doc.createElement(&quot;b&quot;));
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.insertBefore(df, null);
+  });
+
+  df = doc.createDocumentFragment();
+  df.appendChild(doc.createTextNode(&quot;text&quot;));
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.insertBefore(df, null);
+  });
+
+  df = doc.createDocumentFragment();
+  df.appendChild(doc.createComment(&quot;comment&quot;));
+  df.appendChild(doc.createTextNode(&quot;text&quot;));
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.insertBefore(df, null);
+  });
+}, &quot;If the context node is a document, appending a DocumentFragment that contains a text node or too many elements should throw a HierarchyRequestError.&quot;)
+test(function() {
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  doc.removeChild(doc.documentElement);
+
+  var df = doc.createDocumentFragment();
+  df.appendChild(doc.createElement(&quot;a&quot;));
+  df.appendChild(doc.createElement(&quot;b&quot;));
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.insertBefore(df, doc.firstChild);
+  });
+
+  df = doc.createDocumentFragment();
+  df.appendChild(doc.createTextNode(&quot;text&quot;));
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.insertBefore(df, doc.firstChild);
+  });
+
+  df = doc.createDocumentFragment();
+  df.appendChild(doc.createComment(&quot;comment&quot;));
+  df.appendChild(doc.createTextNode(&quot;text&quot;));
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.insertBefore(df, doc.firstChild);
+  });
+}, &quot;If the context node is a document, inserting a DocumentFragment that contains a text node or too many elements should throw a HierarchyRequestError.&quot;)
+
+// Step 4.2.2.
+test(function() {
+  // The context node has an element child.
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  var comment = doc.appendChild(doc.createComment(&quot;foo&quot;));
+  assert_array_equals(doc.childNodes, [doc.doctype, doc.documentElement, comment]);
+
+  var df = doc.createDocumentFragment();
+  df.appendChild(doc.createElement(&quot;a&quot;));
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.insertBefore(df, doc.doctype);
+  });
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.insertBefore(df, doc.documentElement);
+  });
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.insertBefore(df, comment);
+  });
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.insertBefore(df, null);
+  });
+}, &quot;If the context node is a document, inserting a DocumentFragment with an element if there already is an element child should throw a HierarchyRequestError.&quot;)
+test(function() {
+  // /child/ is a doctype.
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  var comment = doc.insertBefore(doc.createComment(&quot;foo&quot;), doc.firstChild);
+  doc.removeChild(doc.documentElement);
+  assert_array_equals(doc.childNodes, [comment, doc.doctype]);
+
+  var df = doc.createDocumentFragment();
+  df.appendChild(doc.createElement(&quot;a&quot;));
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.insertBefore(df, doc.doctype);
+  });
+}, &quot;If the context node is a document and a doctype is following the reference child, inserting a DocumentFragment with an element should throw a HierarchyRequestError.&quot;)
+test(function() {
+  // /child/ is not null and a doctype is following /child/.
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  var comment = doc.insertBefore(doc.createComment(&quot;foo&quot;), doc.firstChild);
+  doc.removeChild(doc.documentElement);
+  assert_array_equals(doc.childNodes, [comment, doc.doctype]);
+
+  var df = doc.createDocumentFragment();
+  df.appendChild(doc.createElement(&quot;a&quot;));
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.insertBefore(df, comment);
+  });
+}, &quot;If the context node is a document, inserting a DocumentFragment with an element before the doctype should throw a HierarchyRequestError.&quot;)
+
+// Step 4.3.
+test(function() {
+  // The context node has an element child.
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  var comment = doc.appendChild(doc.createComment(&quot;foo&quot;));
+  assert_array_equals(doc.childNodes, [doc.doctype, doc.documentElement, comment]);
+
+  var a = doc.createElement(&quot;a&quot;);
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.insertBefore(a, doc.doctype);
+  });
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.insertBefore(a, doc.documentElement);
+  });
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.insertBefore(a, comment);
+  });
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.insertBefore(a, null);
+  });
+}, &quot;If the context node is a document, inserting an element if there already is an element child should throw a HierarchyRequestError.&quot;)
+test(function() {
+  // /child/ is a doctype.
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  var comment = doc.insertBefore(doc.createComment(&quot;foo&quot;), doc.firstChild);
+  doc.removeChild(doc.documentElement);
+  assert_array_equals(doc.childNodes, [comment, doc.doctype]);
+
+  var a = doc.createElement(&quot;a&quot;);
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.insertBefore(a, doc.doctype);
+  });
+}, &quot;If the context node is a document, inserting an element before the doctype should throw a HierarchyRequestError.&quot;)
+test(function() {
+  // /child/ is not null and a doctype is following /child/.
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  var comment = doc.insertBefore(doc.createComment(&quot;foo&quot;), doc.firstChild);
+  doc.removeChild(doc.documentElement);
+  assert_array_equals(doc.childNodes, [comment, doc.doctype]);
+
+  var a = doc.createElement(&quot;a&quot;);
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.insertBefore(a, comment);
+  });
+}, &quot;If the context node is a document and a doctype is following the reference child, inserting an element should throw a HierarchyRequestError.&quot;)
+
+// Step 4.4.
+test(function() {
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  var comment = doc.insertBefore(doc.createComment(&quot;foo&quot;), doc.firstChild);
+  assert_array_equals(doc.childNodes, [comment, doc.doctype, doc.documentElement]);
+
+  var doctype = document.implementation.createDocumentType(&quot;html&quot;, &quot;&quot;, &quot;&quot;);
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.insertBefore(doctype, comment);
+  });
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.insertBefore(doctype, doc.doctype);
+  });
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.insertBefore(doctype, doc.documentElement);
+  });
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.insertBefore(doctype, null);
+  });
+}, &quot;If the context node is a document, inserting a doctype if there already is a doctype child should throw a HierarchyRequestError.&quot;)
+test(function() {
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  var comment = doc.appendChild(doc.createComment(&quot;foo&quot;));
+  doc.removeChild(doc.doctype);
+  assert_array_equals(doc.childNodes, [doc.documentElement, comment]);
+
+  var doctype = document.implementation.createDocumentType(&quot;html&quot;, &quot;&quot;, &quot;&quot;);
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.insertBefore(doctype, comment);
+  });
+}, &quot;If the context node is a document, inserting a doctype after the document element should throw a HierarchyRequestError.&quot;)
+test(function() {
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  var comment = doc.appendChild(doc.createComment(&quot;foo&quot;));
+  doc.removeChild(doc.doctype);
+  assert_array_equals(doc.childNodes, [doc.documentElement, comment]);
+
+  var doctype = document.implementation.createDocumentType(&quot;html&quot;, &quot;&quot;, &quot;&quot;);
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.insertBefore(doctype, null);
+  });
+}, &quot;If the context node is a document with and element child, appending a doctype should throw a HierarchyRequestError.&quot;)
+
+// Step 5.
+test(function() {
+  var df = document.createDocumentFragment();
+  var a = df.appendChild(document.createElement(&quot;a&quot;));
+
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    df.insertBefore(doc, a);
+  });
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    df.insertBefore(doc, null);
+  });
+
+  var doctype = document.implementation.createDocumentType(&quot;html&quot;, &quot;&quot;, &quot;&quot;);
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    df.insertBefore(doctype, a);
+  });
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    df.insertBefore(doctype, null);
+  });
+}, &quot;If the context node is a DocumentFragment, inserting a document or a doctype should throw a HierarchyRequestError.&quot;)
+test(function() {
+  var el = document.createElement(&quot;div&quot;);
+  var a = el.appendChild(document.createElement(&quot;a&quot;));
+
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    el.insertBefore(doc, a);
+  });
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    el.insertBefore(doc, null);
+  });
+
+  var doctype = document.implementation.createDocumentType(&quot;html&quot;, &quot;&quot;, &quot;&quot;);
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    el.insertBefore(doctype, a);
+  });
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    el.insertBefore(doctype, null);
+  });
+}, &quot;If the context node is an element, inserting a document or a doctype should throw a HierarchyRequestError.&quot;)
+
+// Step 7.
+test(function() {
+  var a = document.createElement(&quot;div&quot;);
+  var b = document.createElement(&quot;div&quot;);
+  var c = document.createElement(&quot;div&quot;);
+  a.appendChild(b);
+  a.appendChild(c);
+  assert_array_equals(a.childNodes, [b, c]);
+  assert_equals(a.insertBefore(b, b), b);
+  assert_array_equals(a.childNodes, [b, c]);
+  assert_equals(a.insertBefore(c, c), c);
+  assert_array_equals(a.childNodes, [b, c]);
+}, &quot;Inserting a node before itself should not move the node&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeisEqualNodeexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodeisEqualNodeexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-isEqualNode-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+CONSOLE MESSAGE: line 799: Blocked a frame with origin &quot;http://localhost:8800&quot; from accessing a frame with origin &quot;null&quot;.  The frame requesting access has a protocol of &quot;http&quot;, the frame being accessed has a protocol of &quot;data&quot;. Protocols must match.
+
+CONSOLE MESSAGE: line 799: Blocked a frame with origin &quot;http://localhost:8800&quot; from accessing a frame with origin &quot;null&quot;.  The frame requesting access has a protocol of &quot;http&quot;, the frame being accessed has a protocol of &quot;data&quot;. Protocols must match.
+

+
+PASS Node.isEqualNode 
+PASS Node.isEqualNode 1 
+PASS Node.isEqualNode 2 
+PASS Node.isEqualNode 3 
+PASS Node.isEqualNode 4 
+PASS Node.isEqualNode 5 
+PASS Node.isEqualNode 6 
+PASS isEqualNode should return true when the attributes are in a different order 
+PASS isEqualNode should return true if elements have same namespace, prefix, and local name 
+PASS isEqualNode should return false if elements have different namespace 
+PASS isEqualNode should return false if elements have different prefix 
+PASS isEqualNode should return false if elements have different local name 
+PASS isEqualNode should return true when the attributes have different prefixes 
+FAIL isEqualNode should return true when only the internal subsets of DocumentTypes differ. null is not an object (evaluating 'doc1.doctype')
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeisEqualNodexhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodeisEqualNodexhtmlxhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode.xhtml (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-isEqualNode-xhtml.xhtml) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-isEqualNode.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,84 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+&lt;head&gt;
+&lt;title&gt;Node.isEqualNode&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id=&quot;log&quot;/&gt;
+&lt;script&gt;
+function testNullHandling(node) {
+  test(function() {
+    assert_false(node.isEqualNode(null))
+    assert_false(node.isEqualNode(undefined))
+  })
+}
+[
+  document.createElement(&quot;foo&quot;),
+  document.createTextNode(&quot;foo&quot;),
+  document.createProcessingInstruction(&quot;foo&quot;, &quot;bar&quot;),
+  document.createComment(&quot;foo&quot;),
+  document,
+  document.implementation.createDocumentType(&quot;html&quot;, &quot;&quot;, &quot;&quot;),
+  document.createDocumentFragment()
+].forEach(testNullHandling)
+
+test(function() {
+  var a = document.createElement(&quot;foo&quot;)
+  a.setAttribute(&quot;a&quot;, &quot;bar&quot;)
+  a.setAttribute(&quot;b&quot;, &quot;baz&quot;)
+  var b = document.createElement(&quot;foo&quot;)
+  b.setAttribute(&quot;b&quot;, &quot;baz&quot;)
+  b.setAttribute(&quot;a&quot;, &quot;bar&quot;)
+  assert_true(a.isEqualNode(b))
+}, &quot;isEqualNode should return true when the attributes are in a different order&quot;)
+
+test(function() {
+  var a = document.createElementNS(&quot;ns&quot;, &quot;prefix:foo&quot;)
+  var b = document.createElementNS(&quot;ns&quot;, &quot;prefix:foo&quot;)
+  assert_true(a.isEqualNode(b))
+}, &quot;isEqualNode should return true if elements have same namespace, prefix, and local name&quot;)
+
+test(function() {
+  var a = document.createElementNS(&quot;ns1&quot;, &quot;prefix:foo&quot;)
+  var b = document.createElementNS(&quot;ns2&quot;, &quot;prefix:foo&quot;)
+  assert_false(a.isEqualNode(b))
+}, &quot;isEqualNode should return false if elements have different namespace&quot;)
+
+test(function() {
+  var a = document.createElementNS(&quot;ns&quot;, &quot;prefix1:foo&quot;)
+  var b = document.createElementNS(&quot;ns&quot;, &quot;prefix2:foo&quot;)
+  assert_false(a.isEqualNode(b))
+}, &quot;isEqualNode should return false if elements have different prefix&quot;)
+
+test(function() {
+  var a = document.createElementNS(&quot;ns&quot;, &quot;prefix:foo1&quot;)
+  var b = document.createElementNS(&quot;ns&quot;, &quot;prefix:foo2&quot;)
+  assert_false(a.isEqualNode(b))
+}, &quot;isEqualNode should return false if elements have different local name&quot;)
+
+test(function() {
+  var a = document.createElement(&quot;foo&quot;)
+  a.setAttributeNS(&quot;ns&quot;, &quot;x:a&quot;, &quot;bar&quot;)
+  var b = document.createElement(&quot;foo&quot;)
+  b.setAttributeNS(&quot;ns&quot;, &quot;y:a&quot;, &quot;bar&quot;)
+  assert_true(a.isEqualNode(b))
+}, &quot;isEqualNode should return true when the attributes have different prefixes&quot;)
+var internalSubset = async_test(&quot;isEqualNode should return true when only the internal subsets of DocumentTypes differ.&quot;)
+var wait = 2;
+function iframeLoaded() {
+  if (!--wait) {
+    internalSubset.step(function() {
+      var doc1 = document.getElementById(&quot;subset1&quot;).contentDocument
+      var doc2 = document.getElementById(&quot;subset2&quot;).contentDocument
+      assert_true(doc1.doctype.isEqualNode(doc2.doctype), &quot;doc1.doctype.isEqualNode(doc2.doctype)&quot;)
+      assert_true(doc1.isEqualNode(doc2), &quot;doc1.isEqualNode(doc2)&quot;)
+    })
+    internalSubset.done()
+  }
+}
+&lt;/script&gt;
+&lt;iframe id=&quot;subset1&quot; onload=&quot;iframeLoaded()&quot; src=&quot;data:application/xml,&amp;lt;!DOCTYPE foo [ &amp;lt;!ELEMENT foo (%23PCDATA)&gt; ]&gt;&amp;lt;foo/&gt;&quot; /&gt;
+&lt;iframe id=&quot;subset2&quot; onload=&quot;iframeLoaded()&quot; src=&quot;data:application/xml,&amp;lt;!DOCTYPE foo [ &amp;lt;!ELEMENT foo EMPTY&gt; ]&gt;&amp;lt;foo/&gt;&quot; /&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodelookupNamespaceURIexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodelookupNamespaceURIexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-lookupNamespaceURI-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-lookupNamespaceURI-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-lookupNamespaceURI-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-lookupNamespaceURI-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,65 @@
</span><ins>+LookupNamespaceURI and IsDefaultNamespace
+
+
+PASS DocumentFragment should have null namespace 
+PASS DocumentFragment should have null namespace 
+PASS DocumentFragment should have null namespace 
+PASS DocumentFragment should have null namespace 
+FAIL DocumentFragment is in default namespace assert_equals: expected true but got false
+FAIL DocumentFragment is in default namespace assert_equals: expected true but got false
+PASS DocumentFragment is in default namespace 
+PASS DocumentFragment is in default namespace 
+PASS Element should have null namespace 
+PASS Element should have null namespace 
+PASS Element should not have namespace matching prefix with namespaceURI value 
+PASS Element should not have XMLNS namespace 
+PASS Element has namespace URI matching prefix 
+FAIL Empty namespace is not default assert_equals: expected true but got false
+FAIL Empty namespace is not default assert_equals: expected true but got false
+PASS fooNamespace is not default 
+PASS xmlns namespace is not default 
+PASS Element should have baz namespace 
+FAIL Element should have baz namespace assert_equals: expected (string) &quot;bazURI&quot; but got (object) null
+PASS Element has namespace URI matching prefix 
+PASS Element does not has namespace with xlmns prefix 
+PASS Element has bar namespace 
+PASS Empty namespace is not default 
+PASS Empty namespace is not default 
+PASS fooNamespace is not default 
+PASS xmlns namespace is not default 
+PASS bar namespace is not default 
+PASS baz namespace is default 
+PASS Comment should inherit baz namespace 
+FAIL Comment should inherit  baz namespace assert_equals: expected (string) &quot;bazURI&quot; but got (object) null
+PASS Comment should inherit namespace URI matching prefix 
+PASS Comment should inherit bar namespace 
+PASS For comment, empty namespace is not default 
+PASS For comment, empty namespace is not default 
+PASS For comment, fooNamespace is not default 
+PASS For comment, xmlns namespace is not default 
+PASS For comment, inherited bar namespace is not default 
+PASS For comment, inherited baz namespace is default 
+PASS Child element should inherit baz namespace 
+FAIL Child element should have null namespace assert_equals: expected (string) &quot;childNamespace&quot; but got (object) null
+PASS Child element should not have XMLNS namespace 
+PASS Child element has namespace URI matching prefix 
+PASS Empty namespace is not default for child 
+PASS Empty namespace is not default for child 
+PASS fooNamespace is not default for child 
+PASS xmlns namespace is not default for child 
+PASS bar namespace is not default for child 
+PASS baz namespace is default for child 
+PASS childNamespace is default for child 
+PASS Document should have xhtml namespace 
+FAIL Document should have xhtml namespace assert_equals: expected (string) &quot;http://www.w3.org/1999/xhtml&quot; but got (object) null
+PASS Document has no namespace URI matching prefix 
+PASS Document has bar namespace 
+PASS For document, Empty namespace is not default 
+PASS For document, Empty namespace is not default 
+PASS For document, fooNamespace is not default 
+PASS For document, xmlns namespace is not default 
+PASS For document, bar namespace is not default 
+PASS For document, baz namespace is not default 
+PASS For document, xhtml namespace is default 
+PASS Comment does not have bar namespace 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodelookupNamespaceURIhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodelookupNamespaceURIhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-lookupNamespaceURI.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-lookupNamespaceURI.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-lookupNamespaceURI.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-lookupNamespaceURI.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,119 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;head&gt;
+&lt;title&gt;LookupNamespaceURI and IsDefaultNamespace tests&lt;/title&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;LookupNamespaceURI and IsDefaultNamespace&lt;/h1&gt;
+&lt;div id=&quot;log&quot;/&gt;
+&lt;script&gt;
+function lookupNamespaceURI(node, prefix, expected, name) {
+  test(function() {
+    assert_equals(node.lookupNamespaceURI(prefix), expected);
+  }, name);
+}
+
+function isDefaultNamespace(node, namespace, expected, name) {
+  test(function() {
+    assert_equals(node.isDefaultNamespace(namespace), expected);
+  }, name);
+}
+
+
+var frag = document.createDocumentFragment();
+lookupNamespaceURI(frag, null, null, 'DocumentFragment should have null namespace');
+lookupNamespaceURI(frag, '', null, 'DocumentFragment should have null namespace');
+lookupNamespaceURI(frag, 'foo', null, 'DocumentFragment should have null namespace');
+lookupNamespaceURI(frag, 'xmlns', null, 'DocumentFragment should have null namespace');
+isDefaultNamespace(frag, null, true, 'DocumentFragment is in default namespace');
+isDefaultNamespace(frag, '', true, 'DocumentFragment is in default namespace');
+isDefaultNamespace(frag, 'foo', false, 'DocumentFragment is in default namespace');
+isDefaultNamespace(frag, 'xmlns', false, 'DocumentFragment is in default namespace');
+
+
+
+var fooElem = document.createElementNS('fooNamespace', 'prefix:elem');
+fooElem.setAttribute('bar', 'value');
+
+lookupNamespaceURI(fooElem, null, null, 'Element should have null namespace');
+lookupNamespaceURI(fooElem, '', null, 'Element should have null namespace');
+lookupNamespaceURI(fooElem, 'fooNamespace', null, 'Element should not have namespace matching prefix with namespaceURI value');
+lookupNamespaceURI(fooElem, 'xmlns', null, 'Element should not have XMLNS namespace');
+lookupNamespaceURI(fooElem, 'prefix', 'fooNamespace', 'Element has namespace URI matching prefix');
+isDefaultNamespace(fooElem, null, true, 'Empty namespace is not default');
+isDefaultNamespace(fooElem, '', true, 'Empty namespace is not default');
+isDefaultNamespace(fooElem, 'fooNamespace', false, 'fooNamespace is not default');
+isDefaultNamespace(fooElem, 'http://www.w3.org/2000/xmlns/', false, 'xmlns namespace is not default');
+
+fooElem.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:bar', 'barURI');
+fooElem.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns', 'bazURI');
+
+lookupNamespaceURI(fooElem, null, 'bazURI', 'Element should have baz namespace');
+lookupNamespaceURI(fooElem, '', 'bazURI', 'Element should have baz namespace');
+lookupNamespaceURI(fooElem, 'prefix', 'fooNamespace', 'Element has namespace URI matching prefix');
+lookupNamespaceURI(fooElem, 'xmlns', null, 'Element does not has namespace with xlmns prefix');
+lookupNamespaceURI(fooElem, 'bar', 'barURI', 'Element has bar namespace');
+
+isDefaultNamespace(fooElem, null, false, 'Empty namespace is not default');
+isDefaultNamespace(fooElem, '', false, 'Empty namespace is not default');
+isDefaultNamespace(fooElem, 'fooNamespace', false, 'fooNamespace is not default');
+isDefaultNamespace(fooElem, 'http://www.w3.org/2000/xmlns/', false, 'xmlns namespace is not default');
+isDefaultNamespace(fooElem, 'barURI', false, 'bar namespace is not default');
+isDefaultNamespace(fooElem, 'bazURI', true, 'baz namespace is default');
+
+var comment = document.createComment('comment');
+fooElem.appendChild(comment);
+
+lookupNamespaceURI(comment, null, 'bazURI', 'Comment should inherit baz namespace');
+lookupNamespaceURI(comment, '', 'bazURI', 'Comment should inherit  baz namespace');
+lookupNamespaceURI(comment, 'prefix', 'fooNamespace', 'Comment should inherit namespace URI matching prefix');
+lookupNamespaceURI(comment, 'bar', 'barURI', 'Comment should inherit bar namespace');
+
+isDefaultNamespace(comment, null, false, 'For comment, empty namespace is not default');
+isDefaultNamespace(comment, '', false, 'For comment, empty namespace is not default');
+isDefaultNamespace(comment, 'fooNamespace', false, 'For comment, fooNamespace is not default');
+isDefaultNamespace(comment, 'http://www.w3.org/2000/xmlns/', false, 'For comment, xmlns namespace is not default');
+isDefaultNamespace(comment, 'barURI', false, 'For comment, inherited bar namespace is not default');
+isDefaultNamespace(comment, 'bazURI', true, 'For comment, inherited baz namespace is default');
+
+var fooChild = document.createElementNS('childNamespace', 'childElem');
+fooElem.appendChild(fooChild);
+
+lookupNamespaceURI(fooChild, null, 'childNamespace', 'Child element should inherit baz namespace');
+lookupNamespaceURI(fooChild, '', 'childNamespace', 'Child element should have null namespace');
+lookupNamespaceURI(fooChild, 'xmlns', null, 'Child element should not have XMLNS namespace');
+lookupNamespaceURI(fooChild, 'prefix', 'fooNamespace', 'Child element has namespace URI matching prefix');
+
+isDefaultNamespace(fooChild, null, false, 'Empty namespace is not default for child');
+isDefaultNamespace(fooChild, '', false, 'Empty namespace is not default for child');
+isDefaultNamespace(fooChild, 'fooNamespace', false, 'fooNamespace is not default for child');
+isDefaultNamespace(fooChild, 'http://www.w3.org/2000/xmlns/', false, 'xmlns namespace is not default for child');
+isDefaultNamespace(fooChild, 'barURI', false, 'bar namespace is not default for child');
+isDefaultNamespace(fooChild, 'bazURI', false, 'baz namespace is default for child');
+isDefaultNamespace(fooChild, 'childNamespace', true, 'childNamespace is default for child');
+
+document.documentElement.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:bar', 'barURI');
+document.documentElement.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns', 'bazURI');
+
+lookupNamespaceURI(document, null, 'http://www.w3.org/1999/xhtml', 'Document should have xhtml namespace');
+lookupNamespaceURI(document, '', 'http://www.w3.org/1999/xhtml', 'Document should have xhtml namespace');
+lookupNamespaceURI(document, 'prefix', null, 'Document has no namespace URI matching prefix');
+lookupNamespaceURI(document, 'bar', 'barURI', 'Document has bar namespace');
+
+isDefaultNamespace(document, null, false, 'For document, Empty namespace is not default');
+isDefaultNamespace(document, '', false, 'For document, Empty namespace is not default');
+isDefaultNamespace(document, 'fooNamespace', false, 'For document, fooNamespace is not default');
+isDefaultNamespace(document, 'http://www.w3.org/2000/xmlns/', false, 'For document, xmlns namespace is not default');
+isDefaultNamespace(document, 'barURI', false, 'For document, bar namespace is not default');
+isDefaultNamespace(document, 'bazURI', false, 'For document, baz namespace is not default');
+isDefaultNamespace(document, 'http://www.w3.org/1999/xhtml', true, 'For document, xhtml namespace is default');
+
+var comment = document.createComment('comment');
+document.appendChild(comment);
+lookupNamespaceURI(comment, 'bar', null, 'Comment does not have bar namespace');
+
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodelookupPrefixexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodelookupPrefixexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-lookupPrefix-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-lookupPrefix-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-lookupPrefix-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-lookupPrefix-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+
+PASS Node.lookupPrefix 
+PASS Node.lookupPrefix 1 
+PASS Node.lookupPrefix 2 
+PASS Node.lookupPrefix 3 
+PASS Node.lookupPrefix 4 
+PASS Node.lookupPrefix 5 
+PASS Node.lookupPrefix 6 
+PASS Node.lookupPrefix 7 
+PASS Node.lookupPrefix 8 
+PASS Node.lookupPrefix 9 
+PASS Node.lookupPrefix 10 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodelookupPrefixxhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodelookupPrefixxhtmlxhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-lookupPrefix.xhtml (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-lookupPrefix-xhtml.xhtml) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-lookupPrefix.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-lookupPrefix.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xmlns:x=&quot;test&quot;&gt;
+&lt;head&gt;
+&lt;title&gt;Node.lookupPrefix&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body xmlns:s=&quot;test&quot;&gt;
+&lt;div id=&quot;log&quot;/&gt;
+&lt;x xmlns:t=&quot;test&quot;&gt;&lt;!--comment--&gt;&lt;?test test?&gt;TEST&lt;x/&gt;&lt;/x&gt;
+&lt;script&gt;
+function lookupPrefix(node, ns, prefix) {
+  test(function() {
+    assert_equals(node.lookupPrefix(ns), prefix)
+  })
+}
+var x = document.getElementsByTagName(&quot;x&quot;)[0];
+lookupPrefix(document, &quot;test&quot;, &quot;x&quot;) // XXX add test for when there is no documentElement
+lookupPrefix(document, null, null)
+lookupPrefix(x, &quot;http://www.w3.org/1999/xhtml&quot;, null)
+lookupPrefix(x, &quot;something&quot;, null)
+lookupPrefix(x, null, null)
+lookupPrefix(x, &quot;test&quot;, &quot;t&quot;)
+lookupPrefix(x.parentNode, &quot;test&quot;, &quot;s&quot;)
+lookupPrefix(x.firstChild, &quot;test&quot;, &quot;t&quot;)
+lookupPrefix(x.childNodes[1], &quot;test&quot;, &quot;t&quot;)
+lookupPrefix(x.childNodes[2], &quot;test&quot;, &quot;t&quot;)
+lookupPrefix(x.lastChild, &quot;test&quot;, &quot;t&quot;)
+x.parentNode.removeChild(x)
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodenodeNameexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodenodeNameexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-nodeName-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-nodeName-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-nodeName-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-nodeName-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+
+FAIL For Element nodes, nodeName should return the same as tagName. assert_equals: expected &quot;X:B&quot; but got &quot;x:b&quot;
+PASS For Text nodes, nodeName should return &quot;#text&quot;. 
+PASS For Comment nodes, nodeName should return &quot;#comment&quot;. 
+PASS For Document nodes, nodeName should return &quot;#document&quot;. 
+PASS For DocumentType nodes, nodeName should return the name. 
+PASS For DocumentFragment nodes, nodeName should return &quot;#document-fragment&quot;. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodenodeNamexhtmlexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodenodeNamexhtmlexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-nodeName-xhtml-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-nodeName-xhtml-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-nodeName-xhtml-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-nodeName-xhtml-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+
+PASS For Element nodes, nodeName should return the same as tagName. 
+PASS For Text nodes, nodeName should return &quot;#text&quot;. 
+PASS For ProcessingInstruction nodes, nodeName should return the target. 
+PASS For Comment nodes, nodeName should return &quot;#comment&quot;. 
+PASS For Document nodes, nodeName should return &quot;#document&quot;. 
+PASS For DocumentType nodes, nodeName should return the name. 
+PASS For DocumentFragment nodes, nodeName should return &quot;#document-fragment&quot;. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodenodeNamexhtmlxhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodenodeNamexhtmlxhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-nodeName-xhtml.xhtml (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-nodeName-xhtml.xhtml) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-nodeName-xhtml.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-nodeName-xhtml.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+&lt;head&gt;
+&lt;title&gt;Node.nodeName&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id=&quot;log&quot;/&gt;
+&lt;script&gt;
+test(function() {
+  var HTMLNS = &quot;http://www.w3.org/1999/xhtml&quot;,
+      SVGNS = &quot;http://www.w3.org/2000/svg&quot;
+  assert_equals(document.createElementNS(HTMLNS, &quot;I&quot;).nodeName, &quot;I&quot;)
+  assert_equals(document.createElementNS(HTMLNS, &quot;i&quot;).nodeName, &quot;i&quot;)
+  assert_equals(document.createElementNS(SVGNS, &quot;svg&quot;).nodeName, &quot;svg&quot;)
+  assert_equals(document.createElementNS(SVGNS, &quot;SVG&quot;).nodeName, &quot;SVG&quot;)
+  assert_equals(document.createElementNS(HTMLNS, &quot;x:b&quot;).nodeName, &quot;x:b&quot;)
+}, &quot;For Element nodes, nodeName should return the same as tagName.&quot;)
+test(function() {
+  assert_equals(document.createTextNode(&quot;foo&quot;).nodeName, &quot;#text&quot;)
+}, &quot;For Text nodes, nodeName should return \&quot;#text\&quot;.&quot;)
+test(function() {
+  assert_equals(document.createProcessingInstruction(&quot;foo&quot;, &quot;bar&quot;).nodeName,
+                &quot;foo&quot;)
+}, &quot;For ProcessingInstruction nodes, nodeName should return the target.&quot;)
+test(function() {
+  assert_equals(document.createComment(&quot;foo&quot;).nodeName, &quot;#comment&quot;)
+}, &quot;For Comment nodes, nodeName should return \&quot;#comment\&quot;.&quot;)
+test(function() {
+  assert_equals(document.nodeName, &quot;#document&quot;)
+}, &quot;For Document nodes, nodeName should return \&quot;#document\&quot;.&quot;)
+test(function() {
+  assert_equals(document.doctype.nodeName, &quot;html&quot;)
+}, &quot;For DocumentType nodes, nodeName should return the name.&quot;)
+test(function() {
+  assert_equals(document.createDocumentFragment().nodeName,
+                &quot;#document-fragment&quot;)
+}, &quot;For DocumentFragment nodes, nodeName should return \&quot;#document-fragment\&quot;.&quot;)
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodenodeNamehtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodenodeNamehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-nodeName.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-nodeName.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-nodeName.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-nodeName.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;Node.nodeName&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  var HTMLNS = &quot;http://www.w3.org/1999/xhtml&quot;,
+      SVGNS = &quot;http://www.w3.org/2000/svg&quot;
+  assert_equals(document.createElementNS(HTMLNS, &quot;I&quot;).nodeName, &quot;I&quot;)
+  assert_equals(document.createElementNS(HTMLNS, &quot;i&quot;).nodeName, &quot;I&quot;)
+  assert_equals(document.createElementNS(SVGNS, &quot;svg&quot;).nodeName, &quot;svg&quot;)
+  assert_equals(document.createElementNS(SVGNS, &quot;SVG&quot;).nodeName, &quot;SVG&quot;)
+  assert_equals(document.createElementNS(HTMLNS, &quot;x:b&quot;).nodeName, &quot;X:B&quot;)
+}, &quot;For Element nodes, nodeName should return the same as tagName.&quot;)
+test(function() {
+  assert_equals(document.createTextNode(&quot;foo&quot;).nodeName, &quot;#text&quot;)
+}, &quot;For Text nodes, nodeName should return \&quot;#text\&quot;.&quot;)
+test(function() {
+  assert_equals(document.createComment(&quot;foo&quot;).nodeName, &quot;#comment&quot;)
+}, &quot;For Comment nodes, nodeName should return \&quot;#comment\&quot;.&quot;)
+test(function() {
+  assert_equals(document.nodeName, &quot;#document&quot;)
+}, &quot;For Document nodes, nodeName should return \&quot;#document\&quot;.&quot;)
+test(function() {
+  assert_equals(document.doctype.nodeName, &quot;html&quot;)
+}, &quot;For DocumentType nodes, nodeName should return the name.&quot;)
+test(function() {
+  assert_equals(document.createDocumentFragment().nodeName,
+                &quot;#document-fragment&quot;)
+}, &quot;For DocumentFragment nodes, nodeName should return \&quot;#document-fragment\&quot;.&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodenodeValueexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodenodeValueexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-nodeValue-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-nodeValue-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-nodeValue-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-nodeValue-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+
+PASS Text.nodeValue 
+PASS Comment.nodeValue 
+PASS ProcessingInstruction.nodeValue 
+PASS Element.nodeValue 
+PASS Document.nodeValue 
+PASS DocumentFragment.nodeValue 
+PASS DocumentType.nodeValue 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodenodeValuehtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodenodeValuehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-nodeValue.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-nodeValue.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-nodeValue.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-nodeValue.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,71 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Node.nodeValue&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-node-nodevalue&quot;&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  var the_text = document.createTextNode(&quot;A span!&quot;);
+  assert_equals(the_text.nodeValue, &quot;A span!&quot;);
+  assert_equals(the_text.data, &quot;A span!&quot;);
+  the_text.nodeValue = &quot;test again&quot;;
+  assert_equals(the_text.nodeValue, &quot;test again&quot;);
+  assert_equals(the_text.data, &quot;test again&quot;);
+  the_text.nodeValue = null;
+  assert_equals(the_text.nodeValue, &quot;&quot;);
+  assert_equals(the_text.data, &quot;&quot;);
+}, &quot;Text.nodeValue&quot;);
+
+test(function() {
+  var the_comment = document.createComment(&quot;A comment!&quot;);
+  assert_equals(the_comment.nodeValue, &quot;A comment!&quot;);
+  assert_equals(the_comment.data, &quot;A comment!&quot;);
+  the_comment.nodeValue = &quot;test again&quot;;
+  assert_equals(the_comment.nodeValue, &quot;test again&quot;);
+  assert_equals(the_comment.data, &quot;test again&quot;);
+  the_comment.nodeValue = null;
+  assert_equals(the_comment.nodeValue, &quot;&quot;);
+  assert_equals(the_comment.data, &quot;&quot;);
+}, &quot;Comment.nodeValue&quot;);
+
+test(function() {
+  var the_pi = document.createProcessingInstruction(&quot;pi&quot;, &quot;A PI!&quot;);
+  assert_equals(the_pi.nodeValue, &quot;A PI!&quot;);
+  assert_equals(the_pi.data, &quot;A PI!&quot;);
+  the_pi.nodeValue = &quot;test again&quot;;
+  assert_equals(the_pi.nodeValue, &quot;test again&quot;);
+  assert_equals(the_pi.data, &quot;test again&quot;);
+  the_pi.nodeValue = null;
+  assert_equals(the_pi.nodeValue, &quot;&quot;);
+  assert_equals(the_pi.data, &quot;&quot;);
+}, &quot;ProcessingInstruction.nodeValue&quot;);
+
+test(function() {
+  var the_link = document.createElement(&quot;a&quot;);
+  assert_equals(the_link.nodeValue, null);
+  the_link.nodeValue = &quot;foo&quot;;
+  assert_equals(the_link.nodeValue, null);
+}, &quot;Element.nodeValue&quot;);
+
+test(function() {
+  assert_equals(document.nodeValue, null);
+  document.nodeValue = &quot;foo&quot;;
+  assert_equals(document.nodeValue, null);
+}, &quot;Document.nodeValue&quot;);
+
+test(function() {
+  var the_frag = document.createDocumentFragment();
+  assert_equals(the_frag.nodeValue, null);
+  the_frag.nodeValue = &quot;foo&quot;;
+  assert_equals(the_frag.nodeValue, null);
+}, &quot;DocumentFragment.nodeValue&quot;);
+
+test(function() {
+  var the_doctype = document.doctype;
+  assert_equals(the_doctype.nodeValue, null);
+  the_doctype.nodeValue = &quot;foo&quot;;
+  assert_equals(the_doctype.nodeValue, null);
+}, &quot;DocumentType.nodeValue&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodenormalizeexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodenormalizeexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-normalize-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-normalize-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-normalize-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-normalize-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+
+PASS Node.normalize() 
+PASS Empty text nodes separated by a non-empty text node 
+PASS Empty text nodes 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodenormalizehtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodenormalizehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-normalize.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-normalize.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-normalize.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-normalize.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,54 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;Node.normalize()&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  var df = document.createDocumentFragment(),
+      t1 = document.createTextNode(&quot;1&quot;),
+      t2 = document.createTextNode(&quot;2&quot;),
+      t3 = document.createTextNode(&quot;3&quot;),
+      t4 = document.createTextNode(&quot;4&quot;)
+  df.appendChild(t1)
+  df.appendChild(t2)
+  assert_equals(df.childNodes.length, 2)
+  assert_equals(df.textContent, &quot;12&quot;)
+  var el = document.createElement('x')
+  df.appendChild(el)
+  el.appendChild(t3)
+  el.appendChild(t4)
+  document.normalize()
+  assert_equals(el.childNodes.length, 2)
+  assert_equals(el.textContent, &quot;34&quot;)
+  assert_equals(df.childNodes.length, 3)
+  assert_equals(t1.data, &quot;1&quot;)
+  df.normalize()
+  assert_equals(df.childNodes.length, 2)
+  assert_equals(df.firstChild, t1)
+  assert_equals(t1.data, &quot;12&quot;)
+  assert_equals(t2.data, &quot;2&quot;)
+  assert_equals(el.firstChild, t3)
+  assert_equals(t3.data, &quot;34&quot;)
+  assert_equals(t4.data, &quot;4&quot;)
+})
+
+// https://www.w3.org/Bugs/Public/show_bug.cgi?id=19837
+test(function() {
+  var div = document.createElement(&quot;div&quot;)
+  var t1 = div.appendChild(document.createTextNode(&quot;&quot;))
+  var t2 = div.appendChild(document.createTextNode(&quot;a&quot;))
+  var t3 = div.appendChild(document.createTextNode(&quot;&quot;))
+  assert_array_equals(div.childNodes, [t1, t2, t3])
+  div.normalize();
+  assert_array_equals(div.childNodes, [t2])
+}, &quot;Empty text nodes separated by a non-empty text node&quot;)
+test(function() {
+  var div = document.createElement(&quot;div&quot;)
+  var t1 = div.appendChild(document.createTextNode(&quot;&quot;))
+  var t2 = div.appendChild(document.createTextNode(&quot;&quot;))
+  assert_array_equals(div.childNodes, [t1, t2])
+  div.normalize();
+  assert_array_equals(div.childNodes, [])
+}, &quot;Empty text nodes&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeparentElementexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodeparentElementexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-parentElement-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-parentElement-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-parentElement-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-parentElement-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+
+PASS When the parent is null, parentElement should be null 
+PASS When the parent is a document, parentElement should be null (doctype) 
+PASS When the parent is a document, parentElement should be null (element) 
+PASS When the parent is a document, parentElement should be null (comment) 
+PASS parentElement should return null for children of DocumentFragments (element) 
+PASS parentElement should return null for children of DocumentFragments (text) 
+PASS parentElement should work correctly with DocumentFragments (element) 
+PASS parentElement should work correctly with DocumentFragments (text) 
+PASS parentElement should work correctly in disconnected subtrees (element) 
+PASS parentElement should work correctly in disconnected subtrees (text) 
+PASS parentElement should work correctly in a document (element) 
+PASS parentElement should work correctly in a document (text) 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeparentElementhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodeparentElementhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-parentElement.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-parentElement.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-parentElement.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-parentElement.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,83 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;Node.parentElement&lt;/title&gt;
+&lt;link rel=&quot;stylesheet&quot; href=&quot;/resources/testharness.css&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  assert_equals(document.parentElement, null)
+}, &quot;When the parent is null, parentElement should be null&quot;)
+test(function() {
+  assert_equals(document.doctype.parentElement, null)
+}, &quot;When the parent is a document, parentElement should be null (doctype)&quot;)
+test(function() {
+  assert_equals(document.documentElement.parentElement, null)
+}, &quot;When the parent is a document, parentElement should be null (element)&quot;)
+test(function() {
+  var comment = document.appendChild(document.createComment(&quot;foo&quot;))
+  assert_equals(comment.parentElement, null)
+}, &quot;When the parent is a document, parentElement should be null (comment)&quot;)
+test(function() {
+  var df = document.createDocumentFragment()
+  assert_equals(df.parentElement, null)
+  var el = document.createElement(&quot;div&quot;)
+  assert_equals(el.parentElement, null)
+  df.appendChild(el)
+  assert_equals(el.parentNode, df)
+  assert_equals(el.parentElement, null)
+}, &quot;parentElement should return null for children of DocumentFragments (element)&quot;)
+test(function() {
+  var df = document.createDocumentFragment()
+  assert_equals(df.parentElement, null)
+  var text = document.createTextNode(&quot;bar&quot;)
+  assert_equals(text.parentElement, null)
+  df.appendChild(text)
+  assert_equals(text.parentNode, df)
+  assert_equals(text.parentElement, null)
+}, &quot;parentElement should return null for children of DocumentFragments (text)&quot;)
+test(function() {
+  var df = document.createDocumentFragment()
+  var parent = document.createElement(&quot;div&quot;)
+  df.appendChild(parent)
+  var el = document.createElement(&quot;div&quot;)
+  assert_equals(el.parentElement, null)
+  parent.appendChild(el)
+  assert_equals(el.parentElement, parent)
+}, &quot;parentElement should work correctly with DocumentFragments (element)&quot;)
+test(function() {
+  var df = document.createDocumentFragment()
+  var parent = document.createElement(&quot;div&quot;)
+  df.appendChild(parent)
+  var text = document.createTextNode(&quot;bar&quot;)
+  assert_equals(text.parentElement, null)
+  parent.appendChild(text)
+  assert_equals(text.parentElement, parent)
+}, &quot;parentElement should work correctly with DocumentFragments (text)&quot;)
+test(function() {
+  var parent = document.createElement(&quot;div&quot;)
+  var el = document.createElement(&quot;div&quot;)
+  assert_equals(el.parentElement, null)
+  parent.appendChild(el)
+  assert_equals(el.parentElement, parent)
+}, &quot;parentElement should work correctly in disconnected subtrees (element)&quot;)
+test(function() {
+  var parent = document.createElement(&quot;div&quot;)
+  var text = document.createTextNode(&quot;bar&quot;)
+  assert_equals(text.parentElement, null)
+  parent.appendChild(text)
+  assert_equals(text.parentElement, parent)
+}, &quot;parentElement should work correctly in disconnected subtrees (text)&quot;)
+test(function() {
+  var el = document.createElement(&quot;div&quot;)
+  assert_equals(el.parentElement, null)
+  document.body.appendChild(el)
+  assert_equals(el.parentElement, document.body)
+}, &quot;parentElement should work correctly in a document (element)&quot;)
+test(function() {
+  var text = document.createElement(&quot;div&quot;)
+  assert_equals(text.parentElement, null)
+  document.body.appendChild(text)
+  assert_equals(text.parentElement, document.body)
+}, &quot;parentElement should work correctly in a document (text)&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeparentNodeexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodeparentNodeexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-parentNode-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-parentNode-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-parentNode-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-parentNode-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+
+PASS Document 
+PASS Doctype 
+PASS Root element 
+PASS Element 
+PASS Removed iframe 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeparentNodeiframeexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-parentNode-iframe-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-parentNode-iframe-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-parentNode-iframe-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+  RenderBlock {HTML} at (0,0) size 800x600
+    RenderBody {BODY} at (8,8) size 784x584
+      RenderInline {A} at (0,0) size 8x18
+        RenderText {#text} at (0,0) size 8x18
+          text run at (0,0) width 8: &quot;c&quot;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeparentNodeiframehtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-parentNode-iframe.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-parentNode-iframe.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-parentNode-iframe.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;a name='c'&gt;c&lt;/a&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodeparentNodehtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodeparentNodehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-parentNode.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-parentNode.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-parentNode.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-parentNode.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;Node.parentNode&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+// XXX need to test for more node types
+test(function() {
+  assert_equals(document.parentNode, null)
+}, &quot;Document&quot;)
+test(function() {
+  assert_equals(document.doctype.parentNode, document)
+}, &quot;Doctype&quot;)
+test(function() {
+  assert_equals(document.documentElement.parentNode, document)
+}, &quot;Root element&quot;)
+test(function() {
+  var el = document.createElement(&quot;div&quot;)
+  assert_equals(el.parentNode, null)
+  document.body.appendChild(el)
+  assert_equals(el.parentNode, document.body)
+}, &quot;Element&quot;)
+var t = async_test(&quot;Removed iframe&quot;);
+function testIframe(iframe) {
+  t.step(function() {
+    var doc = iframe.contentDocument;
+    iframe.parentNode.removeChild(iframe);
+    assert_equals(doc.firstChild.parentNode, doc);
+  });
+  t.done();
+}
+&lt;/script&gt;
+&lt;iframe id=a src=&quot;Node-parentNode-iframe.html&quot; onload=&quot;testIframe(this)&quot;&gt;&lt;/iframe&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodepropertiesexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodepropertiesexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-properties-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-properties-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-properties-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-properties-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,698 @@
</span><ins>+
+PASS testDiv.nodeType 
+PASS testDiv.ownerDocument 
+PASS testDiv.parentNode 
+PASS testDiv.parentElement 
+PASS testDiv.childNodes.length 
+PASS testDiv.childNodes[0] 
+PASS testDiv.childNodes[1] 
+PASS testDiv.childNodes[2] 
+PASS testDiv.childNodes[3] 
+PASS testDiv.childNodes[4] 
+PASS testDiv.childNodes[5] 
+PASS testDiv.previousSibling 
+PASS testDiv.nextSibling 
+PASS testDiv.textContent 
+PASS testDiv.namespaceURI 
+PASS testDiv.prefix 
+PASS testDiv.localName 
+PASS testDiv.tagName 
+PASS testDiv.id 
+PASS testDiv.children[0] 
+PASS testDiv.children[1] 
+PASS testDiv.children[2] 
+PASS testDiv.children[3] 
+PASS testDiv.children[4] 
+PASS testDiv.previousElementSibling 
+PASS testDiv.childElementCount 
+PASS testDiv.nodeName 
+PASS testDiv.nodeValue 
+PASS testDiv.children.length 
+PASS testDiv.className 
+PASS testDiv.firstElementChild 
+PASS testDiv.lastElementChild 
+PASS testDiv.firstChild 
+PASS testDiv.lastChild 
+PASS testDiv.hasChildNodes() 
+PASS detachedDiv.nodeType 
+PASS detachedDiv.ownerDocument 
+PASS detachedDiv.parentNode 
+PASS detachedDiv.parentElement 
+PASS detachedDiv.childNodes.length 
+PASS detachedDiv.childNodes[0] 
+PASS detachedDiv.childNodes[1] 
+PASS detachedDiv.previousSibling 
+PASS detachedDiv.nextSibling 
+PASS detachedDiv.textContent 
+PASS detachedDiv.namespaceURI 
+PASS detachedDiv.prefix 
+PASS detachedDiv.localName 
+PASS detachedDiv.tagName 
+PASS detachedDiv.children[0] 
+PASS detachedDiv.children[1] 
+PASS detachedDiv.previousElementSibling 
+PASS detachedDiv.nextElementSibling 
+PASS detachedDiv.childElementCount 
+PASS detachedDiv.nodeName 
+PASS detachedDiv.nodeValue 
+PASS detachedDiv.children.length 
+PASS detachedDiv.id 
+PASS detachedDiv.className 
+PASS detachedDiv.firstElementChild 
+PASS detachedDiv.lastElementChild 
+PASS detachedDiv.firstChild 
+PASS detachedDiv.lastChild 
+PASS detachedDiv.hasChildNodes() 
+PASS detachedPara1.nodeType 
+PASS detachedPara1.ownerDocument 
+PASS detachedPara1.parentNode 
+PASS detachedPara1.parentElement 
+PASS detachedPara1.childNodes.length 
+PASS detachedPara1.previousSibling 
+PASS detachedPara1.nextSibling 
+PASS detachedPara1.textContent 
+PASS detachedPara1.namespaceURI 
+PASS detachedPara1.prefix 
+PASS detachedPara1.localName 
+PASS detachedPara1.tagName 
+PASS detachedPara1.previousElementSibling 
+PASS detachedPara1.nextElementSibling 
+PASS detachedPara1.childElementCount 
+PASS detachedPara1.nodeName 
+PASS detachedPara1.nodeValue 
+PASS detachedPara1.children.length 
+PASS detachedPara1.id 
+PASS detachedPara1.className 
+PASS detachedPara1.lastElementChild 
+PASS detachedPara1.firstElementChild 
+PASS detachedPara1.firstChild 
+PASS detachedPara1.lastChild 
+PASS detachedPara1.hasChildNodes() 
+PASS detachedPara2.nodeType 
+PASS detachedPara2.ownerDocument 
+PASS detachedPara2.parentNode 
+PASS detachedPara2.parentElement 
+PASS detachedPara2.childNodes.length 
+PASS detachedPara2.previousSibling 
+PASS detachedPara2.nextSibling 
+PASS detachedPara2.textContent 
+PASS detachedPara2.namespaceURI 
+PASS detachedPara2.prefix 
+PASS detachedPara2.localName 
+PASS detachedPara2.tagName 
+PASS detachedPara2.previousElementSibling 
+PASS detachedPara2.nextElementSibling 
+PASS detachedPara2.childElementCount 
+PASS detachedPara2.nodeName 
+PASS detachedPara2.nodeValue 
+PASS detachedPara2.children.length 
+PASS detachedPara2.id 
+PASS detachedPara2.className 
+PASS detachedPara2.lastElementChild 
+PASS detachedPara2.firstElementChild 
+PASS detachedPara2.firstChild 
+PASS detachedPara2.lastChild 
+PASS detachedPara2.hasChildNodes() 
+PASS document.nodeType 
+PASS document.childNodes.length 
+PASS document.childNodes[0] 
+PASS document.childNodes[1] 
+PASS document.URL 
+PASS document.compatMode 
+PASS document.characterSet 
+PASS document.inputEncoding 
+PASS document.contentType 
+PASS document.doctype 
+PASS document.nodeName 
+PASS document.textContent 
+PASS document.nodeValue 
+PASS document.nextSibling 
+PASS document.previousSibling 
+PASS document.parentElement 
+PASS document.parentNode 
+PASS document.ownerDocument 
+PASS document.documentURI 
+PASS document.firstChild 
+PASS document.lastChild 
+PASS document.hasChildNodes() 
+PASS foreignDoc.nodeType 
+PASS foreignDoc.childNodes.length 
+PASS foreignDoc.childNodes[0] 
+PASS foreignDoc.childNodes[1] 
+PASS foreignDoc.childNodes[2] 
+FAIL foreignDoc.URL assert_equals: expected &quot;about:blank&quot; but got &quot;&quot;
+PASS foreignDoc.compatMode 
+FAIL foreignDoc.characterSet assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+FAIL foreignDoc.inputEncoding assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS foreignDoc.contentType 
+PASS foreignDoc.nodeName 
+PASS foreignDoc.textContent 
+PASS foreignDoc.nodeValue 
+PASS foreignDoc.nextSibling 
+PASS foreignDoc.previousSibling 
+PASS foreignDoc.parentElement 
+PASS foreignDoc.parentNode 
+PASS foreignDoc.ownerDocument 
+FAIL foreignDoc.documentURI assert_equals: expected (string) &quot;about:blank&quot; but got (object) null
+PASS foreignDoc.firstChild 
+PASS foreignDoc.lastChild 
+PASS foreignDoc.hasChildNodes() 
+PASS foreignPara1.nodeType 
+PASS foreignPara1.ownerDocument 
+PASS foreignPara1.parentNode 
+PASS foreignPara1.parentElement 
+PASS foreignPara1.childNodes.length 
+PASS foreignPara1.previousSibling 
+PASS foreignPara1.nextSibling 
+PASS foreignPara1.textContent 
+PASS foreignPara1.namespaceURI 
+PASS foreignPara1.prefix 
+PASS foreignPara1.localName 
+PASS foreignPara1.tagName 
+PASS foreignPara1.previousElementSibling 
+PASS foreignPara1.nextElementSibling 
+PASS foreignPara1.childElementCount 
+PASS foreignPara1.nodeName 
+PASS foreignPara1.nodeValue 
+PASS foreignPara1.children.length 
+PASS foreignPara1.id 
+PASS foreignPara1.className 
+PASS foreignPara1.lastElementChild 
+PASS foreignPara1.firstElementChild 
+PASS foreignPara1.firstChild 
+PASS foreignPara1.lastChild 
+PASS foreignPara1.hasChildNodes() 
+PASS foreignPara2.nodeType 
+PASS foreignPara2.ownerDocument 
+PASS foreignPara2.parentNode 
+PASS foreignPara2.parentElement 
+PASS foreignPara2.childNodes.length 
+PASS foreignPara2.previousSibling 
+PASS foreignPara2.nextSibling 
+PASS foreignPara2.textContent 
+PASS foreignPara2.namespaceURI 
+PASS foreignPara2.prefix 
+PASS foreignPara2.localName 
+PASS foreignPara2.tagName 
+PASS foreignPara2.previousElementSibling 
+PASS foreignPara2.nextElementSibling 
+PASS foreignPara2.childElementCount 
+PASS foreignPara2.nodeName 
+PASS foreignPara2.nodeValue 
+PASS foreignPara2.children.length 
+PASS foreignPara2.id 
+PASS foreignPara2.className 
+PASS foreignPara2.lastElementChild 
+PASS foreignPara2.firstElementChild 
+PASS foreignPara2.firstChild 
+PASS foreignPara2.lastChild 
+PASS foreignPara2.hasChildNodes() 
+PASS xmlDoc.nodeType 
+PASS xmlDoc.childNodes.length 
+PASS xmlDoc.childNodes[0] 
+PASS xmlDoc.childNodes[1] 
+PASS xmlDoc.childNodes[2] 
+PASS xmlDoc.childNodes[3] 
+FAIL xmlDoc.URL assert_equals: expected &quot;about:blank&quot; but got &quot;&quot;
+PASS xmlDoc.compatMode 
+FAIL xmlDoc.characterSet assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+FAIL xmlDoc.inputEncoding assert_equals: expected (string) &quot;UTF-8&quot; but got (object) null
+PASS xmlDoc.contentType 
+PASS xmlDoc.nodeName 
+PASS xmlDoc.textContent 
+PASS xmlDoc.nodeValue 
+PASS xmlDoc.nextSibling 
+PASS xmlDoc.previousSibling 
+PASS xmlDoc.parentElement 
+PASS xmlDoc.parentNode 
+PASS xmlDoc.ownerDocument 
+FAIL xmlDoc.documentURI assert_equals: expected (string) &quot;about:blank&quot; but got (object) null
+PASS xmlDoc.firstChild 
+PASS xmlDoc.lastChild 
+PASS xmlDoc.hasChildNodes() 
+PASS xmlElement.nodeType 
+PASS xmlElement.ownerDocument 
+PASS xmlElement.parentNode 
+PASS xmlElement.parentElement 
+PASS xmlElement.childNodes.length 
+PASS xmlElement.childNodes[0] 
+PASS xmlElement.previousSibling 
+PASS xmlElement.nextSibling 
+PASS xmlElement.textContent 
+FAIL xmlElement.namespaceURI assert_equals: expected (string) &quot;http://www.w3.org/1999/xhtml&quot; but got (object) null
+PASS xmlElement.prefix 
+PASS xmlElement.localName 
+PASS xmlElement.tagName 
+PASS xmlElement.previousElementSibling 
+PASS xmlElement.nextElementSibling 
+PASS xmlElement.childElementCount 
+PASS xmlElement.nodeName 
+PASS xmlElement.nodeValue 
+PASS xmlElement.children.length 
+PASS xmlElement.id 
+PASS xmlElement.className 
+PASS xmlElement.lastElementChild 
+PASS xmlElement.firstElementChild 
+PASS xmlElement.firstChild 
+PASS xmlElement.lastChild 
+PASS xmlElement.hasChildNodes() 
+PASS detachedXmlElement.nodeType 
+PASS detachedXmlElement.ownerDocument 
+PASS detachedXmlElement.parentNode 
+PASS detachedXmlElement.parentElement 
+PASS detachedXmlElement.childNodes.length 
+PASS detachedXmlElement.previousSibling 
+PASS detachedXmlElement.nextSibling 
+PASS detachedXmlElement.textContent 
+FAIL detachedXmlElement.namespaceURI assert_equals: expected (string) &quot;http://www.w3.org/1999/xhtml&quot; but got (object) null
+PASS detachedXmlElement.prefix 
+PASS detachedXmlElement.localName 
+PASS detachedXmlElement.tagName 
+PASS detachedXmlElement.previousElementSibling 
+PASS detachedXmlElement.nextElementSibling 
+PASS detachedXmlElement.childElementCount 
+PASS detachedXmlElement.nodeName 
+PASS detachedXmlElement.nodeValue 
+PASS detachedXmlElement.children.length 
+PASS detachedXmlElement.id 
+PASS detachedXmlElement.className 
+PASS detachedXmlElement.lastElementChild 
+PASS detachedXmlElement.firstElementChild 
+PASS detachedXmlElement.lastChild 
+PASS detachedXmlElement.firstChild 
+PASS detachedXmlElement.hasChildNodes() 
+PASS detachedTextNode.nodeType 
+PASS detachedTextNode.ownerDocument 
+PASS detachedTextNode.parentNode 
+PASS detachedTextNode.parentElement 
+PASS detachedTextNode.previousSibling 
+PASS detachedTextNode.nextSibling 
+PASS detachedTextNode.nodeValue 
+PASS detachedTextNode.wholeText 
+PASS detachedTextNode.nodeName 
+PASS detachedTextNode.childNodes.length 
+PASS detachedTextNode.data 
+PASS detachedTextNode.textContent 
+PASS detachedTextNode.length 
+PASS detachedTextNode.lastChild 
+PASS detachedTextNode.firstChild 
+PASS detachedTextNode.hasChildNodes() 
+PASS foreignTextNode.nodeType 
+PASS foreignTextNode.ownerDocument 
+PASS foreignTextNode.parentNode 
+PASS foreignTextNode.parentElement 
+PASS foreignTextNode.previousSibling 
+PASS foreignTextNode.nextSibling 
+PASS foreignTextNode.nodeValue 
+PASS foreignTextNode.wholeText 
+PASS foreignTextNode.nodeName 
+PASS foreignTextNode.childNodes.length 
+PASS foreignTextNode.data 
+PASS foreignTextNode.textContent 
+PASS foreignTextNode.length 
+PASS foreignTextNode.lastChild 
+PASS foreignTextNode.firstChild 
+PASS foreignTextNode.hasChildNodes() 
+PASS detachedForeignTextNode.nodeType 
+PASS detachedForeignTextNode.ownerDocument 
+PASS detachedForeignTextNode.parentNode 
+PASS detachedForeignTextNode.parentElement 
+PASS detachedForeignTextNode.previousSibling 
+PASS detachedForeignTextNode.nextSibling 
+PASS detachedForeignTextNode.nodeValue 
+PASS detachedForeignTextNode.wholeText 
+PASS detachedForeignTextNode.nodeName 
+PASS detachedForeignTextNode.childNodes.length 
+PASS detachedForeignTextNode.data 
+PASS detachedForeignTextNode.textContent 
+PASS detachedForeignTextNode.length 
+PASS detachedForeignTextNode.lastChild 
+PASS detachedForeignTextNode.firstChild 
+PASS detachedForeignTextNode.hasChildNodes() 
+PASS xmlTextNode.nodeType 
+PASS xmlTextNode.ownerDocument 
+PASS xmlTextNode.parentNode 
+PASS xmlTextNode.parentElement 
+PASS xmlTextNode.previousSibling 
+PASS xmlTextNode.nextSibling 
+PASS xmlTextNode.nodeValue 
+PASS xmlTextNode.wholeText 
+PASS xmlTextNode.nodeName 
+PASS xmlTextNode.childNodes.length 
+PASS xmlTextNode.data 
+PASS xmlTextNode.textContent 
+PASS xmlTextNode.length 
+PASS xmlTextNode.lastChild 
+PASS xmlTextNode.firstChild 
+PASS xmlTextNode.hasChildNodes() 
+PASS detachedXmlTextNode.nodeType 
+PASS detachedXmlTextNode.ownerDocument 
+PASS detachedXmlTextNode.parentNode 
+PASS detachedXmlTextNode.parentElement 
+PASS detachedXmlTextNode.previousSibling 
+PASS detachedXmlTextNode.nextSibling 
+PASS detachedXmlTextNode.nodeValue 
+PASS detachedXmlTextNode.wholeText 
+PASS detachedXmlTextNode.nodeName 
+PASS detachedXmlTextNode.childNodes.length 
+PASS detachedXmlTextNode.data 
+PASS detachedXmlTextNode.textContent 
+PASS detachedXmlTextNode.length 
+PASS detachedXmlTextNode.lastChild 
+PASS detachedXmlTextNode.firstChild 
+PASS detachedXmlTextNode.hasChildNodes() 
+PASS processingInstruction.nodeType 
+PASS processingInstruction.ownerDocument 
+PASS processingInstruction.parentNode 
+PASS processingInstruction.parentElement 
+PASS processingInstruction.previousSibling 
+PASS processingInstruction.nextSibling 
+PASS processingInstruction.nodeValue 
+PASS processingInstruction.target 
+PASS processingInstruction.nodeName 
+PASS processingInstruction.childNodes.length 
+PASS processingInstruction.data 
+PASS processingInstruction.textContent 
+PASS processingInstruction.length 
+PASS processingInstruction.lastChild 
+PASS processingInstruction.firstChild 
+PASS processingInstruction.hasChildNodes() 
+PASS detachedProcessingInstruction.nodeType 
+PASS detachedProcessingInstruction.ownerDocument 
+PASS detachedProcessingInstruction.parentNode 
+PASS detachedProcessingInstruction.parentElement 
+PASS detachedProcessingInstruction.previousSibling 
+PASS detachedProcessingInstruction.nextSibling 
+PASS detachedProcessingInstruction.nodeValue 
+PASS detachedProcessingInstruction.target 
+PASS detachedProcessingInstruction.nodeName 
+PASS detachedProcessingInstruction.childNodes.length 
+PASS detachedProcessingInstruction.data 
+PASS detachedProcessingInstruction.textContent 
+PASS detachedProcessingInstruction.length 
+PASS detachedProcessingInstruction.lastChild 
+PASS detachedProcessingInstruction.firstChild 
+PASS detachedProcessingInstruction.hasChildNodes() 
+PASS comment.nodeType 
+PASS comment.ownerDocument 
+PASS comment.parentNode 
+PASS comment.parentElement 
+PASS comment.previousSibling 
+PASS comment.nextSibling 
+PASS comment.nodeValue 
+PASS comment.nodeName 
+PASS comment.childNodes.length 
+PASS comment.data 
+PASS comment.textContent 
+PASS comment.length 
+PASS comment.lastChild 
+PASS comment.firstChild 
+PASS comment.hasChildNodes() 
+PASS detachedComment.nodeType 
+PASS detachedComment.ownerDocument 
+PASS detachedComment.parentNode 
+PASS detachedComment.parentElement 
+PASS detachedComment.previousSibling 
+PASS detachedComment.nextSibling 
+PASS detachedComment.nodeValue 
+PASS detachedComment.nodeName 
+PASS detachedComment.childNodes.length 
+PASS detachedComment.data 
+PASS detachedComment.textContent 
+PASS detachedComment.length 
+PASS detachedComment.lastChild 
+PASS detachedComment.firstChild 
+PASS detachedComment.hasChildNodes() 
+PASS foreignComment.nodeType 
+PASS foreignComment.ownerDocument 
+PASS foreignComment.parentNode 
+PASS foreignComment.parentElement 
+PASS foreignComment.previousSibling 
+PASS foreignComment.nextSibling 
+PASS foreignComment.nodeValue 
+PASS foreignComment.nodeName 
+PASS foreignComment.childNodes.length 
+PASS foreignComment.data 
+PASS foreignComment.textContent 
+PASS foreignComment.length 
+PASS foreignComment.lastChild 
+PASS foreignComment.firstChild 
+PASS foreignComment.hasChildNodes() 
+PASS detachedForeignComment.nodeType 
+PASS detachedForeignComment.ownerDocument 
+PASS detachedForeignComment.parentNode 
+PASS detachedForeignComment.parentElement 
+PASS detachedForeignComment.previousSibling 
+PASS detachedForeignComment.nextSibling 
+PASS detachedForeignComment.nodeValue 
+PASS detachedForeignComment.nodeName 
+PASS detachedForeignComment.childNodes.length 
+PASS detachedForeignComment.data 
+PASS detachedForeignComment.textContent 
+PASS detachedForeignComment.length 
+PASS detachedForeignComment.lastChild 
+PASS detachedForeignComment.firstChild 
+PASS detachedForeignComment.hasChildNodes() 
+PASS xmlComment.nodeType 
+PASS xmlComment.ownerDocument 
+PASS xmlComment.parentNode 
+PASS xmlComment.parentElement 
+PASS xmlComment.previousSibling 
+PASS xmlComment.nextSibling 
+PASS xmlComment.nodeValue 
+PASS xmlComment.nodeName 
+PASS xmlComment.childNodes.length 
+PASS xmlComment.data 
+PASS xmlComment.textContent 
+PASS xmlComment.length 
+PASS xmlComment.lastChild 
+PASS xmlComment.firstChild 
+PASS xmlComment.hasChildNodes() 
+PASS detachedXmlComment.nodeType 
+PASS detachedXmlComment.ownerDocument 
+PASS detachedXmlComment.parentNode 
+PASS detachedXmlComment.parentElement 
+PASS detachedXmlComment.previousSibling 
+PASS detachedXmlComment.nextSibling 
+PASS detachedXmlComment.nodeValue 
+PASS detachedXmlComment.nodeName 
+PASS detachedXmlComment.childNodes.length 
+PASS detachedXmlComment.data 
+PASS detachedXmlComment.textContent 
+PASS detachedXmlComment.length 
+PASS detachedXmlComment.lastChild 
+PASS detachedXmlComment.firstChild 
+PASS detachedXmlComment.hasChildNodes() 
+PASS docfrag.nodeType 
+PASS docfrag.ownerDocument 
+PASS docfrag.childNodes.length 
+PASS docfrag.textContent 
+PASS docfrag.nodeName 
+PASS docfrag.nodeValue 
+PASS docfrag.nextSibling 
+PASS docfrag.previousSibling 
+PASS docfrag.parentElement 
+PASS docfrag.parentNode 
+PASS docfrag.lastChild 
+PASS docfrag.firstChild 
+PASS docfrag.hasChildNodes() 
+PASS foreignDocfrag.nodeType 
+PASS foreignDocfrag.ownerDocument 
+PASS foreignDocfrag.childNodes.length 
+PASS foreignDocfrag.textContent 
+PASS foreignDocfrag.nodeName 
+PASS foreignDocfrag.nodeValue 
+PASS foreignDocfrag.nextSibling 
+PASS foreignDocfrag.previousSibling 
+PASS foreignDocfrag.parentElement 
+PASS foreignDocfrag.parentNode 
+PASS foreignDocfrag.lastChild 
+PASS foreignDocfrag.firstChild 
+PASS foreignDocfrag.hasChildNodes() 
+PASS xmlDocfrag.nodeType 
+PASS xmlDocfrag.ownerDocument 
+PASS xmlDocfrag.childNodes.length 
+PASS xmlDocfrag.textContent 
+PASS xmlDocfrag.nodeName 
+PASS xmlDocfrag.nodeValue 
+PASS xmlDocfrag.nextSibling 
+PASS xmlDocfrag.previousSibling 
+PASS xmlDocfrag.parentElement 
+PASS xmlDocfrag.parentNode 
+PASS xmlDocfrag.lastChild 
+PASS xmlDocfrag.firstChild 
+PASS xmlDocfrag.hasChildNodes() 
+PASS doctype.nodeType 
+PASS doctype.ownerDocument 
+PASS doctype.parentNode 
+PASS doctype.previousSibling 
+PASS doctype.nextSibling 
+PASS doctype.name 
+FAIL doctype.publicId assert_equals: expected (string) &quot;&quot; but got (object) null
+FAIL doctype.systemId assert_equals: expected (string) &quot;&quot; but got (object) null
+PASS doctype.nodeName 
+PASS doctype.childNodes.length 
+PASS doctype.textContent 
+PASS doctype.nodeValue 
+PASS doctype.parentElement 
+PASS doctype.lastChild 
+PASS doctype.firstChild 
+PASS doctype.hasChildNodes() 
+PASS foreignDoctype.nodeType 
+PASS foreignDoctype.ownerDocument 
+PASS foreignDoctype.parentNode 
+PASS foreignDoctype.previousSibling 
+PASS foreignDoctype.nextSibling 
+PASS foreignDoctype.name 
+FAIL foreignDoctype.publicId assert_equals: expected (string) &quot;&quot; but got (object) null
+FAIL foreignDoctype.systemId assert_equals: expected (string) &quot;&quot; but got (object) null
+PASS foreignDoctype.nodeName 
+PASS foreignDoctype.childNodes.length 
+PASS foreignDoctype.textContent 
+PASS foreignDoctype.nodeValue 
+PASS foreignDoctype.parentElement 
+PASS foreignDoctype.lastChild 
+PASS foreignDoctype.firstChild 
+PASS foreignDoctype.hasChildNodes() 
+PASS xmlDoctype.nodeType 
+PASS xmlDoctype.ownerDocument 
+PASS xmlDoctype.parentNode 
+PASS xmlDoctype.previousSibling 
+PASS xmlDoctype.nextSibling 
+PASS xmlDoctype.name 
+PASS xmlDoctype.publicId 
+PASS xmlDoctype.systemId 
+PASS xmlDoctype.nodeName 
+PASS xmlDoctype.childNodes.length 
+PASS xmlDoctype.textContent 
+PASS xmlDoctype.nodeValue 
+PASS xmlDoctype.parentElement 
+PASS xmlDoctype.lastChild 
+PASS xmlDoctype.firstChild 
+PASS xmlDoctype.hasChildNodes() 
+PASS paras[0].nodeType 
+PASS paras[0].ownerDocument 
+PASS paras[0].parentNode 
+PASS paras[0].parentElement 
+PASS paras[0].childNodes.length 
+PASS paras[0].previousSibling 
+PASS paras[0].nextSibling 
+PASS paras[0].textContent 
+PASS paras[0].namespaceURI 
+PASS paras[0].prefix 
+PASS paras[0].localName 
+PASS paras[0].tagName 
+PASS paras[0].id 
+PASS paras[0].previousElementSibling 
+PASS paras[0].nextElementSibling 
+PASS paras[0].childElementCount 
+PASS paras[0].nodeName 
+PASS paras[0].nodeValue 
+PASS paras[0].children.length 
+PASS paras[0].className 
+PASS paras[0].lastElementChild 
+PASS paras[0].firstElementChild 
+PASS paras[0].firstChild 
+PASS paras[0].lastChild 
+PASS paras[0].hasChildNodes() 
+PASS paras[1].nodeType 
+PASS paras[1].ownerDocument 
+PASS paras[1].parentNode 
+PASS paras[1].parentElement 
+PASS paras[1].childNodes.length 
+PASS paras[1].previousSibling 
+PASS paras[1].nextSibling 
+PASS paras[1].textContent 
+PASS paras[1].namespaceURI 
+PASS paras[1].prefix 
+PASS paras[1].localName 
+PASS paras[1].tagName 
+PASS paras[1].id 
+PASS paras[1].previousElementSibling 
+PASS paras[1].nextElementSibling 
+PASS paras[1].childElementCount 
+PASS paras[1].nodeName 
+PASS paras[1].nodeValue 
+PASS paras[1].children.length 
+PASS paras[1].className 
+PASS paras[1].lastElementChild 
+PASS paras[1].firstElementChild 
+PASS paras[1].firstChild 
+PASS paras[1].lastChild 
+PASS paras[1].hasChildNodes() 
+PASS paras[2].nodeType 
+PASS paras[2].ownerDocument 
+PASS paras[2].parentNode 
+PASS paras[2].parentElement 
+PASS paras[2].childNodes.length 
+PASS paras[2].previousSibling 
+PASS paras[2].nextSibling 
+PASS paras[2].textContent 
+PASS paras[2].namespaceURI 
+PASS paras[2].prefix 
+PASS paras[2].localName 
+PASS paras[2].tagName 
+PASS paras[2].id 
+PASS paras[2].previousElementSibling 
+PASS paras[2].nextElementSibling 
+PASS paras[2].childElementCount 
+PASS paras[2].nodeName 
+PASS paras[2].nodeValue 
+PASS paras[2].children.length 
+PASS paras[2].className 
+PASS paras[2].lastElementChild 
+PASS paras[2].firstElementChild 
+PASS paras[2].firstChild 
+PASS paras[2].lastChild 
+PASS paras[2].hasChildNodes() 
+PASS paras[3].nodeType 
+PASS paras[3].ownerDocument 
+PASS paras[3].parentNode 
+PASS paras[3].parentElement 
+PASS paras[3].childNodes.length 
+PASS paras[3].previousSibling 
+PASS paras[3].nextSibling 
+PASS paras[3].textContent 
+PASS paras[3].namespaceURI 
+PASS paras[3].prefix 
+PASS paras[3].localName 
+PASS paras[3].tagName 
+PASS paras[3].id 
+PASS paras[3].previousElementSibling 
+PASS paras[3].nextElementSibling 
+PASS paras[3].childElementCount 
+PASS paras[3].nodeName 
+PASS paras[3].nodeValue 
+PASS paras[3].children.length 
+PASS paras[3].className 
+PASS paras[3].lastElementChild 
+PASS paras[3].firstElementChild 
+PASS paras[3].firstChild 
+PASS paras[3].lastChild 
+PASS paras[3].hasChildNodes() 
+PASS paras[4].nodeType 
+PASS paras[4].ownerDocument 
+PASS paras[4].parentNode 
+PASS paras[4].parentElement 
+PASS paras[4].childNodes.length 
+PASS paras[4].previousSibling 
+PASS paras[4].nextSibling 
+PASS paras[4].textContent 
+PASS paras[4].namespaceURI 
+PASS paras[4].prefix 
+PASS paras[4].localName 
+PASS paras[4].tagName 
+PASS paras[4].id 
+PASS paras[4].previousElementSibling 
+PASS paras[4].nextElementSibling 
+PASS paras[4].childElementCount 
+PASS paras[4].nodeName 
+PASS paras[4].nodeValue 
+PASS paras[4].children.length 
+PASS paras[4].className 
+PASS paras[4].lastElementChild 
+PASS paras[4].firstElementChild 
+PASS paras[4].firstChild 
+PASS paras[4].lastChild 
+PASS paras[4].hasChildNodes() 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodepropertieshtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodepropertieshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-properties.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-properties.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-properties.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-properties.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,689 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Node assorted property tests&lt;/title&gt;
+&lt;link rel=author title=&quot;Aryeh Gregor&quot; href=ayg@aryeh.name&gt;
+&lt;meta charset=utf-8&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;script src=../common.js&gt;&lt;/script&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+/**
+ * First we define a data structure to tell us what tests to run.  The keys
+ * will be eval()ed, and are mostly global variables defined in common.js.  The
+ * values are objects, which maps properties to expected values.  So
+ *
+ *     foo: {
+ *         bar: &quot;baz&quot;,
+ *         quz: 7,
+ *     },
+ *
+ * will test that eval(&quot;foo.bar&quot;) === &quot;baz&quot; and eval(&quot;foo.quz&quot;) === 7.  &quot;foo&quot;
+ * and &quot;bar&quot; could thus be expressions, like &quot;document.documentElement&quot; and
+ * &quot;childNodes[4]&quot; respectively.
+ *
+ * To avoid repetition, some values are automatically added based on others.
+ * For instance, if we specify nodeType: Node.TEXT_NODE, we'll automatically
+ * also test nodeName: &quot;#text&quot;.  This is handled by code after this variable is
+ * defined.
+ */
+var expected = {
+    testDiv: {
+        // Node
+        nodeType: Node.ELEMENT_NODE,
+        ownerDocument: document,
+        parentNode: document.body,
+        parentElement: document.body,
+        &quot;childNodes.length&quot;: 6,
+        &quot;childNodes[0]&quot;: paras[0],
+        &quot;childNodes[1]&quot;: paras[1],
+        &quot;childNodes[2]&quot;: paras[2],
+        &quot;childNodes[3]&quot;: paras[3],
+        &quot;childNodes[4]&quot;: paras[4],
+        &quot;childNodes[5]&quot;: comment,
+        previousSibling: null,
+        nextSibling: document.getElementById(&quot;log&quot;),
+        textContent: &quot;A\u0308b\u0308c\u0308d\u0308e\u0308f\u0308g\u0308h\u0308\nIjklmnop\nQrstuvwxYzabcdefGhijklmn&quot;,
+
+        // Element
+        namespaceURI: &quot;http://www.w3.org/1999/xhtml&quot;,
+        prefix: null,
+        localName: &quot;div&quot;,
+        tagName: &quot;DIV&quot;,
+        id: &quot;test&quot;,
+        &quot;children[0]&quot;: paras[0],
+        &quot;children[1]&quot;: paras[1],
+        &quot;children[2]&quot;: paras[2],
+        &quot;children[3]&quot;: paras[3],
+        &quot;children[4]&quot;: paras[4],
+        previousElementSibling: null,
+        // nextSibling isn't explicitly set
+        //nextElementSibling: ,
+        childElementCount: 5,
+    },
+    detachedDiv: {
+        // Node
+        nodeType: Node.ELEMENT_NODE,
+        ownerDocument: document,
+        parentNode: null,
+        parentElement: null,
+        &quot;childNodes.length&quot;: 2,
+        &quot;childNodes[0]&quot;: detachedPara1,
+        &quot;childNodes[1]&quot;: detachedPara2,
+        previousSibling: null,
+        nextSibling: null,
+        textContent: &quot;OpqrstuvWxyzabcd&quot;,
+
+        // Element
+        namespaceURI: &quot;http://www.w3.org/1999/xhtml&quot;,
+        prefix: null,
+        localName: &quot;div&quot;,
+        tagName: &quot;DIV&quot;,
+        &quot;children[0]&quot;: detachedPara1,
+        &quot;children[1]&quot;: detachedPara2,
+        previousElementSibling: null,
+        nextElementSibling: null,
+        childElementCount: 2,
+    },
+    detachedPara1: {
+        // Node
+        nodeType: Node.ELEMENT_NODE,
+        ownerDocument: document,
+        parentNode: detachedDiv,
+        parentElement: detachedDiv,
+        &quot;childNodes.length&quot;: 1,
+        previousSibling: null,
+        nextSibling: detachedPara2,
+        textContent: &quot;Opqrstuv&quot;,
+
+        // Element
+        namespaceURI: &quot;http://www.w3.org/1999/xhtml&quot;,
+        prefix: null,
+        localName: &quot;p&quot;,
+        tagName: &quot;P&quot;,
+        previousElementSibling: null,
+        nextElementSibling: detachedPara2,
+        childElementCount: 0,
+    },
+    detachedPara2: {
+        // Node
+        nodeType: Node.ELEMENT_NODE,
+        ownerDocument: document,
+        parentNode: detachedDiv,
+        parentElement: detachedDiv,
+        &quot;childNodes.length&quot;: 1,
+        previousSibling: detachedPara1,
+        nextSibling: null,
+        textContent: &quot;Wxyzabcd&quot;,
+
+        // Element
+        namespaceURI: &quot;http://www.w3.org/1999/xhtml&quot;,
+        prefix: null,
+        localName: &quot;p&quot;,
+        tagName: &quot;P&quot;,
+        previousElementSibling: detachedPara1,
+        nextElementSibling: null,
+        childElementCount: 0,
+    },
+    document: {
+        // Node
+        nodeType: Node.DOCUMENT_NODE,
+        &quot;childNodes.length&quot;: 2,
+        &quot;childNodes[0]&quot;: document.doctype,
+        &quot;childNodes[1]&quot;: document.documentElement,
+
+        // Document
+        URL: String(location),
+        compatMode: &quot;CSS1Compat&quot;,
+        characterSet: &quot;UTF-8&quot;,
+        inputEncoding: &quot;UTF-8&quot;,
+        contentType: &quot;text/html&quot;,
+        doctype: doctype,
+        //documentElement: ,
+    },
+    foreignDoc: {
+        // Node
+        nodeType: Node.DOCUMENT_NODE,
+        &quot;childNodes.length&quot;: 3,
+        &quot;childNodes[0]&quot;: foreignDoc.doctype,
+        &quot;childNodes[1]&quot;: foreignDoc.documentElement,
+        &quot;childNodes[2]&quot;: foreignComment,
+
+        // Document
+        URL: &quot;about:blank&quot;,
+        compatMode: &quot;CSS1Compat&quot;,
+        characterSet: &quot;UTF-8&quot;,
+        inputEncoding: &quot;UTF-8&quot;,
+        contentType: &quot;text/html&quot;,
+        //doctype: ,
+        //documentElement: ,
+    },
+    foreignPara1: {
+        // Node
+        nodeType: Node.ELEMENT_NODE,
+        ownerDocument: foreignDoc,
+        parentNode: foreignDoc.body,
+        parentElement: foreignDoc.body,
+        &quot;childNodes.length&quot;: 1,
+        previousSibling: null,
+        nextSibling: foreignPara2,
+        textContent: &quot;Efghijkl&quot;,
+
+        // Element
+        namespaceURI: &quot;http://www.w3.org/1999/xhtml&quot;,
+        prefix: null,
+        localName: &quot;p&quot;,
+        tagName: &quot;P&quot;,
+        previousElementSibling: null,
+        nextElementSibling: foreignPara2,
+        childElementCount: 0,
+    },
+    foreignPara2: {
+        // Node
+        nodeType: Node.ELEMENT_NODE,
+        ownerDocument: foreignDoc,
+        parentNode: foreignDoc.body,
+        parentElement: foreignDoc.body,
+        &quot;childNodes.length&quot;: 1,
+        previousSibling: foreignPara1,
+        nextSibling: foreignTextNode,
+        textContent: &quot;Mnopqrst&quot;,
+
+        // Element
+        namespaceURI: &quot;http://www.w3.org/1999/xhtml&quot;,
+        prefix: null,
+        localName: &quot;p&quot;,
+        tagName: &quot;P&quot;,
+        previousElementSibling: foreignPara1,
+        nextElementSibling: null,
+        childElementCount: 0,
+    },
+    xmlDoc: {
+        // Node
+        nodeType: Node.DOCUMENT_NODE,
+        &quot;childNodes.length&quot;: 4,
+        &quot;childNodes[0]&quot;: xmlDoctype,
+        &quot;childNodes[1]&quot;: xmlElement,
+        &quot;childNodes[2]&quot;: processingInstruction,
+        &quot;childNodes[3]&quot;: xmlComment,
+
+        // Document
+        URL: &quot;about:blank&quot;,
+        compatMode: &quot;CSS1Compat&quot;,
+        characterSet: &quot;UTF-8&quot;,
+        inputEncoding: &quot;UTF-8&quot;,
+        contentType: &quot;application/xml&quot;,
+        //doctype: ,
+        //documentElement: ,
+    },
+    xmlElement: {
+        // Node
+        nodeType: Node.ELEMENT_NODE,
+        ownerDocument: xmlDoc,
+        parentNode: xmlDoc,
+        parentElement: null,
+        &quot;childNodes.length&quot;: 1,
+        &quot;childNodes[0]&quot;: xmlTextNode,
+        previousSibling: xmlDoctype,
+        nextSibling: processingInstruction,
+        textContent: &quot;do re mi fa so la ti&quot;,
+
+        // Element
+        namespaceURI: &quot;http://www.w3.org/1999/xhtml&quot;,
+        prefix: null,
+        localName: &quot;igiveuponcreativenames&quot;,
+        tagName: &quot;igiveuponcreativenames&quot;,
+        previousElementSibling: null,
+        nextElementSibling: null,
+        childElementCount: 0,
+    },
+    detachedXmlElement: {
+        // Node
+        nodeType: Node.ELEMENT_NODE,
+        ownerDocument: xmlDoc,
+        parentNode: null,
+        parentElement: null,
+        &quot;childNodes.length&quot;: 0,
+        previousSibling: null,
+        nextSibling: null,
+        textContent: &quot;&quot;,
+
+        // Element
+        namespaceURI: &quot;http://www.w3.org/1999/xhtml&quot;,
+        prefix: null,
+        localName: &quot;everyone-hates-hyphenated-element-names&quot;,
+        tagName: &quot;everyone-hates-hyphenated-element-names&quot;,
+        previousElementSibling: null,
+        nextElementSibling: null,
+        childElementCount: 0,
+    },
+    detachedTextNode: {
+        // Node
+        nodeType: Node.TEXT_NODE,
+        ownerDocument: document,
+        parentNode: null,
+        parentElement: null,
+        previousSibling: null,
+        nextSibling: null,
+        nodeValue: &quot;Uvwxyzab&quot;,
+
+        // Text
+        wholeText: &quot;Uvwxyzab&quot;,
+    },
+    foreignTextNode: {
+        // Node
+        nodeType: Node.TEXT_NODE,
+        ownerDocument: foreignDoc,
+        parentNode: foreignDoc.body,
+        parentElement: foreignDoc.body,
+        previousSibling: foreignPara2,
+        nextSibling: null,
+        nodeValue: &quot;I admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now.&quot;,
+
+        // Text
+        wholeText: &quot;I admit that I harbor doubts about whether we really need so many things to test, but it's too late to stop now.&quot;,
+    },
+    detachedForeignTextNode: {
+        // Node
+        nodeType: Node.TEXT_NODE,
+        ownerDocument: foreignDoc,
+        parentNode: null,
+        parentElement: null,
+        previousSibling: null,
+        nextSibling: null,
+        nodeValue: &quot;Cdefghij&quot;,
+
+        // Text
+        wholeText: &quot;Cdefghij&quot;,
+    },
+    xmlTextNode: {
+        // Node
+        nodeType: Node.TEXT_NODE,
+        ownerDocument: xmlDoc,
+        parentNode: xmlElement,
+        parentElement: xmlElement,
+        previousSibling: null,
+        nextSibling: null,
+        nodeValue: &quot;do re mi fa so la ti&quot;,
+
+        // Text
+        wholeText: &quot;do re mi fa so la ti&quot;,
+    },
+    detachedXmlTextNode: {
+        // Node
+        nodeType: Node.TEXT_NODE,
+        ownerDocument: xmlDoc,
+        parentNode: null,
+        parentElement: null,
+        previousSibling: null,
+        nextSibling: null,
+        nodeValue: &quot;Klmnopqr&quot;,
+
+        // Text
+        wholeText: &quot;Klmnopqr&quot;,
+    },
+    processingInstruction: {
+        // Node
+        nodeType: Node.PROCESSING_INSTRUCTION_NODE,
+        ownerDocument: xmlDoc,
+        parentNode: xmlDoc,
+        parentElement: null,
+        previousSibling: xmlElement,
+        nextSibling: xmlComment,
+        nodeValue: 'Did you know that &quot;:syn sync fromstart&quot; is very useful when using vim to edit large amounts of JavaScript embedded in HTML?',
+
+        // ProcessingInstruction
+        target: &quot;somePI&quot;,
+    },
+    detachedProcessingInstruction: {
+        // Node
+        nodeType: Node.PROCESSING_INSTRUCTION_NODE,
+        ownerDocument: xmlDoc,
+        parentNode: null,
+        parentElement: null,
+        previousSibling: null,
+        nextSibling: null,
+        nodeValue: &quot;chirp chirp chirp&quot;,
+
+        // ProcessingInstruction
+        target: &quot;whippoorwill&quot;,
+    },
+    comment: {
+        // Node
+        nodeType: Node.COMMENT_NODE,
+        ownerDocument: document,
+        parentNode: testDiv,
+        parentElement: testDiv,
+        previousSibling: paras[4],
+        nextSibling: null,
+        nodeValue: &quot;Alphabet soup?&quot;,
+    },
+    detachedComment: {
+        // Node
+        nodeType: Node.COMMENT_NODE,
+        ownerDocument: document,
+        parentNode: null,
+        parentElement: null,
+        previousSibling: null,
+        nextSibling: null,
+        nodeValue: &quot;Stuvwxyz&quot;,
+    },
+    foreignComment: {
+        // Node
+        nodeType: Node.COMMENT_NODE,
+        ownerDocument: foreignDoc,
+        parentNode: foreignDoc,
+        parentElement: null,
+        previousSibling: foreignDoc.documentElement,
+        nextSibling: null,
+        nodeValue: '&quot;Commenter&quot; and &quot;commentator&quot; mean different things.  I\'ve seen non-native speakers trip up on this.',
+    },
+    detachedForeignComment: {
+        // Node
+        nodeType: Node.COMMENT_NODE,
+        ownerDocument: foreignDoc,
+        parentNode: null,
+        parentElement: null,
+        previousSibling: null,
+        nextSibling: null,
+        nodeValue: &quot;אריה יהודה&quot;,
+    },
+    xmlComment: {
+        // Node
+        nodeType: Node.COMMENT_NODE,
+        ownerDocument: xmlDoc,
+        parentNode: xmlDoc,
+        parentElement: null,
+        previousSibling: processingInstruction,
+        nextSibling: null,
+        nodeValue: &quot;I maliciously created a comment that will break incautious XML serializers, but Firefox threw an exception, so all I got was this lousy T-shirt&quot;,
+    },
+    detachedXmlComment: {
+        // Node
+        nodeType: Node.COMMENT_NODE,
+        ownerDocument: xmlDoc,
+        parentNode: null,
+        parentElement: null,
+        previousSibling: null,
+        nextSibling: null,
+        nodeValue: &quot;בן חיים אליעזר&quot;,
+    },
+    docfrag: {
+        // Node
+        nodeType: Node.DOCUMENT_FRAGMENT_NODE,
+        ownerDocument: document,
+        &quot;childNodes.length&quot;: 0,
+        textContent: &quot;&quot;,
+    },
+    foreignDocfrag: {
+        // Node
+        nodeType: Node.DOCUMENT_FRAGMENT_NODE,
+        ownerDocument: foreignDoc,
+        &quot;childNodes.length&quot;: 0,
+        textContent: &quot;&quot;,
+    },
+    xmlDocfrag: {
+        // Node
+        nodeType: Node.DOCUMENT_FRAGMENT_NODE,
+        ownerDocument: xmlDoc,
+        &quot;childNodes.length&quot;: 0,
+        textContent: &quot;&quot;,
+    },
+    doctype: {
+        // Node
+        nodeType: Node.DOCUMENT_TYPE_NODE,
+        ownerDocument: document,
+        parentNode: document,
+        previousSibling: null,
+        nextSibling: document.documentElement,
+
+        // DocumentType
+        name: &quot;html&quot;,
+        publicId: &quot;&quot;,
+        systemId: &quot;&quot;,
+    },
+    foreignDoctype: {
+        // Node
+        nodeType: Node.DOCUMENT_TYPE_NODE,
+        ownerDocument: foreignDoc,
+        parentNode: foreignDoc,
+        previousSibling: null,
+        nextSibling: foreignDoc.documentElement,
+
+        // DocumentType
+        name: &quot;html&quot;,
+        publicId: &quot;&quot;,
+        systemId: &quot;&quot;,
+    },
+    xmlDoctype: {
+        // Node
+        nodeType: Node.DOCUMENT_TYPE_NODE,
+        ownerDocument: xmlDoc,
+        parentNode: xmlDoc,
+        previousSibling: null,
+        nextSibling: xmlElement,
+
+        // DocumentType
+        name: &quot;qorflesnorf&quot;,
+        publicId: &quot;abcde&quot;,
+        systemId: &quot;x\&quot;'y&quot;,
+    },
+    &quot;paras[0]&quot;: {
+        // Node
+        nodeType: Node.ELEMENT_NODE,
+        ownerDocument: document,
+        parentNode: testDiv,
+        parentElement: testDiv,
+        &quot;childNodes.length&quot;: 1,
+        previousSibling: null,
+        nextSibling: paras[1],
+        textContent: &quot;A\u0308b\u0308c\u0308d\u0308e\u0308f\u0308g\u0308h\u0308\n&quot;,
+
+        // Element
+        namespaceURI: &quot;http://www.w3.org/1999/xhtml&quot;,
+        prefix: null,
+        localName: &quot;p&quot;,
+        tagName: &quot;P&quot;,
+        id: &quot;a&quot;,
+        previousElementSibling: null,
+        nextElementSibling: paras[1],
+        childElementCount: 0,
+    },
+    &quot;paras[1]&quot;: {
+        // Node
+        nodeType: Node.ELEMENT_NODE,
+        ownerDocument: document,
+        parentNode: testDiv,
+        parentElement: testDiv,
+        &quot;childNodes.length&quot;: 1,
+        previousSibling: paras[0],
+        nextSibling: paras[2],
+        textContent: &quot;Ijklmnop\n&quot;,
+
+        // Element
+        namespaceURI: &quot;http://www.w3.org/1999/xhtml&quot;,
+        prefix: null,
+        localName: &quot;p&quot;,
+        tagName: &quot;P&quot;,
+        id: &quot;b&quot;,
+        previousElementSibling: paras[0],
+        nextElementSibling: paras[2],
+        childElementCount: 0,
+    },
+    &quot;paras[2]&quot;: {
+        // Node
+        nodeType: Node.ELEMENT_NODE,
+        ownerDocument: document,
+        parentNode: testDiv,
+        parentElement: testDiv,
+        &quot;childNodes.length&quot;: 1,
+        previousSibling: paras[1],
+        nextSibling: paras[3],
+        textContent: &quot;Qrstuvwx&quot;,
+
+        // Element
+        namespaceURI: &quot;http://www.w3.org/1999/xhtml&quot;,
+        prefix: null,
+        localName: &quot;p&quot;,
+        tagName: &quot;P&quot;,
+        id: &quot;c&quot;,
+        previousElementSibling: paras[1],
+        nextElementSibling: paras[3],
+        childElementCount: 0,
+    },
+    &quot;paras[3]&quot;: {
+        // Node
+        nodeType: Node.ELEMENT_NODE,
+        ownerDocument: document,
+        parentNode: testDiv,
+        parentElement: testDiv,
+        &quot;childNodes.length&quot;: 1,
+        previousSibling: paras[2],
+        nextSibling: paras[4],
+        textContent: &quot;Yzabcdef&quot;,
+
+        // Element
+        namespaceURI: &quot;http://www.w3.org/1999/xhtml&quot;,
+        prefix: null,
+        localName: &quot;p&quot;,
+        tagName: &quot;P&quot;,
+        id: &quot;d&quot;,
+        previousElementSibling: paras[2],
+        nextElementSibling: paras[4],
+        childElementCount: 0,
+    },
+    &quot;paras[4]&quot;: {
+        // Node
+        nodeType: Node.ELEMENT_NODE,
+        ownerDocument: document,
+        parentNode: testDiv,
+        parentElement: testDiv,
+        &quot;childNodes.length&quot;: 1,
+        previousSibling: paras[3],
+        nextSibling: comment,
+        textContent: &quot;Ghijklmn&quot;,
+
+        // Element
+        namespaceURI: &quot;http://www.w3.org/1999/xhtml&quot;,
+        prefix: null,
+        localName: &quot;p&quot;,
+        tagName: &quot;P&quot;,
+        id: &quot;e&quot;,
+        previousElementSibling: paras[3],
+        nextElementSibling: null,
+        childElementCount: 0,
+    },
+};
+
+for (var node in expected) {
+    // Now we set various default values by node type.
+    switch (expected[node].nodeType) {
+    case Node.ELEMENT_NODE:
+        expected[node].nodeName = expected[node].tagName;
+        expected[node].nodeValue = null;
+        expected[node][&quot;children.length&quot;] = expected[node].childElementCount;
+
+        if (expected[node].id === undefined) {
+            expected[node].id = &quot;&quot;;
+        }
+        if (expected[node].className === undefined) {
+            expected[node].className = &quot;&quot;;
+        }
+
+        var len = expected[node].childElementCount;
+        if (len === 0) {
+            expected[node].firstElementChild =
+            expected[node].lastElementChild = null;
+        } else {
+            // If we have expectations for the first/last child in children,
+            // use those.  Otherwise, at least check that .firstElementChild ==
+            // .children[0] and .lastElementChild == .children[len - 1], even
+            // if we aren't sure what they should be.
+            expected[node].firstElementChild = expected[node][&quot;children[0]&quot;]
+                ? expected[node][&quot;children[0]&quot;]
+                : eval(node).children[0];
+            expected[node].lastElementChild =
+                expected[node][&quot;children[&quot; + (len - 1) + &quot;]&quot;]
+                ? expected[node][&quot;children[&quot; + (len - 1) + &quot;]&quot;]
+                : eval(node).children[len - 1];
+        }
+        break;
+
+    case Node.TEXT_NODE:
+        expected[node].nodeName = &quot;#text&quot;;
+        expected[node][&quot;childNodes.length&quot;] = 0;
+        expected[node].textContent = expected[node].data =
+            expected[node].nodeValue;
+        expected[node].length = expected[node].nodeValue.length;
+        break;
+
+    case Node.PROCESSING_INSTRUCTION_NODE:
+        expected[node].nodeName = expected[node].target;
+        expected[node][&quot;childNodes.length&quot;] = 0;
+        expected[node].textContent = expected[node].data =
+            expected[node].nodeValue;
+        expected[node].length = expected[node].nodeValue.length;
+        break;
+
+    case Node.COMMENT_NODE:
+        expected[node].nodeName = &quot;#comment&quot;;
+        expected[node][&quot;childNodes.length&quot;] = 0;
+        expected[node].textContent = expected[node].data =
+            expected[node].nodeValue;
+        expected[node].length = expected[node].nodeValue.length;
+        break;
+
+    case Node.DOCUMENT_NODE:
+        expected[node].nodeName = &quot;#document&quot;;
+        expected[node].ownerDocument = expected[node].parentNode =
+            expected[node].parentElement = expected[node].previousSibling =
+            expected[node].nextSibling = expected[node].nodeValue =
+            expected[node].textContent = null;
+        expected[node].documentURI = expected[node].URL;
+        break;
+
+    case Node.DOCUMENT_TYPE_NODE:
+        expected[node].nodeName = expected[node].name;
+        expected[node][&quot;childNodes.length&quot;] = 0;
+        expected[node].parentElement = expected[node].nodeValue =
+            expected[node].textContent = null;
+        break;
+
+    case Node.DOCUMENT_FRAGMENT_NODE:
+        expected[node].nodeName = &quot;#document-fragment&quot;;
+        expected[node].parentNode = expected[node].parentElement =
+            expected[node].previousSibling = expected[node].nextSibling =
+            expected[node].nodeValue = null;
+        break;
+    }
+
+    // Now we set some further default values that are independent of node
+    // type.
+    var len = expected[node][&quot;childNodes.length&quot;];
+    if (len === 0) {
+        expected[node].firstChild = expected[node].lastChild = null;
+    } else {
+        // If we have expectations for the first/last child in childNodes, use
+        // those.  Otherwise, at least check that .firstChild == .childNodes[0]
+        // and .lastChild == .childNodes[len - 1], even if we aren't sure what
+        // they should be.
+        expected[node].firstChild = expected[node][&quot;childNodes[0]&quot;]
+            ? expected[node][&quot;childNodes[0]&quot;]
+            : eval(node).childNodes[0];
+        expected[node].lastChild =
+            expected[node][&quot;childNodes[&quot; + (len - 1) + &quot;]&quot;]
+            ? expected[node][&quot;childNodes[&quot; + (len - 1) + &quot;]&quot;]
+            : eval(node).childNodes[len - 1];
+    }
+    expected[node][&quot;hasChildNodes()&quot;] = !!expected[node][&quot;childNodes.length&quot;];
+
+    // Finally, we test!
+    for (var prop in expected[node]) {
+        test(function() {
+            assert_equals(eval(node + &quot;.&quot; + prop), expected[node][prop]);
+        }, node + &quot;.&quot; + prop);
+    }
+}
+
+testDiv.parentNode.removeChild(testDiv);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNoderemoveChildexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesNoderemoveChildexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-removeChild-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-removeChild-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-removeChild-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-removeChild-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+ test
+
+PASS Passing a detached element from the main document to removeChild should not affect it. 
+PASS Passing a non-detached element from the main document to removeChild should not affect it. 
+PASS Calling removeChild on a element from the main document with no children should throw NOT_FOUND_ERR. 
+PASS Passing a detached text from the main document to removeChild should not affect it. 
+PASS Passing a non-detached text from the main document to removeChild should not affect it. 
+PASS Calling removeChild on a text from the main document with no children should throw NOT_FOUND_ERR. 
+PASS Passing a detached comment from the main document to removeChild should not affect it. 
+PASS Passing a non-detached comment from the main document to removeChild should not affect it. 
+PASS Calling removeChild on a comment from the main document with no children should throw NOT_FOUND_ERR. 
+PASS Passing a detached element from a frame document to removeChild should not affect it. 
+PASS Passing a non-detached element from a frame document to removeChild should not affect it. 
+PASS Calling removeChild on a element from a frame document with no children should throw NOT_FOUND_ERR. 
+PASS Passing a detached text from a frame document to removeChild should not affect it. 
+PASS Passing a non-detached text from a frame document to removeChild should not affect it. 
+PASS Calling removeChild on a text from a frame document with no children should throw NOT_FOUND_ERR. 
+PASS Passing a detached comment from a frame document to removeChild should not affect it. 
+PASS Passing a non-detached comment from a frame document to removeChild should not affect it. 
+PASS Calling removeChild on a comment from a frame document with no children should throw NOT_FOUND_ERR. 
+PASS Passing a detached element from a synthetic document to removeChild should not affect it. 
+PASS Passing a non-detached element from a synthetic document to removeChild should not affect it. 
+PASS Calling removeChild on a element from a synthetic document with no children should throw NOT_FOUND_ERR. 
+PASS Passing a detached text from a synthetic document to removeChild should not affect it. 
+PASS Passing a non-detached text from a synthetic document to removeChild should not affect it. 
+PASS Calling removeChild on a text from a synthetic document with no children should throw NOT_FOUND_ERR. 
+PASS Passing a detached comment from a synthetic document to removeChild should not affect it. 
+PASS Passing a non-detached comment from a synthetic document to removeChild should not affect it. 
+PASS Calling removeChild on a comment from a synthetic document with no children should throw NOT_FOUND_ERR. 
+FAIL Passing a value that is not a Node reference to removeChild should throw TypeError. assert_throws: function &quot;function () { document.body.removeChild(null) }&quot; threw object &quot;Error: NotFoundError: DOM Exception 8&quot; (&quot;NotFoundError&quot;) expected object &quot;TypeError&quot; (&quot;TypeError&quot;)
+b
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNoderemoveChildhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesNoderemoveChildhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-removeChild.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-removeChild.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-removeChild.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-removeChild.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,54 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;Node.removeChild&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;creators.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;iframe src=about:blank&gt;&lt;/iframe&gt;
+&lt;script&gt;
+var documents = [
+  [function() { return document }, &quot;the main document&quot;],
+  [function() { return frames[0].document }, &quot;a frame document&quot;],
+  [function() { return document.implementation.createHTMLDocument() },
+   &quot;a synthetic document&quot;],
+];
+
+documents.forEach(function(d) {
+  var get = d[0], description = d[1]
+  for (var p in creators) {
+    var creator = creators[p];
+    test(function() {
+      var doc = get();
+      var s = doc[creator](&quot;a&quot;)
+      assert_equals(s.ownerDocument, doc)
+      assert_throws(&quot;NOT_FOUND_ERR&quot;, function() { document.body.removeChild(s) })
+      assert_equals(s.ownerDocument, doc)
+    }, &quot;Passing a detached &quot; + p + &quot; from &quot; + description +
+       &quot; to removeChild should not affect it.&quot;)
+
+    test(function() {
+      var doc = get();
+      var s = doc[creator](&quot;b&quot;)
+      doc.documentElement.appendChild(s)
+      assert_equals(s.ownerDocument, doc)
+      assert_throws(&quot;NOT_FOUND_ERR&quot;, function() { document.body.removeChild(s) })
+      assert_equals(s.ownerDocument, doc)
+    }, &quot;Passing a non-detached &quot; + p + &quot; from &quot; + description +
+       &quot; to removeChild should not affect it.&quot;)
+
+    test(function() {
+      var doc = get();
+      var s = doc[creator](&quot;test&quot;)
+      doc.body.appendChild(s)
+      assert_equals(s.ownerDocument, doc)
+      assert_throws(&quot;NOT_FOUND_ERR&quot;, function() { s.removeChild(doc) })
+    }, &quot;Calling removeChild on a &quot; + p + &quot; from &quot; + description +
+       &quot; with no children should throw NOT_FOUND_ERR.&quot;)
+  }
+});
+
+test(function() {
+  assert_throws(new TypeError(), function() { document.body.removeChild(null) })
+  assert_throws(new TypeError(), function() { document.body.removeChild({'a':'b'}) })
+}, &quot;Passing a value that is not a Node reference to removeChild should throw TypeError.&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodereplaceChildexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodereplaceChildexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-replaceChild-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-replaceChild-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-replaceChild-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-replaceChild-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,36 @@
</span><ins>+
+FAIL Passing null to replaceChild should throw a TypeError. assert_throws: function &quot;function () {
+    a.replaceChild(null, null);
+  }&quot; did not throw
+FAIL If child's parent is not the context node, a NotFoundError exception should be thrown assert_throws: function &quot;function () {
+    a.replaceChild(a, c);
+  }&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException NotFoundError: property &quot;code&quot; is equal to 3, expected 8
+PASS If the context node is not a node that can contain children, a NotFoundError exception should be thrown 
+PASS If node is an inclusive ancestor of the context node, a HierarchyRequestError should be thrown. 
+PASS If the context node is a document, inserting a document or text node should throw a HierarchyRequestError. 
+PASS If the context node is a document, inserting a DocumentFragment that contains a text node or too many elements should throw a HierarchyRequestError. 
+PASS If the context node is a document (without element children), inserting a DocumentFragment that contains multiple elements should throw a HierarchyRequestError. 
+PASS If the context node is a document, inserting a DocumentFragment with an element if there already is an element child should throw a HierarchyRequestError. 
+FAIL If the context node is a document, inserting a DocumentFragment with an element before the doctype should throw a HierarchyRequestError. assert_throws: function &quot;function () {
+    doc.replaceChild(df, comment);
+  }&quot; did not throw
+PASS If the context node is a document, inserting an element if there already is an element child should throw a HierarchyRequestError. 
+FAIL If the context node is a document, inserting an element before the doctype should throw a HierarchyRequestError. assert_throws: function &quot;function () {
+    doc.replaceChild(a, comment);
+  }&quot; did not throw
+PASS If the context node is a document, inserting a doctype if there already is a doctype child should throw a HierarchyRequestError. 
+FAIL If the context node is a document, inserting a doctype after the document element should throw a HierarchyRequestError. assert_throws: function &quot;function () {
+    doc.replaceChild(doctype, comment);
+  }&quot; did not throw
+PASS If the context node is a DocumentFragment, inserting a document or a doctype should throw a HierarchyRequestError. 
+PASS If the context node is an element, inserting a document or a doctype should throw a HierarchyRequestError. 
+PASS Replacing a node with its next sibling should work (2 children) 
+PASS Replacing a node with its next sibling should work (4 children) 
+PASS Replacing a node with itself should not move the node 
+PASS If the context node is a document, inserting a new doctype should work. 
+PASS Replacing the document element with a DocumentFragment containing a single element should work. 
+PASS Replacing the document element with a DocumentFragment containing a single element and comments should work. 
+PASS Replacing the document element with a single element should work. 
+PASS replaceChild should work in the presence of mutation events. 
+PASS Replacing an element with a DocumentFragment should allow a child of the DocumentFragment to be found by Id. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodereplaceChildhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodereplaceChildhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-replaceChild.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-replaceChild.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-replaceChild.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-replaceChild.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,346 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Node.replaceChild&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;body&gt;&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;c&gt;&lt;/c&gt;&lt;/a&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+// IDL.
+test(function() {
+  var a = document.createElement(&quot;div&quot;);
+  assert_throws(new TypeError(), function() {
+    a.replaceChild(null, null);
+  });
+
+  var b = document.createElement(&quot;div&quot;);
+  assert_throws(new TypeError(), function() {
+    a.replaceChild(b, null);
+  });
+  assert_throws(new TypeError(), function() {
+    a.replaceChild(null, b);
+  });
+}, &quot;Passing null to replaceChild should throw a TypeError.&quot;)
+
+// Step 1.
+test(function() {
+  var a = document.createElement(&quot;div&quot;);
+  var b = document.createElement(&quot;div&quot;);
+  var c = document.createElement(&quot;div&quot;);
+  assert_throws(&quot;NotFoundError&quot;, function() {
+    a.replaceChild(b, c);
+  });
+
+  var d = document.createElement(&quot;div&quot;);
+  d.appendChild(b);
+  assert_throws(&quot;NotFoundError&quot;, function() {
+    a.replaceChild(b, c);
+  });
+  assert_throws(&quot;NotFoundError&quot;, function() {
+    a.replaceChild(a, c);
+  });
+  assert_throws(&quot;NotFoundError&quot;, function() {
+    a.replaceChild(b, a);
+  });
+  assert_throws(&quot;NotFoundError&quot;, function() {
+    a.replaceChild(a, a);
+  });
+}, &quot;If child's parent is not the context node, a NotFoundError exception should be thrown&quot;)
+test(function() {
+  var nodes = [
+    document.implementation.createDocumentType(&quot;html&quot;, &quot;&quot;, &quot;&quot;),
+    document.createTextNode(&quot;text&quot;),
+    document.implementation.createDocument(null, &quot;foo&quot;, null).createProcessingInstruction(&quot;foo&quot;, &quot;bar&quot;),
+    document.createComment(&quot;comment&quot;)
+  ];
+
+  var a = document.createElement(&quot;div&quot;);
+  var b = document.createElement(&quot;div&quot;);
+  nodes.forEach(function(node) {
+    assert_throws(&quot;HierarchyRequestError&quot;, function() {
+      node.replaceChild(a, b);
+    });
+  });
+}, &quot;If the context node is not a node that can contain children, a NotFoundError exception should be thrown&quot;)
+
+// Step 2.
+test(function() {
+  var a = document.createElement(&quot;div&quot;);
+  var b = document.createElement(&quot;div&quot;);
+  a.appendChild(b);
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    a.replaceChild(a, b);
+  });
+
+  var c = document.createElement(&quot;div&quot;);
+  c.appendChild(a);
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    a.replaceChild(c, b);
+  });
+}, &quot;If node is an inclusive ancestor of the context node, a HierarchyRequestError should be thrown.&quot;)
+
+// Step 3.1.
+test(function() {
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  var doc2 = document.implementation.createHTMLDocument(&quot;title2&quot;);
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.replaceChild(doc2, doc.documentElement);
+  });
+
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.replaceChild(doc.createTextNode(&quot;text&quot;), doc.documentElement);
+  });
+}, &quot;If the context node is a document, inserting a document or text node should throw a HierarchyRequestError.&quot;)
+
+// Step 3.2.1.
+test(function() {
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+
+  var df = doc.createDocumentFragment();
+  df.appendChild(doc.createElement(&quot;a&quot;));
+  df.appendChild(doc.createElement(&quot;b&quot;));
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.replaceChild(df, doc.documentElement);
+  });
+
+  df = doc.createDocumentFragment();
+  df.appendChild(doc.createTextNode(&quot;text&quot;));
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.replaceChild(df, doc.documentElement);
+  });
+
+  df = doc.createDocumentFragment();
+  df.appendChild(doc.createComment(&quot;comment&quot;));
+  df.appendChild(doc.createTextNode(&quot;text&quot;));
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.replaceChild(df, doc.documentElement);
+  });
+}, &quot;If the context node is a document, inserting a DocumentFragment that contains a text node or too many elements should throw a HierarchyRequestError.&quot;)
+test(function() {
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  doc.removeChild(doc.documentElement);
+
+  var df = doc.createDocumentFragment();
+  df.appendChild(doc.createElement(&quot;a&quot;));
+  df.appendChild(doc.createElement(&quot;b&quot;));
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.replaceChild(df, doc.doctype);
+  });
+}, &quot;If the context node is a document (without element children), inserting a DocumentFragment that contains multiple elements should throw a HierarchyRequestError.&quot;)
+
+// Step 3.2.2.
+test(function() {
+  // The context node has an element child that is not /child/.
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  var comment = doc.appendChild(doc.createComment(&quot;foo&quot;));
+  assert_array_equals(doc.childNodes, [doc.doctype, doc.documentElement, comment]);
+
+  var df = doc.createDocumentFragment();
+  df.appendChild(doc.createElement(&quot;a&quot;));
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.replaceChild(df, comment);
+  });
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.replaceChild(df, doc.doctype);
+  });
+}, &quot;If the context node is a document, inserting a DocumentFragment with an element if there already is an element child should throw a HierarchyRequestError.&quot;)
+test(function() {
+  // A doctype is following /child/.
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  var comment = doc.insertBefore(doc.createComment(&quot;foo&quot;), doc.firstChild);
+  doc.removeChild(doc.documentElement);
+  assert_array_equals(doc.childNodes, [comment, doc.doctype]);
+
+  var df = doc.createDocumentFragment();
+  df.appendChild(doc.createElement(&quot;a&quot;));
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.replaceChild(df, comment);
+  });
+}, &quot;If the context node is a document, inserting a DocumentFragment with an element before the doctype should throw a HierarchyRequestError.&quot;)
+
+// Step 3.3.
+test(function() {
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  var comment = doc.appendChild(doc.createComment(&quot;foo&quot;));
+  assert_array_equals(doc.childNodes, [doc.doctype, doc.documentElement, comment]);
+
+  var a = doc.createElement(&quot;a&quot;);
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.replaceChild(a, comment);
+  });
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.replaceChild(a, doc.doctype);
+  });
+}, &quot;If the context node is a document, inserting an element if there already is an element child should throw a HierarchyRequestError.&quot;)
+test(function() {
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  var comment = doc.insertBefore(doc.createComment(&quot;foo&quot;), doc.firstChild);
+  doc.removeChild(doc.documentElement);
+  assert_array_equals(doc.childNodes, [comment, doc.doctype]);
+
+  var a = doc.createElement(&quot;a&quot;);
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.replaceChild(a, comment);
+  });
+}, &quot;If the context node is a document, inserting an element before the doctype should throw a HierarchyRequestError.&quot;)
+
+// Step 3.4.
+test(function() {
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  var comment = doc.insertBefore(doc.createComment(&quot;foo&quot;), doc.firstChild);
+  assert_array_equals(doc.childNodes, [comment, doc.doctype, doc.documentElement]);
+
+  var doctype = document.implementation.createDocumentType(&quot;html&quot;, &quot;&quot;, &quot;&quot;);
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.replaceChild(doctype, comment);
+  });
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.replaceChild(doctype, doc.documentElement);
+  });
+}, &quot;If the context node is a document, inserting a doctype if there already is a doctype child should throw a HierarchyRequestError.&quot;)
+test(function() {
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  var comment = doc.appendChild(doc.createComment(&quot;foo&quot;));
+  doc.removeChild(doc.doctype);
+  assert_array_equals(doc.childNodes, [doc.documentElement, comment]);
+
+  var doctype = document.implementation.createDocumentType(&quot;html&quot;, &quot;&quot;, &quot;&quot;);
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    doc.replaceChild(doctype, comment);
+  });
+}, &quot;If the context node is a document, inserting a doctype after the document element should throw a HierarchyRequestError.&quot;)
+
+// Step 4.
+test(function() {
+  var df = document.createDocumentFragment();
+  var a = df.appendChild(document.createElement(&quot;a&quot;));
+
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    df.replaceChild(doc, a);
+  });
+
+  var doctype = document.implementation.createDocumentType(&quot;html&quot;, &quot;&quot;, &quot;&quot;);
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    df.replaceChild(doctype, a);
+  });
+}, &quot;If the context node is a DocumentFragment, inserting a document or a doctype should throw a HierarchyRequestError.&quot;)
+test(function() {
+  var el = document.createElement(&quot;div&quot;);
+  var a = el.appendChild(document.createElement(&quot;a&quot;));
+
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    el.replaceChild(doc, a);
+  });
+
+  var doctype = document.implementation.createDocumentType(&quot;html&quot;, &quot;&quot;, &quot;&quot;);
+  assert_throws(&quot;HierarchyRequestError&quot;, function() {
+    el.replaceChild(doctype, a);
+  });
+}, &quot;If the context node is an element, inserting a document or a doctype should throw a HierarchyRequestError.&quot;)
+
+// Step 6.
+test(function() {
+  var a = document.createElement(&quot;div&quot;);
+  var b = document.createElement(&quot;div&quot;);
+  var c = document.createElement(&quot;div&quot;);
+  a.appendChild(b);
+  a.appendChild(c);
+  assert_array_equals(a.childNodes, [b, c]);
+  assert_equals(a.replaceChild(c, b), b);
+  assert_array_equals(a.childNodes, [c]);
+}, &quot;Replacing a node with its next sibling should work (2 children)&quot;);
+test(function() {
+  var a = document.createElement(&quot;div&quot;);
+  var b = document.createElement(&quot;div&quot;);
+  var c = document.createElement(&quot;div&quot;);
+  var d = document.createElement(&quot;div&quot;);
+  var e = document.createElement(&quot;div&quot;);
+  a.appendChild(b);
+  a.appendChild(c);
+  a.appendChild(d);
+  a.appendChild(e);
+  assert_array_equals(a.childNodes, [b, c, d, e]);
+  assert_equals(a.replaceChild(d, c), c);
+  assert_array_equals(a.childNodes, [b, d, e]);
+}, &quot;Replacing a node with its next sibling should work (4 children)&quot;);
+test(function() {
+  var a = document.createElement(&quot;div&quot;);
+  var b = document.createElement(&quot;div&quot;);
+  var c = document.createElement(&quot;div&quot;);
+  a.appendChild(b);
+  a.appendChild(c);
+  assert_array_equals(a.childNodes, [b, c]);
+  assert_equals(a.replaceChild(b, b), b);
+  assert_array_equals(a.childNodes, [b, c]);
+  assert_equals(a.replaceChild(c, c), c);
+  assert_array_equals(a.childNodes, [b, c]);
+}, &quot;Replacing a node with itself should not move the node&quot;);
+
+// Step 7.
+test(function() {
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  var doctype = doc.doctype;
+  assert_array_equals(doc.childNodes, [doctype, doc.documentElement]);
+
+  var doc2 = document.implementation.createHTMLDocument(&quot;title2&quot;);
+  var doctype2 = doc2.doctype;
+  assert_array_equals(doc2.childNodes, [doctype2, doc2.documentElement]);
+
+  doc.replaceChild(doc2.doctype, doc.doctype);
+  assert_array_equals(doc.childNodes, [doctype2, doc.documentElement]);
+  assert_array_equals(doc2.childNodes, [doc2.documentElement]);
+  assert_equals(doctype.parentNode, null);
+  assert_equals(doctype.ownerDocument, doc);
+  assert_equals(doctype2.parentNode, doc);
+  assert_equals(doctype2.ownerDocument, doc);
+}, &quot;If the context node is a document, inserting a new doctype should work.&quot;)
+
+// Bugs.
+test(function() {
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  var df = doc.createDocumentFragment();
+  var a = df.appendChild(doc.createElement(&quot;a&quot;));
+  assert_equals(doc.documentElement, doc.replaceChild(df, doc.documentElement));
+  assert_array_equals(doc.childNodes, [doc.doctype, a]);
+}, &quot;Replacing the document element with a DocumentFragment containing a single element should work.&quot;);
+test(function() {
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  var df = doc.createDocumentFragment();
+  var a = df.appendChild(doc.createComment(&quot;a&quot;));
+  var b = df.appendChild(doc.createElement(&quot;b&quot;));
+  var c = df.appendChild(doc.createComment(&quot;c&quot;));
+  assert_equals(doc.documentElement, doc.replaceChild(df, doc.documentElement));
+  assert_array_equals(doc.childNodes, [doc.doctype, a, b, c]);
+}, &quot;Replacing the document element with a DocumentFragment containing a single element and comments should work.&quot;);
+test(function() {
+  var doc = document.implementation.createHTMLDocument(&quot;title&quot;);
+  var a = doc.createElement(&quot;a&quot;);
+  assert_equals(doc.documentElement, doc.replaceChild(a, doc.documentElement));
+  assert_array_equals(doc.childNodes, [doc.doctype, a]);
+}, &quot;Replacing the document element with a single element should work.&quot;);
+test(function() {
+  document.addEventListener(&quot;DOMNodeRemoved&quot;, function(e) {
+    document.body.appendChild(document.createElement(&quot;x&quot;));
+  }, false);
+  var a = document.body.firstChild, b = a.firstChild, c = b.nextSibling;
+  assert_equals(a.replaceChild(c, b), b);
+  assert_equals(b.parentNode, null);
+  assert_equals(a.firstChild, c);
+  assert_equals(c.parentNode, a);
+}, &quot;replaceChild should work in the presence of mutation events.&quot;)
+test(function() {
+  var TEST_ID = &quot;findme&quot;;
+  var gBody = document.getElementsByTagName(&quot;body&quot;)[0];
+  var parent = document.createElement(&quot;div&quot;);
+  gBody.appendChild(parent);
+  var child = document.createElement(&quot;div&quot;);
+  parent.appendChild(child);
+  var df = document.createDocumentFragment();
+  var fragChild = df.appendChild(document.createElement(&quot;div&quot;));
+  fragChild.setAttribute(&quot;id&quot;, TEST_ID);
+  parent.replaceChild(df, child);
+  assert_equals(document.getElementById(TEST_ID), fragChild, &quot;should not be null&quot;);
+}, &quot;Replacing an element with a DocumentFragment should allow a child of the DocumentFragment to be found by Id.&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodetextContentexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodetextContentexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-textContent-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-textContent-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-textContent-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-textContent-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,83 @@
</span><ins>+
+PASS For an empty Element, textContent should be the empty string 
+PASS For an empty DocumentFragment, textContent should be the empty string 
+PASS Element with children 
+PASS Element with descendants 
+PASS DocumentFragment with children 
+PASS DocumentFragment with descendants 
+PASS For an empty Text, textContent should be the empty string 
+PASS For an empty ProcessingInstruction, textContent should be the empty string 
+PASS For an empty Comment, textContent should be the empty string 
+PASS For a Text with data, textContent should be that data 
+PASS For a ProcessingInstruction with data, textContent should be that data 
+PASS For a Comment with data, textContent should be that data 
+PASS For Documents created by parser, textContent should be null 
+PASS For Documents created by createDocument, textContent should be null 
+PASS For Documents created by createHTMLDocument, textContent should be null 
+PASS For DocumentType created by parser, textContent should be null 
+PASS For DocumentType created by script, textContent should be null 
+PASS Element without children set to null 
+PASS Element with empty text node as child set to null 
+PASS Element with children set to null 
+PASS Element with descendants set to null 
+PASS DocumentFragment without children set to null 
+PASS DocumentFragment with empty text node as child set to null 
+PASS DocumentFragment with children set to null 
+PASS DocumentFragment with descendants set to null 
+PASS Element without children set to undefined 
+PASS Element with empty text node as child set to undefined 
+PASS Element with children set to undefined 
+PASS Element with descendants set to undefined 
+PASS DocumentFragment without children set to undefined 
+PASS DocumentFragment with empty text node as child set to undefined 
+PASS DocumentFragment with children set to undefined 
+PASS DocumentFragment with descendants set to undefined 
+PASS Element without children set to &quot;&quot; 
+PASS Element with empty text node as child set to &quot;&quot; 
+PASS Element with children set to &quot;&quot; 
+PASS Element with descendants set to &quot;&quot; 
+PASS DocumentFragment without children set to &quot;&quot; 
+PASS DocumentFragment with empty text node as child set to &quot;&quot; 
+PASS DocumentFragment with children set to &quot;&quot; 
+PASS DocumentFragment with descendants set to &quot;&quot; 
+PASS Element without children set to 42 
+PASS Element with empty text node as child set to 42 
+PASS Element with children set to 42 
+PASS Element with descendants set to 42 
+PASS DocumentFragment without children set to 42 
+PASS DocumentFragment with empty text node as child set to 42 
+PASS DocumentFragment with children set to 42 
+PASS DocumentFragment with descendants set to 42 
+PASS Element without children set to &quot;abc&quot; 
+PASS Element with empty text node as child set to &quot;abc&quot; 
+PASS Element with children set to &quot;abc&quot; 
+PASS Element with descendants set to &quot;abc&quot; 
+PASS DocumentFragment without children set to &quot;abc&quot; 
+PASS DocumentFragment with empty text node as child set to &quot;abc&quot; 
+PASS DocumentFragment with children set to &quot;abc&quot; 
+PASS DocumentFragment with descendants set to &quot;abc&quot; 
+PASS Element without children set to &quot;&lt;b&gt;xyz&lt;/b&gt;&quot; 
+PASS Element with empty text node as child set to &quot;&lt;b&gt;xyz&lt;/b&gt;&quot; 
+PASS Element with children set to &quot;&lt;b&gt;xyz&lt;/b&gt;&quot; 
+PASS Element with descendants set to &quot;&lt;b&gt;xyz&lt;/b&gt;&quot; 
+PASS DocumentFragment without children set to &quot;&lt;b&gt;xyz&lt;/b&gt;&quot; 
+PASS DocumentFragment with empty text node as child set to &quot;&lt;b&gt;xyz&lt;/b&gt;&quot; 
+PASS DocumentFragment with children set to &quot;&lt;b&gt;xyz&lt;/b&gt;&quot; 
+PASS DocumentFragment with descendants set to &quot;&lt;b&gt;xyz&lt;/b&gt;&quot; 
+PASS Element without children set to &quot;d\0e&quot; 
+PASS Element with empty text node as child set to &quot;d\0e&quot; 
+PASS Element with children set to &quot;d\0e&quot; 
+PASS Element with descendants set to &quot;d\0e&quot; 
+PASS DocumentFragment without children set to &quot;d\0e&quot; 
+PASS DocumentFragment with empty text node as child set to &quot;d\0e&quot; 
+PASS DocumentFragment with children set to &quot;d\0e&quot; 
+PASS DocumentFragment with descendants set to &quot;d\0e&quot; 
+PASS For a Text, textContent should set the data 
+PASS For a ProcessingInstruction, textContent should set the data 
+PASS For a Comment, textContent should set the data 
+PASS For Documents created by parser, setting textContent should do nothing 
+PASS For Documents created by createDocument, setting textContent should do nothing 
+PASS For Documents created by createHTMLDocument, setting textContent should do nothing 
+PASS For DocumentType created by parser, setting textContent should do nothing 
+PASS For DocumentType created by script, setting textContent should do nothing 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesNodetextContenthtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesNodetextContenthtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-textContent.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Node-textContent.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-textContent.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Node-textContent.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,265 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Node.textContent&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+// XXX mutation observers?
+// XXX Range gravitation?
+
+var documents, doctypes;
+setup(function() {
+  documents = [
+    [document, &quot;parser&quot;],
+    [document.implementation.createDocument(&quot;&quot;, &quot;test&quot;, null), &quot;createDocument&quot;],
+    [document.implementation.createHTMLDocument(&quot;title&quot;), &quot;createHTMLDocument&quot;],
+  ]
+  doctypes = [
+    [document.doctype, &quot;parser&quot;],
+    [document.implementation.createDocumentType(&quot;x&quot;, &quot;&quot;, &quot;&quot;), &quot;script&quot;],
+  ]
+})
+
+// Getting
+// DocumentFragment, Element:
+test(function() {
+  var element = document.createElement(&quot;div&quot;)
+  assert_equals(element.textContent, &quot;&quot;)
+}, &quot;For an empty Element, textContent should be the empty string&quot;)
+
+test(function() {
+  assert_equals(document.createDocumentFragment().textContent, &quot;&quot;)
+}, &quot;For an empty DocumentFragment, textContent should be the empty string&quot;)
+
+test(function() {
+  var el = document.createElement(&quot;div&quot;)
+  el.appendChild(document.createComment(&quot; abc &quot;))
+  el.appendChild(document.createTextNode(&quot;\tDEF\t&quot;))
+  el.appendChild(document.createProcessingInstruction(&quot;x&quot;, &quot; ghi &quot;))
+  assert_equals(el.textContent, &quot;\tDEF\t&quot;)
+}, &quot;Element with children&quot;)
+
+test(function() {
+  var el = document.createElement(&quot;div&quot;)
+  var child = document.createElement(&quot;div&quot;)
+  el.appendChild(child)
+  child.appendChild(document.createComment(&quot; abc &quot;))
+  child.appendChild(document.createTextNode(&quot;\tDEF\t&quot;))
+  child.appendChild(document.createProcessingInstruction(&quot;x&quot;, &quot; ghi &quot;))
+  assert_equals(el.textContent, &quot;\tDEF\t&quot;)
+}, &quot;Element with descendants&quot;)
+
+test(function() {
+  var df = document.createDocumentFragment()
+  df.appendChild(document.createComment(&quot; abc &quot;))
+  df.appendChild(document.createTextNode(&quot;\tDEF\t&quot;))
+  df.appendChild(document.createProcessingInstruction(&quot;x&quot;, &quot; ghi &quot;))
+  assert_equals(df.textContent, &quot;\tDEF\t&quot;)
+}, &quot;DocumentFragment with children&quot;)
+
+test(function() {
+  var df = document.createDocumentFragment()
+  var child = document.createElement(&quot;div&quot;)
+  df.appendChild(child)
+  child.appendChild(document.createComment(&quot; abc &quot;))
+  child.appendChild(document.createTextNode(&quot;\tDEF\t&quot;))
+  child.appendChild(document.createProcessingInstruction(&quot;x&quot;, &quot; ghi &quot;))
+  assert_equals(df.textContent, &quot;\tDEF\t&quot;)
+}, &quot;DocumentFragment with descendants&quot;)
+
+// Text, ProcessingInstruction, Comment:
+test(function() {
+  assert_equals(document.createTextNode(&quot;&quot;).textContent, &quot;&quot;)
+}, &quot;For an empty Text, textContent should be the empty string&quot;)
+
+test(function() {
+  assert_equals(document.createProcessingInstruction(&quot;x&quot;, &quot;&quot;).textContent, &quot;&quot;)
+}, &quot;For an empty ProcessingInstruction, textContent should be the empty string&quot;)
+
+test(function() {
+  assert_equals(document.createComment(&quot;&quot;).textContent, &quot;&quot;)
+}, &quot;For an empty Comment, textContent should be the empty string&quot;)
+
+test(function() {
+  assert_equals(document.createTextNode(&quot;abc&quot;).textContent, &quot;abc&quot;)
+}, &quot;For a Text with data, textContent should be that data&quot;)
+
+test(function() {
+  assert_equals(document.createProcessingInstruction(&quot;x&quot;, &quot;abc&quot;).textContent,
+                &quot;abc&quot;)
+}, &quot;For a ProcessingInstruction with data, textContent should be that data&quot;)
+
+test(function() {
+  assert_equals(document.createComment(&quot;abc&quot;).textContent, &quot;abc&quot;)
+}, &quot;For a Comment with data, textContent should be that data&quot;)
+
+// Any other node:
+documents.forEach(function(argument) {
+  var doc = argument[0], creator = argument[1]
+  test(function() {
+    assert_equals(doc.textContent, null)
+  }, &quot;For Documents created by &quot; + creator + &quot;, textContent should be null&quot;)
+})
+
+doctypes.forEach(function(argument) {
+  var doctype = argument[0], creator = argument[1]
+  test(function() {
+    assert_equals(doctype.textContent, null)
+  }, &quot;For DocumentType created by &quot; + creator + &quot;, textContent should be null&quot;)
+})
+
+// Setting
+// DocumentFragment, Element:
+var arguments = [
+  [null, null],
+  [undefined, null],
+  [&quot;&quot;, null],
+  [42, &quot;42&quot;],
+  [&quot;abc&quot;, &quot;abc&quot;],
+  [&quot;&lt;b&gt;xyz&lt;\/b&gt;&quot;, &quot;&lt;b&gt;xyz&lt;\/b&gt;&quot;],
+  [&quot;d\0e&quot;, &quot;d\0e&quot;]
+  // XXX unpaired surrogate?
+]
+arguments.forEach(function(aValue) {
+  var argument = aValue[0], expectation = aValue[1]
+  var check = function(aElementOrDocumentFragment) {
+    if (expectation === null) {
+      assert_equals(aElementOrDocumentFragment.textContent, &quot;&quot;)
+      assert_equals(aElementOrDocumentFragment.firstChild, null)
+    } else {
+      assert_equals(aElementOrDocumentFragment.textContent, expectation)
+      assert_equals(aElementOrDocumentFragment.childNodes.length, 1,
+                    &quot;Should have one child&quot;)
+      var firstChild = aElementOrDocumentFragment.firstChild
+      assert_true(firstChild instanceof Text, &quot;child should be a Text&quot;)
+      assert_equals(firstChild.data, expectation)
+    }
+  }
+
+  test(function() {
+    var el = document.createElement(&quot;div&quot;)
+    el.textContent = argument
+    check(el)
+  }, &quot;Element without children set to &quot; + format_value(argument))
+
+  test(function() {
+    var el = document.createElement(&quot;div&quot;)
+    var text = el.appendChild(document.createTextNode(&quot;&quot;))
+    el.textContent = argument
+    check(el)
+    assert_equals(text.parentNode, null,
+                  &quot;Preexisting Text should have been removed&quot;)
+  }, &quot;Element with empty text node as child set to &quot; + format_value(argument))
+
+  test(function() {
+    var el = document.createElement(&quot;div&quot;)
+    el.appendChild(document.createComment(&quot; abc &quot;))
+    el.appendChild(document.createTextNode(&quot;\tDEF\t&quot;))
+    el.appendChild(document.createProcessingInstruction(&quot;x&quot;, &quot; ghi &quot;))
+    el.textContent = argument
+    check(el)
+  }, &quot;Element with children set to &quot; + format_value(argument))
+
+  test(function() {
+    var el = document.createElement(&quot;div&quot;)
+    var child = document.createElement(&quot;div&quot;)
+    el.appendChild(child)
+    child.appendChild(document.createComment(&quot; abc &quot;))
+    child.appendChild(document.createTextNode(&quot;\tDEF\t&quot;))
+    child.appendChild(document.createProcessingInstruction(&quot;x&quot;, &quot; ghi &quot;))
+    el.textContent = argument
+    check(el)
+    assert_equals(child.childNodes.length, 3,
+                  &quot;Should not have changed the internal structure of the removed nodes.&quot;)
+  }, &quot;Element with descendants set to &quot; + format_value(argument))
+
+  test(function() {
+    var df = document.createDocumentFragment()
+    df.textContent = argument
+    check(df)
+  }, &quot;DocumentFragment without children set to &quot; + format_value(argument))
+
+  test(function() {
+    var df = document.createDocumentFragment()
+    var text = df.appendChild(document.createTextNode(&quot;&quot;))
+    df.textContent = argument
+    check(df)
+    assert_equals(text.parentNode, null,
+                  &quot;Preexisting Text should have been removed&quot;)
+  }, &quot;DocumentFragment with empty text node as child set to &quot; + format_value(argument))
+
+  test(function() {
+    var df = document.createDocumentFragment()
+    df.appendChild(document.createComment(&quot; abc &quot;))
+    df.appendChild(document.createTextNode(&quot;\tDEF\t&quot;))
+    df.appendChild(document.createProcessingInstruction(&quot;x&quot;, &quot; ghi &quot;))
+    df.textContent = argument
+    check(df)
+  }, &quot;DocumentFragment with children set to &quot; + format_value(argument))
+
+  test(function() {
+    var df = document.createDocumentFragment()
+    var child = document.createElement(&quot;div&quot;)
+    df.appendChild(child)
+    child.appendChild(document.createComment(&quot; abc &quot;))
+    child.appendChild(document.createTextNode(&quot;\tDEF\t&quot;))
+    child.appendChild(document.createProcessingInstruction(&quot;x&quot;, &quot; ghi &quot;))
+    df.textContent = argument
+    check(df)
+    assert_equals(child.childNodes.length, 3,
+                  &quot;Should not have changed the internal structure of the removed nodes.&quot;)
+  }, &quot;DocumentFragment with descendants set to &quot; + format_value(argument))
+})
+
+// Text, ProcessingInstruction, Comment:
+test(function() {
+  var text = document.createTextNode(&quot;abc&quot;)
+  text.textContent = &quot;def&quot;
+  assert_equals(text.textContent, &quot;def&quot;)
+  assert_equals(text.data, &quot;def&quot;)
+}, &quot;For a Text, textContent should set the data&quot;)
+
+test(function() {
+  var pi = document.createProcessingInstruction(&quot;x&quot;, &quot;abc&quot;)
+  pi.textContent = &quot;def&quot;
+  assert_equals(pi.textContent, &quot;def&quot;)
+  assert_equals(pi.data, &quot;def&quot;)
+  assert_equals(pi.target, &quot;x&quot;)
+}, &quot;For a ProcessingInstruction, textContent should set the data&quot;)
+
+test(function() {
+  var comment = document.createComment(&quot;abc&quot;)
+  comment.textContent = &quot;def&quot;
+  assert_equals(comment.textContent, &quot;def&quot;)
+  assert_equals(comment.data, &quot;def&quot;)
+}, &quot;For a Comment, textContent should set the data&quot;)
+
+// Any other node:
+documents.forEach(function(argument) {
+  var doc = argument[0], creator = argument[1]
+  test(function() {
+    var root = doc.documentElement
+    doc.textContent = &quot;a&quot;
+    assert_equals(doc.textContent, null)
+    assert_equals(doc.documentElement, root)
+  }, &quot;For Documents created by &quot; + creator + &quot;, setting textContent should do nothing&quot;)
+})
+
+doctypes.forEach(function(argument) {
+  var doctype = argument[0], creator = argument[1]
+  test(function() {
+    var props = {
+      name: doctype.name,
+      publicId: doctype.publicId,
+      systemId: doctype.systemId,
+    }
+    doctype.textContent = &quot;b&quot;
+    assert_equals(doctype.textContent, null)
+    assert_equals(doctype.name, props.name, &quot;name should not change&quot;)
+    assert_equals(doctype.publicId, props.publicId, &quot;publicId should not change&quot;)
+    assert_equals(doctype.systemId, props.systemId, &quot;systemId should not change&quot;)
+  }, &quot;For DocumentType created by &quot; + creator + &quot;, setting textContent should do nothing&quot;)
+})
+
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesParentNodeappendexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesParentNodeappendexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-append-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/ParentNode-append-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-append-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-append-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+
+PASS Element.append() without any argument, on a parent having no child. 
+PASS Element.append() with null as an argument, on a parent having no child. 
+PASS Element.append() with undefined as an argument, on a parent having no child. 
+PASS Element.append() with only text as an argument, on a parent having no child. 
+PASS Element.append() with only one element as an argument, on a parent having no child. 
+PASS Element.append() with null as an argument, on a parent having a child. 
+PASS Element.append() with one element and text as argument, on a parent having a child. 
+PASS DocumentFrgment.append() without any argument, on a parent having no child. 
+PASS DocumentFrgment.append() with null as an argument, on a parent having no child. 
+PASS DocumentFrgment.append() with undefined as an argument, on a parent having no child. 
+PASS DocumentFrgment.append() with only text as an argument, on a parent having no child. 
+PASS DocumentFrgment.append() with only one element as an argument, on a parent having no child. 
+PASS DocumentFrgment.append() with null as an argument, on a parent having a child. 
+PASS DocumentFrgment.append() with one element and text as argument, on a parent having a child. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesParentNodeappendhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesParentNodeappendhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-append.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/ParentNode-append.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-append.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-append.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,66 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;ParentNode.append&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-parentnode-append&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+function test_append(node, nodeName) {
+
+    test(function() {
+        var parent = node.cloneNode();
+        parent.append();
+        assert_array_equals(parent.childNodes, []);
+    }, nodeName + '.append() without any argument, on a parent having no child.');
+
+    test(function() {
+        var parent = node.cloneNode();
+        parent.append(null);
+        assert_equals(parent.childNodes[0].textContent, 'null');
+    }, nodeName + '.append() with null as an argument, on a parent having no child.');
+
+    test(function() {
+        var parent = node.cloneNode();
+        parent.append(undefined);
+        assert_equals(parent.childNodes[0].textContent, 'undefined');
+    }, nodeName + '.append() with undefined as an argument, on a parent having no child.');
+
+    test(function() {
+        var parent = node.cloneNode();
+        parent.append('text');
+        assert_equals(parent.childNodes[0].textContent, 'text');
+    }, nodeName + '.append() with only text as an argument, on a parent having no child.');
+
+    test(function() {
+        var parent = node.cloneNode();
+        var x = document.createElement('x');
+        parent.append(x);
+        assert_array_equals(parent.childNodes, [x]);
+    }, nodeName + '.append() with only one element as an argument, on a parent having no child.');
+
+    test(function() {
+        var parent = node.cloneNode();
+        var child = document.createElement('test');
+        parent.appendChild(child);
+        parent.append(null);
+        assert_equals(parent.childNodes[0], child);
+        assert_equals(parent.childNodes[1].textContent, 'null');
+    }, nodeName + '.append() with null as an argument, on a parent having a child.');
+
+    test(function() {
+        var parent = node.cloneNode();
+        var x = document.createElement('x');
+        var child = document.createElement('test');
+        parent.appendChild(child);
+        parent.append(x, 'text');
+        assert_equals(parent.childNodes[0], child);
+        assert_equals(parent.childNodes[1], x);
+        assert_equals(parent.childNodes[2].textContent, 'text');
+    }, nodeName + '.append() with one element and text as argument, on a parent having a child.');
+}
+
+test_append(document.createElement('div'), 'Element');
+test_append(document.createDocumentFragment(), 'DocumentFrgment');
+&lt;/script&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesParentNodeprependexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesParentNodeprependexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-prepend-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/ParentNode-prepend-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-prepend-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-prepend-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+
+PASS Element.prepend() without any argument, on a parent having no child. 
+PASS Element.prepend() with null as an argument, on a parent having no child. 
+PASS Element.prepend() with undefined as an argument, on a parent having no child. 
+PASS Element.prepend() with only text as an argument, on a parent having no child. 
+PASS Element.prepend() with only one element as an argument, on a parent having no child. 
+PASS Element.prepend() with null as an argument, on a parent having a child. 
+PASS Element.prepend() with one element and text as argument, on a parent having a child. 
+PASS DocumentFrgment.prepend() without any argument, on a parent having no child. 
+PASS DocumentFrgment.prepend() with null as an argument, on a parent having no child. 
+PASS DocumentFrgment.prepend() with undefined as an argument, on a parent having no child. 
+PASS DocumentFrgment.prepend() with only text as an argument, on a parent having no child. 
+PASS DocumentFrgment.prepend() with only one element as an argument, on a parent having no child. 
+PASS DocumentFrgment.prepend() with null as an argument, on a parent having a child. 
+PASS DocumentFrgment.prepend() with one element and text as argument, on a parent having a child. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesParentNodeprependhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesParentNodeprependhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-prepend.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/ParentNode-prepend.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-prepend.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-prepend.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,66 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;ParentNode.prepend&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-parentnode-prepend&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+function test_prepend(node, nodeName) {
+
+    test(function() {
+        var parent = node.cloneNode();
+        parent.prepend();
+        assert_array_equals(parent.childNodes, []);
+    }, nodeName + '.prepend() without any argument, on a parent having no child.');
+
+    test(function() {
+        var parent = node.cloneNode();
+        parent.prepend(null);
+        assert_equals(parent.childNodes[0].textContent, 'null');
+    }, nodeName + '.prepend() with null as an argument, on a parent having no child.');
+
+    test(function() {
+        var parent = node.cloneNode();
+        parent.prepend(undefined);
+        assert_equals(parent.childNodes[0].textContent, 'undefined');
+    }, nodeName + '.prepend() with undefined as an argument, on a parent having no child.');
+
+    test(function() {
+        var parent = node.cloneNode();
+        parent.prepend('text');
+        assert_equals(parent.childNodes[0].textContent, 'text');
+    }, nodeName + '.prepend() with only text as an argument, on a parent having no child.');
+
+    test(function() {
+        var parent = node.cloneNode();
+        var x = document.createElement('x');
+        parent.prepend(x);
+        assert_array_equals(parent.childNodes, [x]);
+    }, nodeName + '.prepend() with only one element as an argument, on a parent having no child.');
+
+    test(function() {
+        var parent = node.cloneNode();
+        var child = document.createElement('test');
+        parent.appendChild(child);
+        parent.prepend(null);
+        assert_equals(parent.childNodes[0].textContent, 'null');
+        assert_equals(parent.childNodes[1], child);
+    }, nodeName + '.prepend() with null as an argument, on a parent having a child.');
+
+    test(function() {
+        var parent = node.cloneNode();
+        var x = document.createElement('x');
+        var child = document.createElement('test');
+        parent.appendChild(child);
+        parent.prepend(x, 'text');
+        assert_equals(parent.childNodes[0], x);
+        assert_equals(parent.childNodes[1].textContent, 'text');
+        assert_equals(parent.childNodes[2], child);
+    }, nodeName + '.prepend() with one element and text as argument, on a parent having a child.');
+}
+
+test_prepend(document.createElement('div'), 'Element');
+test_prepend(document.createDocumentFragment(), 'DocumentFrgment');
+&lt;/script&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesParentNodequerySelectorAllexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesParentNodequerySelectorAllexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/ParentNode-querySelector-All-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,2022 @@
</span><ins>+This test requires JavaScript.
+
+PASS Selectors-API Test Suite: HTML 
+PASS Document supports querySelector 
+PASS Document supports querySelectorAll 
+PASS Document.querySelectorAll returns NodeList instance 
+PASS Detached Element supports querySelector 
+PASS Detached Element supports querySelectorAll 
+PASS Detached Element.querySelectorAll returns NodeList instance 
+PASS Fragment supports querySelector 
+PASS Fragment supports querySelectorAll 
+PASS Fragment.querySelectorAll returns NodeList instance 
+PASS In-document Element supports querySelector 
+PASS In-document Element supports querySelectorAll 
+PASS In-document Element.querySelectorAll returns NodeList instance 
+PASS Document.querySelectorAll null 
+PASS Document.querySelectorAll undefined 
+PASS Document.querySelectorAll no parameter 
+PASS Document.querySelector null 
+PASS Document.querySelector undefined 
+PASS Document.querySelector no parameter 
+PASS Document.querySelectorAll tree order 
+PASS Detached Element.querySelectorAll null 
+PASS Detached Element.querySelectorAll undefined 
+PASS Detached Element.querySelectorAll no parameter 
+PASS Detached Element.querySelector null 
+PASS Detached Element.querySelector undefined 
+PASS Detached Element.querySelector no parameter 
+PASS Detached Element.querySelectorAll tree order 
+PASS Fragment.querySelectorAll null 
+PASS Fragment.querySelectorAll undefined 
+PASS Fragment.querySelectorAll no parameter 
+PASS Fragment.querySelector null 
+PASS Fragment.querySelector undefined 
+PASS Fragment.querySelector no parameter 
+PASS Fragment.querySelectorAll tree order 
+PASS In-document Element.querySelectorAll null 
+PASS In-document Element.querySelectorAll undefined 
+PASS In-document Element.querySelectorAll no parameter 
+PASS In-document Element.querySelector null 
+PASS In-document Element.querySelector undefined 
+PASS In-document Element.querySelector no parameter 
+PASS In-document Element.querySelectorAll tree order 
+PASS Document: static NodeList 
+PASS Document: new NodeList 
+PASS Detached Element: static NodeList 
+PASS Detached Element: new NodeList 
+PASS Fragment: static NodeList 
+PASS Fragment: new NodeList 
+PASS In-document Element: static NodeList 
+PASS In-document Element: new NodeList 
+PASS Document.querySelector: Empty String:  
+PASS Document.querySelectorAll: Empty String:  
+PASS Document.querySelector: Invalid character: [ 
+PASS Document.querySelectorAll: Invalid character: [ 
+PASS Document.querySelector: Invalid character: ] 
+PASS Document.querySelectorAll: Invalid character: ] 
+PASS Document.querySelector: Invalid character: ( 
+PASS Document.querySelectorAll: Invalid character: ( 
+PASS Document.querySelector: Invalid character: ) 
+PASS Document.querySelectorAll: Invalid character: ) 
+PASS Document.querySelector: Invalid character: { 
+PASS Document.querySelectorAll: Invalid character: { 
+PASS Document.querySelector: Invalid character: } 
+PASS Document.querySelectorAll: Invalid character: } 
+PASS Document.querySelector: Invalid character: &lt; 
+PASS Document.querySelectorAll: Invalid character: &lt; 
+PASS Document.querySelector: Invalid character: &gt; 
+PASS Document.querySelectorAll: Invalid character: &gt; 
+PASS Document.querySelector: Invalid ID: # 
+PASS Document.querySelectorAll: Invalid ID: # 
+PASS Document.querySelector: Invalid group of selectors: div, 
+PASS Document.querySelectorAll: Invalid group of selectors: div, 
+PASS Document.querySelector: Invalid class: . 
+PASS Document.querySelectorAll: Invalid class: . 
+PASS Document.querySelector: Invalid class: .5cm 
+PASS Document.querySelectorAll: Invalid class: .5cm 
+PASS Document.querySelector: Invalid class: ..test 
+PASS Document.querySelectorAll: Invalid class: ..test 
+PASS Document.querySelector: Invalid class: .foo..quux 
+PASS Document.querySelectorAll: Invalid class: .foo..quux 
+PASS Document.querySelector: Invalid class: .bar. 
+PASS Document.querySelectorAll: Invalid class: .bar. 
+PASS Document.querySelector: Invalid combinator: div &amp; address, p 
+PASS Document.querySelectorAll: Invalid combinator: div &amp; address, p 
+FAIL Document.querySelector: Invalid combinator: div &gt;&gt; address, p assert_throws: function &quot;function () {
+        root.querySelector(q)
+      }&quot; did not throw
+FAIL Document.querySelectorAll: Invalid combinator: div &gt;&gt; address, p assert_throws: function &quot;function () {
+        root.querySelectorAll(q)
+      }&quot; did not throw
+PASS Document.querySelector: Invalid combinator: div ++ address, p 
+PASS Document.querySelectorAll: Invalid combinator: div ++ address, p 
+PASS Document.querySelector: Invalid combinator: div ~~ address, p 
+PASS Document.querySelectorAll: Invalid combinator: div ~~ address, p 
+PASS Document.querySelector: Invalid [att=value] selector: [*=test] 
+PASS Document.querySelectorAll: Invalid [att=value] selector: [*=test] 
+PASS Document.querySelector: Invalid [att=value] selector: [*|*=test] 
+PASS Document.querySelectorAll: Invalid [att=value] selector: [*|*=test] 
+PASS Document.querySelector: Invalid [att=value] selector: [class= space unquoted ] 
+PASS Document.querySelectorAll: Invalid [att=value] selector: [class= space unquoted ] 
+PASS Document.querySelector: Unknown pseudo-class: div:example 
+PASS Document.querySelectorAll: Unknown pseudo-class: div:example 
+PASS Document.querySelector: Unknown pseudo-class: :example 
+PASS Document.querySelectorAll: Unknown pseudo-class: :example 
+PASS Document.querySelector: Unknown pseudo-element: div::example 
+PASS Document.querySelectorAll: Unknown pseudo-element: div::example 
+PASS Document.querySelector: Unknown pseudo-element: ::example 
+PASS Document.querySelectorAll: Unknown pseudo-element: ::example 
+PASS Document.querySelector: Invalid pseudo-element: :::before 
+PASS Document.querySelectorAll: Invalid pseudo-element: :::before 
+FAIL Document.querySelector: Undeclared namespace: ns|div assert_throws: function &quot;function () {
+        root.querySelector(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+FAIL Document.querySelectorAll: Undeclared namespace: ns|div assert_throws: function &quot;function () {
+        root.querySelectorAll(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+FAIL Document.querySelector: Undeclared namespace: :not(ns|div) assert_throws: function &quot;function () {
+        root.querySelector(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+FAIL Document.querySelectorAll: Undeclared namespace: :not(ns|div) assert_throws: function &quot;function () {
+        root.querySelectorAll(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+PASS Document.querySelector: Invalid namespace: ^|div 
+PASS Document.querySelectorAll: Invalid namespace: ^|div 
+PASS Document.querySelector: Invalid namespace: $|div 
+PASS Document.querySelectorAll: Invalid namespace: $|div 
+PASS Detached Element.querySelector: Empty String:  
+PASS Detached Element.querySelectorAll: Empty String:  
+PASS Detached Element.querySelector: Invalid character: [ 
+PASS Detached Element.querySelectorAll: Invalid character: [ 
+PASS Detached Element.querySelector: Invalid character: ] 
+PASS Detached Element.querySelectorAll: Invalid character: ] 
+PASS Detached Element.querySelector: Invalid character: ( 
+PASS Detached Element.querySelectorAll: Invalid character: ( 
+PASS Detached Element.querySelector: Invalid character: ) 
+PASS Detached Element.querySelectorAll: Invalid character: ) 
+PASS Detached Element.querySelector: Invalid character: { 
+PASS Detached Element.querySelectorAll: Invalid character: { 
+PASS Detached Element.querySelector: Invalid character: } 
+PASS Detached Element.querySelectorAll: Invalid character: } 
+PASS Detached Element.querySelector: Invalid character: &lt; 
+PASS Detached Element.querySelectorAll: Invalid character: &lt; 
+PASS Detached Element.querySelector: Invalid character: &gt; 
+PASS Detached Element.querySelectorAll: Invalid character: &gt; 
+PASS Detached Element.querySelector: Invalid ID: # 
+PASS Detached Element.querySelectorAll: Invalid ID: # 
+PASS Detached Element.querySelector: Invalid group of selectors: div, 
+PASS Detached Element.querySelectorAll: Invalid group of selectors: div, 
+PASS Detached Element.querySelector: Invalid class: . 
+PASS Detached Element.querySelectorAll: Invalid class: . 
+PASS Detached Element.querySelector: Invalid class: .5cm 
+PASS Detached Element.querySelectorAll: Invalid class: .5cm 
+PASS Detached Element.querySelector: Invalid class: ..test 
+PASS Detached Element.querySelectorAll: Invalid class: ..test 
+PASS Detached Element.querySelector: Invalid class: .foo..quux 
+PASS Detached Element.querySelectorAll: Invalid class: .foo..quux 
+PASS Detached Element.querySelector: Invalid class: .bar. 
+PASS Detached Element.querySelectorAll: Invalid class: .bar. 
+PASS Detached Element.querySelector: Invalid combinator: div &amp; address, p 
+PASS Detached Element.querySelectorAll: Invalid combinator: div &amp; address, p 
+FAIL Detached Element.querySelector: Invalid combinator: div &gt;&gt; address, p assert_throws: function &quot;function () {
+        root.querySelector(q)
+      }&quot; did not throw
+FAIL Detached Element.querySelectorAll: Invalid combinator: div &gt;&gt; address, p assert_throws: function &quot;function () {
+        root.querySelectorAll(q)
+      }&quot; did not throw
+PASS Detached Element.querySelector: Invalid combinator: div ++ address, p 
+PASS Detached Element.querySelectorAll: Invalid combinator: div ++ address, p 
+PASS Detached Element.querySelector: Invalid combinator: div ~~ address, p 
+PASS Detached Element.querySelectorAll: Invalid combinator: div ~~ address, p 
+PASS Detached Element.querySelector: Invalid [att=value] selector: [*=test] 
+PASS Detached Element.querySelectorAll: Invalid [att=value] selector: [*=test] 
+PASS Detached Element.querySelector: Invalid [att=value] selector: [*|*=test] 
+PASS Detached Element.querySelectorAll: Invalid [att=value] selector: [*|*=test] 
+PASS Detached Element.querySelector: Invalid [att=value] selector: [class= space unquoted ] 
+PASS Detached Element.querySelectorAll: Invalid [att=value] selector: [class= space unquoted ] 
+PASS Detached Element.querySelector: Unknown pseudo-class: div:example 
+PASS Detached Element.querySelectorAll: Unknown pseudo-class: div:example 
+PASS Detached Element.querySelector: Unknown pseudo-class: :example 
+PASS Detached Element.querySelectorAll: Unknown pseudo-class: :example 
+PASS Detached Element.querySelector: Unknown pseudo-element: div::example 
+PASS Detached Element.querySelectorAll: Unknown pseudo-element: div::example 
+PASS Detached Element.querySelector: Unknown pseudo-element: ::example 
+PASS Detached Element.querySelectorAll: Unknown pseudo-element: ::example 
+PASS Detached Element.querySelector: Invalid pseudo-element: :::before 
+PASS Detached Element.querySelectorAll: Invalid pseudo-element: :::before 
+FAIL Detached Element.querySelector: Undeclared namespace: ns|div assert_throws: function &quot;function () {
+        root.querySelector(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+FAIL Detached Element.querySelectorAll: Undeclared namespace: ns|div assert_throws: function &quot;function () {
+        root.querySelectorAll(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+FAIL Detached Element.querySelector: Undeclared namespace: :not(ns|div) assert_throws: function &quot;function () {
+        root.querySelector(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+FAIL Detached Element.querySelectorAll: Undeclared namespace: :not(ns|div) assert_throws: function &quot;function () {
+        root.querySelectorAll(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+PASS Detached Element.querySelector: Invalid namespace: ^|div 
+PASS Detached Element.querySelectorAll: Invalid namespace: ^|div 
+PASS Detached Element.querySelector: Invalid namespace: $|div 
+PASS Detached Element.querySelectorAll: Invalid namespace: $|div 
+PASS Fragment.querySelector: Empty String:  
+PASS Fragment.querySelectorAll: Empty String:  
+PASS Fragment.querySelector: Invalid character: [ 
+PASS Fragment.querySelectorAll: Invalid character: [ 
+PASS Fragment.querySelector: Invalid character: ] 
+PASS Fragment.querySelectorAll: Invalid character: ] 
+PASS Fragment.querySelector: Invalid character: ( 
+PASS Fragment.querySelectorAll: Invalid character: ( 
+PASS Fragment.querySelector: Invalid character: ) 
+PASS Fragment.querySelectorAll: Invalid character: ) 
+PASS Fragment.querySelector: Invalid character: { 
+PASS Fragment.querySelectorAll: Invalid character: { 
+PASS Fragment.querySelector: Invalid character: } 
+PASS Fragment.querySelectorAll: Invalid character: } 
+PASS Fragment.querySelector: Invalid character: &lt; 
+PASS Fragment.querySelectorAll: Invalid character: &lt; 
+PASS Fragment.querySelector: Invalid character: &gt; 
+PASS Fragment.querySelectorAll: Invalid character: &gt; 
+PASS Fragment.querySelector: Invalid ID: # 
+PASS Fragment.querySelectorAll: Invalid ID: # 
+PASS Fragment.querySelector: Invalid group of selectors: div, 
+PASS Fragment.querySelectorAll: Invalid group of selectors: div, 
+PASS Fragment.querySelector: Invalid class: . 
+PASS Fragment.querySelectorAll: Invalid class: . 
+PASS Fragment.querySelector: Invalid class: .5cm 
+PASS Fragment.querySelectorAll: Invalid class: .5cm 
+PASS Fragment.querySelector: Invalid class: ..test 
+PASS Fragment.querySelectorAll: Invalid class: ..test 
+PASS Fragment.querySelector: Invalid class: .foo..quux 
+PASS Fragment.querySelectorAll: Invalid class: .foo..quux 
+PASS Fragment.querySelector: Invalid class: .bar. 
+PASS Fragment.querySelectorAll: Invalid class: .bar. 
+PASS Fragment.querySelector: Invalid combinator: div &amp; address, p 
+PASS Fragment.querySelectorAll: Invalid combinator: div &amp; address, p 
+FAIL Fragment.querySelector: Invalid combinator: div &gt;&gt; address, p assert_throws: function &quot;function () {
+        root.querySelector(q)
+      }&quot; did not throw
+FAIL Fragment.querySelectorAll: Invalid combinator: div &gt;&gt; address, p assert_throws: function &quot;function () {
+        root.querySelectorAll(q)
+      }&quot; did not throw
+PASS Fragment.querySelector: Invalid combinator: div ++ address, p 
+PASS Fragment.querySelectorAll: Invalid combinator: div ++ address, p 
+PASS Fragment.querySelector: Invalid combinator: div ~~ address, p 
+PASS Fragment.querySelectorAll: Invalid combinator: div ~~ address, p 
+PASS Fragment.querySelector: Invalid [att=value] selector: [*=test] 
+PASS Fragment.querySelectorAll: Invalid [att=value] selector: [*=test] 
+PASS Fragment.querySelector: Invalid [att=value] selector: [*|*=test] 
+PASS Fragment.querySelectorAll: Invalid [att=value] selector: [*|*=test] 
+PASS Fragment.querySelector: Invalid [att=value] selector: [class= space unquoted ] 
+PASS Fragment.querySelectorAll: Invalid [att=value] selector: [class= space unquoted ] 
+PASS Fragment.querySelector: Unknown pseudo-class: div:example 
+PASS Fragment.querySelectorAll: Unknown pseudo-class: div:example 
+PASS Fragment.querySelector: Unknown pseudo-class: :example 
+PASS Fragment.querySelectorAll: Unknown pseudo-class: :example 
+PASS Fragment.querySelector: Unknown pseudo-element: div::example 
+PASS Fragment.querySelectorAll: Unknown pseudo-element: div::example 
+PASS Fragment.querySelector: Unknown pseudo-element: ::example 
+PASS Fragment.querySelectorAll: Unknown pseudo-element: ::example 
+PASS Fragment.querySelector: Invalid pseudo-element: :::before 
+PASS Fragment.querySelectorAll: Invalid pseudo-element: :::before 
+FAIL Fragment.querySelector: Undeclared namespace: ns|div assert_throws: function &quot;function () {
+        root.querySelector(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+FAIL Fragment.querySelectorAll: Undeclared namespace: ns|div assert_throws: function &quot;function () {
+        root.querySelectorAll(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+FAIL Fragment.querySelector: Undeclared namespace: :not(ns|div) assert_throws: function &quot;function () {
+        root.querySelector(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+FAIL Fragment.querySelectorAll: Undeclared namespace: :not(ns|div) assert_throws: function &quot;function () {
+        root.querySelectorAll(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+PASS Fragment.querySelector: Invalid namespace: ^|div 
+PASS Fragment.querySelectorAll: Invalid namespace: ^|div 
+PASS Fragment.querySelector: Invalid namespace: $|div 
+PASS Fragment.querySelectorAll: Invalid namespace: $|div 
+PASS In-document Element.querySelector: Empty String:  
+PASS In-document Element.querySelectorAll: Empty String:  
+PASS In-document Element.querySelector: Invalid character: [ 
+PASS In-document Element.querySelectorAll: Invalid character: [ 
+PASS In-document Element.querySelector: Invalid character: ] 
+PASS In-document Element.querySelectorAll: Invalid character: ] 
+PASS In-document Element.querySelector: Invalid character: ( 
+PASS In-document Element.querySelectorAll: Invalid character: ( 
+PASS In-document Element.querySelector: Invalid character: ) 
+PASS In-document Element.querySelectorAll: Invalid character: ) 
+PASS In-document Element.querySelector: Invalid character: { 
+PASS In-document Element.querySelectorAll: Invalid character: { 
+PASS In-document Element.querySelector: Invalid character: } 
+PASS In-document Element.querySelectorAll: Invalid character: } 
+PASS In-document Element.querySelector: Invalid character: &lt; 
+PASS In-document Element.querySelectorAll: Invalid character: &lt; 
+PASS In-document Element.querySelector: Invalid character: &gt; 
+PASS In-document Element.querySelectorAll: Invalid character: &gt; 
+PASS In-document Element.querySelector: Invalid ID: # 
+PASS In-document Element.querySelectorAll: Invalid ID: # 
+PASS In-document Element.querySelector: Invalid group of selectors: div, 
+PASS In-document Element.querySelectorAll: Invalid group of selectors: div, 
+PASS In-document Element.querySelector: Invalid class: . 
+PASS In-document Element.querySelectorAll: Invalid class: . 
+PASS In-document Element.querySelector: Invalid class: .5cm 
+PASS In-document Element.querySelectorAll: Invalid class: .5cm 
+PASS In-document Element.querySelector: Invalid class: ..test 
+PASS In-document Element.querySelectorAll: Invalid class: ..test 
+PASS In-document Element.querySelector: Invalid class: .foo..quux 
+PASS In-document Element.querySelectorAll: Invalid class: .foo..quux 
+PASS In-document Element.querySelector: Invalid class: .bar. 
+PASS In-document Element.querySelectorAll: Invalid class: .bar. 
+PASS In-document Element.querySelector: Invalid combinator: div &amp; address, p 
+PASS In-document Element.querySelectorAll: Invalid combinator: div &amp; address, p 
+FAIL In-document Element.querySelector: Invalid combinator: div &gt;&gt; address, p assert_throws: function &quot;function () {
+        root.querySelector(q)
+      }&quot; did not throw
+FAIL In-document Element.querySelectorAll: Invalid combinator: div &gt;&gt; address, p assert_throws: function &quot;function () {
+        root.querySelectorAll(q)
+      }&quot; did not throw
+PASS In-document Element.querySelector: Invalid combinator: div ++ address, p 
+PASS In-document Element.querySelectorAll: Invalid combinator: div ++ address, p 
+PASS In-document Element.querySelector: Invalid combinator: div ~~ address, p 
+PASS In-document Element.querySelectorAll: Invalid combinator: div ~~ address, p 
+PASS In-document Element.querySelector: Invalid [att=value] selector: [*=test] 
+PASS In-document Element.querySelectorAll: Invalid [att=value] selector: [*=test] 
+PASS In-document Element.querySelector: Invalid [att=value] selector: [*|*=test] 
+PASS In-document Element.querySelectorAll: Invalid [att=value] selector: [*|*=test] 
+PASS In-document Element.querySelector: Invalid [att=value] selector: [class= space unquoted ] 
+PASS In-document Element.querySelectorAll: Invalid [att=value] selector: [class= space unquoted ] 
+PASS In-document Element.querySelector: Unknown pseudo-class: div:example 
+PASS In-document Element.querySelectorAll: Unknown pseudo-class: div:example 
+PASS In-document Element.querySelector: Unknown pseudo-class: :example 
+PASS In-document Element.querySelectorAll: Unknown pseudo-class: :example 
+PASS In-document Element.querySelector: Unknown pseudo-element: div::example 
+PASS In-document Element.querySelectorAll: Unknown pseudo-element: div::example 
+PASS In-document Element.querySelector: Unknown pseudo-element: ::example 
+PASS In-document Element.querySelectorAll: Unknown pseudo-element: ::example 
+PASS In-document Element.querySelector: Invalid pseudo-element: :::before 
+PASS In-document Element.querySelectorAll: Invalid pseudo-element: :::before 
+FAIL In-document Element.querySelector: Undeclared namespace: ns|div assert_throws: function &quot;function () {
+        root.querySelector(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+FAIL In-document Element.querySelectorAll: Undeclared namespace: ns|div assert_throws: function &quot;function () {
+        root.querySelectorAll(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+FAIL In-document Element.querySelector: Undeclared namespace: :not(ns|div) assert_throws: function &quot;function () {
+        root.querySelector(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+FAIL In-document Element.querySelectorAll: Undeclared namespace: :not(ns|div) assert_throws: function &quot;function () {
+        root.querySelectorAll(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+PASS In-document Element.querySelector: Invalid namespace: ^|div 
+PASS In-document Element.querySelectorAll: Invalid namespace: ^|div 
+PASS In-document Element.querySelector: Invalid namespace: $|div 
+PASS In-document Element.querySelectorAll: Invalid namespace: $|div 
+PASS Document.querySelectorAll: Type selector, matching html element: html 
+PASS Document.querySelector: Type selector, matching html element: html 
+PASS Document.querySelectorAll: Type selector, matching body element: body 
+PASS Document.querySelector: Type selector, matching body element: body 
+PASS Document.querySelectorAll: Universal selector, matching all children of element with specified ID: #universal&gt;* 
+PASS Document.querySelector: Universal selector, matching all children of element with specified ID: #universal&gt;* 
+PASS Document.querySelectorAll: Universal selector, matching all grandchildren of element with specified ID: #universal&gt;*&gt;* 
+PASS Document.querySelector: Universal selector, matching all grandchildren of element with specified ID: #universal&gt;*&gt;* 
+PASS Document.querySelectorAll: Universal selector, matching all children of empty element with specified ID: #empty&gt;* 
+PASS Document.querySelector: Universal selector, matching all children of empty element with specified ID: #empty&gt;* 
+PASS Document.querySelectorAll: Universal selector, matching all descendants of element with specified ID: #universal * 
+PASS Document.querySelector: Universal selector, matching all descendants of element with specified ID: #universal * 
+PASS Document.querySelectorAll: Attribute presence selector, matching align attribute with value: .attr-presence-div1[align] 
+PASS Document.querySelector: Attribute presence selector, matching align attribute with value: .attr-presence-div1[align] 
+PASS Document.querySelectorAll: Attribute presence selector, matching align attribute with empty value: .attr-presence-div2[align] 
+PASS Document.querySelector: Attribute presence selector, matching align attribute with empty value: .attr-presence-div2[align] 
+PASS Document.querySelectorAll: Attribute presence selector, matching title attribute, case insensitivity: #attr-presence [TiTlE] 
+PASS Document.querySelector: Attribute presence selector, matching title attribute, case insensitivity: #attr-presence [TiTlE] 
+PASS Document.querySelectorAll: Attribute presence selector, matching custom data-* attribute: [data-attr-presence] 
+PASS Document.querySelector: Attribute presence selector, matching custom data-* attribute: [data-attr-presence] 
+PASS Document.querySelectorAll: Attribute presence selector, not matching attribute with similar name: .attr-presence-div3[align], .attr-presence-div4[align] 
+PASS Document.querySelector: Attribute presence selector, not matching attribute with similar name: .attr-presence-div3[align], .attr-presence-div4[align] 
+PASS Document.querySelectorAll: Attribute presence selector, matching attribute with non-ASCII characters: ul[data-中文] 
+PASS Document.querySelector: Attribute presence selector, matching attribute with non-ASCII characters: ul[data-中文] 
+PASS Document.querySelectorAll: Attribute presence selector, not matching default option without selected attribute: #attr-presence-select1 option[selected] 
+PASS Document.querySelector: Attribute presence selector, not matching default option without selected attribute: #attr-presence-select1 option[selected] 
+PASS Document.querySelectorAll: Attribute presence selector, matching option with selected attribute: #attr-presence-select2 option[selected] 
+PASS Document.querySelector: Attribute presence selector, matching option with selected attribute: #attr-presence-select2 option[selected] 
+PASS Document.querySelectorAll: Attribute presence selector, matching multiple options with selected attributes: #attr-presence-select3 option[selected] 
+PASS Document.querySelector: Attribute presence selector, matching multiple options with selected attributes: #attr-presence-select3 option[selected] 
+PASS Document.querySelectorAll: Attribute value selector, matching align attribute with value: #attr-value [align=&quot;center&quot;] 
+PASS Document.querySelector: Attribute value selector, matching align attribute with value: #attr-value [align=&quot;center&quot;] 
+PASS Document.querySelectorAll: Attribute value selector, matching align attribute with empty value: #attr-value [align=&quot;&quot;] 
+PASS Document.querySelector: Attribute value selector, matching align attribute with empty value: #attr-value [align=&quot;&quot;] 
+PASS Document.querySelectorAll: Attribute value selector, not matching align attribute with partial value: #attr-value [align=&quot;c&quot;] 
+PASS Document.querySelector: Attribute value selector, not matching align attribute with partial value: #attr-value [align=&quot;c&quot;] 
+PASS Document.querySelectorAll: Attribute value selector, not matching align attribute with incorrect value: #attr-value [align=&quot;centera&quot;] 
+PASS Document.querySelector: Attribute value selector, not matching align attribute with incorrect value: #attr-value [align=&quot;centera&quot;] 
+PASS Document.querySelectorAll: Attribute value selector, matching custom data-* attribute with unicode escaped value: [data-attr-value=&quot;\e9&quot;] 
+PASS Document.querySelector: Attribute value selector, matching custom data-* attribute with unicode escaped value: [data-attr-value=&quot;\e9&quot;] 
+PASS Document.querySelectorAll: Attribute value selector, matching custom data-* attribute with escaped character: [data-attr-value_foo=&quot;\e9&quot;] 
+PASS Document.querySelector: Attribute value selector, matching custom data-* attribute with escaped character: [data-attr-value_foo=&quot;\e9&quot;] 
+PASS Document.querySelectorAll: Attribute value selector with single-quoted value, matching multiple inputs with type attributes: #attr-value input[type='hidden'],#attr-value input[type='radio'] 
+PASS Document.querySelector: Attribute value selector with single-quoted value, matching multiple inputs with type attributes: #attr-value input[type='hidden'],#attr-value input[type='radio'] 
+PASS Document.querySelectorAll: Attribute value selector with double-quoted value, matching multiple inputs with type attributes: #attr-value input[type=&quot;hidden&quot;],#attr-value input[type='radio'] 
+PASS Document.querySelector: Attribute value selector with double-quoted value, matching multiple inputs with type attributes: #attr-value input[type=&quot;hidden&quot;],#attr-value input[type='radio'] 
+PASS Document.querySelectorAll: Attribute value selector with unquoted value, matching multiple inputs with type attributes: #attr-value input[type=hidden],#attr-value input[type=radio] 
+PASS Document.querySelector: Attribute value selector with unquoted value, matching multiple inputs with type attributes: #attr-value input[type=hidden],#attr-value input[type=radio] 
+PASS Document.querySelectorAll: Attribute value selector, matching attribute with value using non-ASCII characters: [data-attr-value=中文] 
+PASS Document.querySelector: Attribute value selector, matching attribute with value using non-ASCII characters: [data-attr-value=中文] 
+PASS Document.querySelectorAll: Attribute whitespace-separated list selector, matching class attribute with value: #attr-whitespace [class~=&quot;div1&quot;] 
+PASS Document.querySelector: Attribute whitespace-separated list selector, matching class attribute with value: #attr-whitespace [class~=&quot;div1&quot;] 
+PASS Document.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=&quot;&quot;] 
+PASS Document.querySelector: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=&quot;&quot;] 
+PASS Document.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with partial value: [data-attr-whitespace~=&quot;div&quot;] 
+PASS Document.querySelector: Attribute whitespace-separated list selector, not matching class attribute with partial value: [data-attr-whitespace~=&quot;div&quot;] 
+PASS Document.querySelectorAll: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value: [data-attr-whitespace~=&quot;\0000e9&quot;] 
+PASS Document.querySelector: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value: [data-attr-whitespace~=&quot;\0000e9&quot;] 
+PASS Document.querySelectorAll: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character: [data-attr-whitespace_foo~=&quot;\e9&quot;] 
+PASS Document.querySelector: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character: [data-attr-whitespace_foo~=&quot;\e9&quot;] 
+PASS Document.querySelectorAll: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~='bookmark'],  #attr-whitespace a[rel~='nofollow'] 
+PASS Document.querySelector: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~='bookmark'],  #attr-whitespace a[rel~='nofollow'] 
+PASS Document.querySelectorAll: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=&quot;bookmark&quot;],#attr-whitespace a[rel~='nofollow'] 
+PASS Document.querySelector: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=&quot;bookmark&quot;],#attr-whitespace a[rel~='nofollow'] 
+PASS Document.querySelectorAll: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=bookmark],    #attr-whitespace a[rel~=nofollow] 
+PASS Document.querySelector: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=bookmark],    #attr-whitespace a[rel~=nofollow] 
+PASS Document.querySelectorAll: Attribute whitespace-separated list selector with double-quoted value, not matching value with space: #attr-whitespace a[rel~=&quot;book mark&quot;] 
+PASS Document.querySelector: Attribute whitespace-separated list selector with double-quoted value, not matching value with space: #attr-whitespace a[rel~=&quot;book mark&quot;] 
+PASS Document.querySelectorAll: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters: #attr-whitespace [title~=中文] 
+PASS Document.querySelector: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters: #attr-whitespace [title~=中文] 
+PASS Document.querySelectorAll: Attribute hyphen-separated list selector, not matching unspecified lang attribute: #attr-hyphen-div1[lang|=&quot;en&quot;] 
+PASS Document.querySelector: Attribute hyphen-separated list selector, not matching unspecified lang attribute: #attr-hyphen-div1[lang|=&quot;en&quot;] 
+PASS Document.querySelectorAll: Attribute hyphen-separated list selector, matching lang attribute with exact value: #attr-hyphen-div2[lang|=&quot;fr&quot;] 
+PASS Document.querySelector: Attribute hyphen-separated list selector, matching lang attribute with exact value: #attr-hyphen-div2[lang|=&quot;fr&quot;] 
+PASS Document.querySelectorAll: Attribute hyphen-separated list selector, matching lang attribute with partial value: #attr-hyphen-div3[lang|=&quot;en&quot;] 
+PASS Document.querySelector: Attribute hyphen-separated list selector, matching lang attribute with partial value: #attr-hyphen-div3[lang|=&quot;en&quot;] 
+PASS Document.querySelectorAll: Attribute hyphen-separated list selector, not matching incorrect value: #attr-hyphen-div4[lang|=&quot;es-AR&quot;] 
+PASS Document.querySelector: Attribute hyphen-separated list selector, not matching incorrect value: #attr-hyphen-div4[lang|=&quot;es-AR&quot;] 
+PASS Document.querySelectorAll: Attribute begins with selector, matching href attributes beginning with specified substring: #attr-begins a[href^=&quot;http://www&quot;] 
+PASS Document.querySelector: Attribute begins with selector, matching href attributes beginning with specified substring: #attr-begins a[href^=&quot;http://www&quot;] 
+PASS Document.querySelectorAll: Attribute begins with selector, matching lang attributes beginning with specified substring, : #attr-begins [lang^=&quot;en-&quot;] 
+PASS Document.querySelector: Attribute begins with selector, matching lang attributes beginning with specified substring, : #attr-begins [lang^=&quot;en-&quot;] 
+PASS Document.querySelectorAll: Attribute begins with selector, not matching class attribute not beginning with specified substring: #attr-begins [class^=apple] 
+PASS Document.querySelector: Attribute begins with selector, not matching class attribute not beginning with specified substring: #attr-begins [class^=apple] 
+PASS Document.querySelectorAll: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=' apple'] 
+PASS Document.querySelector: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=' apple'] 
+PASS Document.querySelectorAll: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=&quot; apple&quot;] 
+PASS Document.querySelector: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=&quot; apple&quot;] 
+PASS Document.querySelectorAll: Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring: #attr-begins [class^= apple] 
+PASS Document.querySelector: Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring: #attr-begins [class^= apple] 
+PASS Document.querySelectorAll: Attribute ends with selector, matching href attributes ending with specified substring: #attr-ends a[href$=&quot;.org&quot;] 
+PASS Document.querySelector: Attribute ends with selector, matching href attributes ending with specified substring: #attr-ends a[href$=&quot;.org&quot;] 
+PASS Document.querySelectorAll: Attribute ends with selector, matching lang attributes ending with specified substring, : #attr-ends [lang$=&quot;-CH&quot;] 
+PASS Document.querySelector: Attribute ends with selector, matching lang attributes ending with specified substring, : #attr-ends [lang$=&quot;-CH&quot;] 
+PASS Document.querySelectorAll: Attribute ends with selector, not matching class attribute not ending with specified substring: #attr-ends [class$=apple] 
+PASS Document.querySelector: Attribute ends with selector, not matching class attribute not ending with specified substring: #attr-ends [class$=apple] 
+PASS Document.querySelectorAll: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring: #attr-ends [class$='apple '] 
+PASS Document.querySelector: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring: #attr-ends [class$='apple '] 
+PASS Document.querySelectorAll: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring: #attr-ends [class$=&quot;apple &quot;] 
+PASS Document.querySelector: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring: #attr-ends [class$=&quot;apple &quot;] 
+PASS Document.querySelectorAll: Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring: #attr-ends [class$=apple ] 
+PASS Document.querySelector: Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring: #attr-ends [class$=apple ] 
+PASS Document.querySelectorAll: Attribute contains selector, matching href attributes beginning with specified substring: #attr-contains a[href*=&quot;http://www&quot;] 
+PASS Document.querySelector: Attribute contains selector, matching href attributes beginning with specified substring: #attr-contains a[href*=&quot;http://www&quot;] 
+PASS Document.querySelectorAll: Attribute contains selector, matching href attributes ending with specified substring: #attr-contains a[href*=&quot;.org&quot;] 
+PASS Document.querySelector: Attribute contains selector, matching href attributes ending with specified substring: #attr-contains a[href*=&quot;.org&quot;] 
+PASS Document.querySelectorAll: Attribute contains selector, matching href attributes containing specified substring: #attr-contains a[href*=&quot;.example.&quot;] 
+PASS Document.querySelector: Attribute contains selector, matching href attributes containing specified substring: #attr-contains a[href*=&quot;.example.&quot;] 
+PASS Document.querySelectorAll: Attribute contains selector, matching lang attributes beginning with specified substring, : #attr-contains [lang*=&quot;en-&quot;] 
+PASS Document.querySelector: Attribute contains selector, matching lang attributes beginning with specified substring, : #attr-contains [lang*=&quot;en-&quot;] 
+PASS Document.querySelectorAll: Attribute contains selector, matching lang attributes ending with specified substring, : #attr-contains [lang*=&quot;-CH&quot;] 
+PASS Document.querySelector: Attribute contains selector, matching lang attributes ending with specified substring, : #attr-contains [lang*=&quot;-CH&quot;] 
+PASS Document.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=' apple'] 
+PASS Document.querySelector: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=' apple'] 
+PASS Document.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring: #attr-contains [class*='orange '] 
+PASS Document.querySelector: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring: #attr-contains [class*='orange '] 
+PASS Document.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute containing specified substring: #attr-contains [class*='ple banana ora'] 
+PASS Document.querySelector: Attribute contains selector with single-quoted value, matching class attribute containing specified substring: #attr-contains [class*='ple banana ora'] 
+PASS Document.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=&quot; apple&quot;] 
+PASS Document.querySelector: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=&quot; apple&quot;] 
+PASS Document.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring: #attr-contains [class*=&quot;orange &quot;] 
+PASS Document.querySelector: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring: #attr-contains [class*=&quot;orange &quot;] 
+PASS Document.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute containing specified substring: #attr-contains [class*=&quot;ple banana ora&quot;] 
+PASS Document.querySelector: Attribute contains selector with double-quoted value, matching class attribute containing specified substring: #attr-contains [class*=&quot;ple banana ora&quot;] 
+PASS Document.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring: #attr-contains [class*= apple] 
+PASS Document.querySelector: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring: #attr-contains [class*= apple] 
+PASS Document.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute ending with specified substring: #attr-contains [class*=orange ] 
+PASS Document.querySelector: Attribute contains selector with unquoted value, matching class attribute ending with specified substring: #attr-contains [class*=orange ] 
+PASS Document.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute containing specified substring: #attr-contains [class*= banana ] 
+PASS Document.querySelector: Attribute contains selector with unquoted value, matching class attribute containing specified substring: #attr-contains [class*= banana ] 
+PASS Document.querySelectorAll: :root pseudo-class selector, matching document root element: :root 
+PASS Document.querySelector: :root pseudo-class selector, matching document root element: :root 
+PASS Document.querySelectorAll: :nth-child selector, matching the third child element: #pseudo-nth-table1 :nth-child(3) 
+PASS Document.querySelector: :nth-child selector, matching the third child element: #pseudo-nth-table1 :nth-child(3) 
+PASS Document.querySelectorAll: :nth-child selector, matching every third child element: #pseudo-nth li:nth-child(3n) 
+PASS Document.querySelector: :nth-child selector, matching every third child element: #pseudo-nth li:nth-child(3n) 
+PASS Document.querySelectorAll: :nth-child selector, matching every second child element, starting from the fourth: #pseudo-nth li:nth-child(2n+4) 
+PASS Document.querySelector: :nth-child selector, matching every second child element, starting from the fourth: #pseudo-nth li:nth-child(2n+4) 
+PASS Document.querySelectorAll: :nth-child selector, matching every fourth child element, starting from the third: #pseudo-nth-p1 :nth-child(4n-1) 
+PASS Document.querySelector: :nth-child selector, matching every fourth child element, starting from the third: #pseudo-nth-p1 :nth-child(4n-1) 
+PASS Document.querySelectorAll: :nth-last-child selector, matching the third last child element: #pseudo-nth-table1 :nth-last-child(3) 
+PASS Document.querySelector: :nth-last-child selector, matching the third last child element: #pseudo-nth-table1 :nth-last-child(3) 
+PASS Document.querySelectorAll: :nth-last-child selector, matching every third child element from the end: #pseudo-nth li:nth-last-child(3n) 
+PASS Document.querySelector: :nth-last-child selector, matching every third child element from the end: #pseudo-nth li:nth-last-child(3n) 
+PASS Document.querySelectorAll: :nth-last-child selector, matching every second child element from the end, starting from the fourth last: #pseudo-nth li:nth-last-child(2n+4) 
+PASS Document.querySelector: :nth-last-child selector, matching every second child element from the end, starting from the fourth last: #pseudo-nth li:nth-last-child(2n+4) 
+PASS Document.querySelectorAll: :nth-last-child selector, matching every fourth element from the end, starting from the third last: #pseudo-nth-p1 :nth-last-child(4n-1) 
+PASS Document.querySelector: :nth-last-child selector, matching every fourth element from the end, starting from the third last: #pseudo-nth-p1 :nth-last-child(4n-1) 
+PASS Document.querySelectorAll: :nth-of-type selector, matching the third em element: #pseudo-nth-p1 em:nth-of-type(3) 
+PASS Document.querySelector: :nth-of-type selector, matching the third em element: #pseudo-nth-p1 em:nth-of-type(3) 
+PASS Document.querySelectorAll: :nth-of-type selector, matching every second element of their type: #pseudo-nth-p1 :nth-of-type(2n) 
+PASS Document.querySelector: :nth-of-type selector, matching every second element of their type: #pseudo-nth-p1 :nth-of-type(2n) 
+PASS Document.querySelectorAll: :nth-of-type selector, matching every second elemetn of their type, starting from the first: #pseudo-nth-p1 span:nth-of-type(2n-1) 
+PASS Document.querySelector: :nth-of-type selector, matching every second elemetn of their type, starting from the first: #pseudo-nth-p1 span:nth-of-type(2n-1) 
+PASS Document.querySelectorAll: :nth-last-of-type selector, matching the thrid last em element: #pseudo-nth-p1 em:nth-last-of-type(3) 
+PASS Document.querySelector: :nth-last-of-type selector, matching the thrid last em element: #pseudo-nth-p1 em:nth-last-of-type(3) 
+PASS Document.querySelectorAll: :nth-last-of-type selector, matching every second last element of their type: #pseudo-nth-p1 :nth-last-of-type(2n) 
+PASS Document.querySelector: :nth-last-of-type selector, matching every second last element of their type: #pseudo-nth-p1 :nth-last-of-type(2n) 
+PASS Document.querySelectorAll: :nth-last-of-type selector, matching every second last element of their type, starting from the last: #pseudo-nth-p1 span:nth-last-of-type(2n-1) 
+PASS Document.querySelector: :nth-last-of-type selector, matching every second last element of their type, starting from the last: #pseudo-nth-p1 span:nth-last-of-type(2n-1) 
+PASS Document.querySelectorAll: :first-of-type selector, matching the first em element: #pseudo-nth-p1 em:first-of-type 
+PASS Document.querySelector: :first-of-type selector, matching the first em element: #pseudo-nth-p1 em:first-of-type 
+PASS Document.querySelectorAll: :first-of-type selector, matching the first of every type of element: #pseudo-nth-p1 :first-of-type 
+PASS Document.querySelector: :first-of-type selector, matching the first of every type of element: #pseudo-nth-p1 :first-of-type 
+PASS Document.querySelectorAll: :first-of-type selector, matching the first td element in each table row: #pseudo-nth-table1 tr :first-of-type 
+PASS Document.querySelector: :first-of-type selector, matching the first td element in each table row: #pseudo-nth-table1 tr :first-of-type 
+PASS Document.querySelectorAll: :last-of-type selector, matching the last em elemnet: #pseudo-nth-p1 em:last-of-type 
+PASS Document.querySelector: :last-of-type selector, matching the last em elemnet: #pseudo-nth-p1 em:last-of-type 
+PASS Document.querySelectorAll: :last-of-type selector, matching the last of every type of element: #pseudo-nth-p1 :last-of-type 
+PASS Document.querySelector: :last-of-type selector, matching the last of every type of element: #pseudo-nth-p1 :last-of-type 
+PASS Document.querySelectorAll: :last-of-type selector, matching the last td element in each table row: #pseudo-nth-table1 tr :last-of-type 
+PASS Document.querySelector: :last-of-type selector, matching the last td element in each table row: #pseudo-nth-table1 tr :last-of-type 
+PASS Document.querySelectorAll: :first-child pseudo-class selector, matching first child div element: #pseudo-first-child div:first-child 
+PASS Document.querySelector: :first-child pseudo-class selector, matching first child div element: #pseudo-first-child div:first-child 
+PASS Document.querySelectorAll: :first-child pseudo-class selector, doesn't match non-first-child elements: .pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child 
+PASS Document.querySelector: :first-child pseudo-class selector, doesn't match non-first-child elements: .pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child 
+PASS Document.querySelectorAll: :first-child pseudo-class selector, matching first-child of multiple elements: #pseudo-first-child span:first-child 
+PASS Document.querySelector: :first-child pseudo-class selector, matching first-child of multiple elements: #pseudo-first-child span:first-child 
+PASS Document.querySelectorAll: :last-child pseudo-class selector, matching last child div element: #pseudo-last-child div:last-child 
+PASS Document.querySelector: :last-child pseudo-class selector, matching last child div element: #pseudo-last-child div:last-child 
+PASS Document.querySelectorAll: :last-child pseudo-class selector, doesn't match non-last-child elements: .pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child 
+PASS Document.querySelector: :last-child pseudo-class selector, doesn't match non-last-child elements: .pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child 
+PASS Document.querySelectorAll: :last-child pseudo-class selector, matching first-child of multiple elements: #pseudo-last-child span:last-child 
+PASS Document.querySelector: :last-child pseudo-class selector, matching first-child of multiple elements: #pseudo-last-child span:last-child 
+PASS Document.querySelectorAll: :pseudo-only-child pseudo-class selector, matching all only-child elements: #pseudo-only :only-child 
+PASS Document.querySelector: :pseudo-only-child pseudo-class selector, matching all only-child elements: #pseudo-only :only-child 
+PASS Document.querySelectorAll: :pseudo-only-child pseudo-class selector, matching only-child em elements: #pseudo-only em:only-child 
+PASS Document.querySelector: :pseudo-only-child pseudo-class selector, matching only-child em elements: #pseudo-only em:only-child 
+PASS Document.querySelectorAll: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type: #pseudo-only :only-of-type 
+PASS Document.querySelector: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type: #pseudo-only :only-of-type 
+PASS Document.querySelectorAll: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type: #pseudo-only em:only-of-type 
+PASS Document.querySelector: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type: #pseudo-only em:only-of-type 
+PASS Document.querySelectorAll: :empty pseudo-class selector, matching empty p elements: #pseudo-empty p:empty 
+PASS Document.querySelector: :empty pseudo-class selector, matching empty p elements: #pseudo-empty p:empty 
+PASS Document.querySelectorAll: :empty pseudo-class selector, matching all empty elements: #pseudo-empty :empty 
+PASS Document.querySelector: :empty pseudo-class selector, matching all empty elements: #pseudo-empty :empty 
+PASS Document.querySelectorAll: :link and :visited pseudo-class selectors, matching a and area elements with href attributes: #pseudo-link :link, #pseudo-link :visited 
+PASS Document.querySelector: :link and :visited pseudo-class selectors, matching a and area elements with href attributes: #pseudo-link :link, #pseudo-link :visited 
+PASS Document.querySelectorAll: :link and :visited pseudo-class selectors, matching link elements with href attributes: #head :link, #head :visited 
+PASS Document.querySelector: :link and :visited pseudo-class selectors, matching link elements with href attributes: #head :link, #head :visited 
+PASS Document.querySelectorAll: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target 
+PASS Document.querySelector: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target 
+PASS Document.querySelectorAll: :lang pseudo-class selector, matching inherited language: #pseudo-lang-div1:lang(en) 
+PASS Document.querySelector: :lang pseudo-class selector, matching inherited language: #pseudo-lang-div1:lang(en) 
+PASS Document.querySelectorAll: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) 
+PASS Document.querySelector: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) 
+PASS Document.querySelectorAll: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) 
+PASS Document.querySelector: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) 
+PASS Document.querySelectorAll: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) 
+PASS Document.querySelector: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) 
+PASS Document.querySelectorAll: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled 
+PASS Document.querySelector: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled 
+PASS Document.querySelectorAll: :enabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled 
+PASS Document.querySelector: :enabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled 
+PASS Document.querySelectorAll: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked 
+PASS Document.querySelector: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked 
+PASS Document.querySelectorAll: :not pseudo-class selector, matching : #not&gt;:not(div) 
+PASS Document.querySelector: :not pseudo-class selector, matching : #not&gt;:not(div) 
+PASS Document.querySelectorAll: :not pseudo-class selector, matching : #not * :not(:first-child) 
+PASS Document.querySelector: :not pseudo-class selector, matching : #not * :not(:first-child) 
+PASS Document.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*) 
+PASS Document.querySelector: :not pseudo-class selector, matching nothing: :not(*) 
+PASS Document.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*|*) 
+PASS Document.querySelector: :not pseudo-class selector, matching nothing: :not(*|*) 
+PASS Document.querySelectorAll: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line 
+PASS Document.querySelector: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line 
+PASS Document.querySelectorAll: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line 
+PASS Document.querySelector: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line 
+PASS Document.querySelectorAll: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter 
+PASS Document.querySelector: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter 
+PASS Document.querySelectorAll: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter 
+PASS Document.querySelector: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter 
+PASS Document.querySelectorAll: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before 
+PASS Document.querySelector: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before 
+PASS Document.querySelectorAll: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before 
+PASS Document.querySelector: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before 
+PASS Document.querySelectorAll: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after 
+PASS Document.querySelector: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after 
+PASS Document.querySelectorAll: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after 
+PASS Document.querySelector: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after 
+PASS Document.querySelectorAll: Class selector, matching element with specified class: .class-p 
+PASS Document.querySelector: Class selector, matching element with specified class: .class-p 
+PASS Document.querySelectorAll: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana 
+PASS Document.querySelector: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana 
+PASS Document.querySelectorAll: Class Selector, chained, with type selector: div.apple.banana.orange 
+PASS Document.querySelector: Class Selector, chained, with type selector: div.apple.banana.orange 
+PASS Document.querySelectorAll: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
+PASS Document.querySelector: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
+PASS Document.querySelectorAll: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
+PASS Document.querySelector: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
+PASS Document.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
+PASS Document.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
+PASS Document.querySelectorAll: Class selector, matching element with class with escaped character: .foo\:bar 
+PASS Document.querySelector: Class selector, matching element with class with escaped character: .foo\:bar 
+PASS Document.querySelectorAll: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar 
+PASS Document.querySelector: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar 
+PASS Document.querySelectorAll: ID selector, matching element with specified id: #id #id-div1 
+PASS Document.querySelector: ID selector, matching element with specified id: #id #id-div1 
+PASS Document.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div1 
+PASS Document.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div1 
+PASS Document.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div2 
+PASS Document.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div2 
+PASS Document.querySelectorAll: ID Selector, chained, with type selector: div#id-div1, div#id-div2 
+PASS Document.querySelector: ID Selector, chained, with type selector: div#id-div1, div#id-div2 
+PASS Document.querySelectorAll: ID selector, not matching non-existent descendant: #id #none 
+PASS Document.querySelector: ID selector, not matching non-existent descendant: #id #none 
+PASS Document.querySelectorAll: ID selector, not matching non-existent ancestor: #none #id-div1 
+PASS Document.querySelector: ID selector, not matching non-existent ancestor: #none #id-div1 
+PASS Document.querySelectorAll: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
+PASS Document.querySelector: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
+PASS Document.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
+PASS Document.querySelector: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
+PASS Document.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北 
+PASS Document.querySelector: ID selector, matching id value using non-ASCII characters: #台北 
+PASS Document.querySelectorAll: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
+PASS Document.querySelector: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
+PASS Document.querySelectorAll: ID selector, matching element with id with escaped character: #\#foo\:bar 
+PASS Document.querySelector: ID selector, matching element with id with escaped character: #\#foo\:bar 
+PASS Document.querySelectorAll: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar 
+PASS Document.querySelector: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar 
+PASS Document.querySelectorAll: Namespace selector, matching element with any namespace: #any-namespace *|div 
+PASS Document.querySelector: Namespace selector, matching element with any namespace: #any-namespace *|div 
+FAIL Document.querySelectorAll: Namespace selector, matching div elements in no namespace only: #no-namespace |div assert_equals: The method should return the expected number of matches. expected 1 but got 4
+FAIL Document.querySelector: Namespace selector, matching div elements in no namespace only: #no-namespace |div assert_equals: The method should return the first match. expected &quot;no-namespace-div3&quot; but got &quot;no-namespace-div1&quot;
+FAIL Document.querySelectorAll: Namespace selector, matching any elements in no namespace only: #no-namespace |* assert_equals: The method should return the expected number of matches. expected 1 but got 4
+FAIL Document.querySelector: Namespace selector, matching any elements in no namespace only: #no-namespace |* assert_equals: The method should return the first match. expected &quot;no-namespace-div3&quot; but got &quot;no-namespace-div1&quot;
+PASS Document.querySelectorAll: Descendant combinator, matching element that is a descendant of an element with id: #descendant div 
+PASS Document.querySelector: Descendant combinator, matching element that is a descendant of an element with id: #descendant div 
+PASS Document.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: body #descendant-div1 
+PASS Document.querySelector: Descendant combinator, matching element with id that is a descendant of an element: body #descendant-div1 
+PASS Document.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 
+PASS Document.querySelector: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 
+PASS Document.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 
+PASS Document.querySelector: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 
+PASS Document.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 
+PASS Document.querySelector: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 
+PASS Document.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 
+PASS Document.querySelector: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 
+PASS Document.querySelectorAll: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 
+PASS Document.querySelector: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 
+PASS Document.querySelectorAll: Descendant combinator, whitespace characters: #descendant        
+#descendant-div2 
+PASS Document.querySelector: Descendant combinator, whitespace characters: #descendant        
+#descendant-div2 
+PASS Document.querySelectorAll: Child combinator, matching element that is a child of an element with id: #child&gt;div 
+PASS Document.querySelector: Child combinator, matching element that is a child of an element with id: #child&gt;div 
+PASS Document.querySelectorAll: Child combinator, matching element with id that is a child of an element: div&gt;#child-div1 
+PASS Document.querySelector: Child combinator, matching element with id that is a child of an element: div&gt;#child-div1 
+PASS Document.querySelectorAll: Child combinator, matching element with id that is a child of an element with id: #child&gt;#child-div1 
+PASS Document.querySelector: Child combinator, matching element with id that is a child of an element with id: #child&gt;#child-div1 
+PASS Document.querySelectorAll: Child combinator, matching element with id that is a child of an element with class: #child-div1&gt;.child-div2 
+PASS Document.querySelector: Child combinator, matching element with id that is a child of an element with class: #child-div1&gt;.child-div2 
+PASS Document.querySelectorAll: Child combinator, matching element with class that is a child of an element with class: .child-div1&gt;.child-div2 
+PASS Document.querySelector: Child combinator, matching element with class that is a child of an element with class: .child-div1&gt;.child-div2 
+PASS Document.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with id: #child&gt;#child-div3 
+PASS Document.querySelector: Child combinator, not matching element with id that is not a child of an element with id: #child&gt;#child-div3 
+PASS Document.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with class: #child-div1&gt;.child-div3 
+PASS Document.querySelector: Child combinator, not matching element with id that is not a child of an element with class: #child-div1&gt;.child-div3 
+PASS Document.querySelectorAll: Child combinator, not matching element with class that is not a child of an element with class: .child-div1&gt;.child-div3 
+PASS Document.querySelector: Child combinator, not matching element with class that is not a child of an element with class: .child-div1&gt;.child-div3 
+PASS Document.querySelectorAll: Child combinator, surrounded by whitespace: #child-div1        
+&gt;        
+#child-div2 
+PASS Document.querySelector: Child combinator, surrounded by whitespace: #child-div1        
+&gt;        
+#child-div2 
+PASS Document.querySelectorAll: Child combinator, whitespace after: #child-div1&gt;        
+#child-div2 
+PASS Document.querySelector: Child combinator, whitespace after: #child-div1&gt;        
+#child-div2 
+PASS Document.querySelectorAll: Child combinator, whitespace before: #child-div1        
+&gt;#child-div2 
+PASS Document.querySelector: Child combinator, whitespace before: #child-div1        
+&gt;#child-div2 
+PASS Document.querySelectorAll: Child combinator, no whitespace: #child-div1&gt;#child-div2 
+PASS Document.querySelector: Child combinator, no whitespace: #child-div1&gt;#child-div2 
+PASS Document.querySelectorAll: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div 
+PASS Document.querySelector: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div 
+PASS Document.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 
+PASS Document.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 
+PASS Document.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 
+PASS Document.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 
+PASS Document.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 
+PASS Document.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 
+PASS Document.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 
+PASS Document.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 
+PASS Document.querySelectorAll: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p 
+PASS Document.querySelector: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p 
+PASS Document.querySelectorAll: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 
+PASS Document.querySelector: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 
+PASS Document.querySelectorAll: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2        
++        
+#adjacent-p3 
+PASS Document.querySelector: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2        
++        
+#adjacent-p3 
+PASS Document.querySelectorAll: Adjacent sibling combinator, whitespace after: #adjacent-p2+        
+#adjacent-p3 
+PASS Document.querySelector: Adjacent sibling combinator, whitespace after: #adjacent-p2+        
+#adjacent-p3 
+PASS Document.querySelectorAll: Adjacent sibling combinator, whitespace before: #adjacent-p2        
++#adjacent-p3 
+PASS Document.querySelector: Adjacent sibling combinator, whitespace before: #adjacent-p2        
++#adjacent-p3 
+PASS Document.querySelectorAll: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 
+PASS Document.querySelector: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 
+PASS Document.querySelectorAll: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div 
+PASS Document.querySelector: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div 
+PASS Document.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 
+PASS Document.querySelector: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 
+PASS Document.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 
+PASS Document.querySelector: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 
+PASS Document.querySelectorAll: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div 
+PASS Document.querySelector: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div 
+PASS Document.querySelectorAll: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p 
+PASS Document.querySelector: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p 
+PASS Document.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling&gt;p~div 
+PASS Document.querySelector: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling&gt;p~div 
+PASS Document.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 
+PASS Document.querySelector: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 
+PASS Document.querySelectorAll: General sibling combinator, surrounded by whitespace: #sibling-p2        
+~        
+#sibling-p3 
+PASS Document.querySelector: General sibling combinator, surrounded by whitespace: #sibling-p2        
+~        
+#sibling-p3 
+PASS Document.querySelectorAll: General sibling combinator, whitespace after: #sibling-p2~        
+#sibling-p3 
+PASS Document.querySelector: General sibling combinator, whitespace after: #sibling-p2~        
+#sibling-p3 
+PASS Document.querySelectorAll: General sibling combinator, whitespace before: #sibling-p2        
+~#sibling-p3 
+PASS Document.querySelector: General sibling combinator, whitespace before: #sibling-p2        
+~#sibling-p3 
+PASS Document.querySelectorAll: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 
+PASS Document.querySelector: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 
+PASS Document.querySelectorAll: Syntax, group of selectors separator, surrounded by whitespace: #group em        

+,        

+#group strong 
+PASS Document.querySelector: Syntax, group of selectors separator, surrounded by whitespace: #group em        

+,        

+#group strong 
+PASS Document.querySelectorAll: Syntax, group of selectors separator, whitespace after: #group em,        
+#group strong 
+PASS Document.querySelector: Syntax, group of selectors separator, whitespace after: #group em,        
+#group strong 
+PASS Document.querySelectorAll: Syntax, group of selectors separator, whitespace before: #group em        
+,#group strong 
+PASS Document.querySelector: Syntax, group of selectors separator, whitespace before: #group em        
+,#group strong 
+PASS Document.querySelectorAll: Syntax, group of selectors separator, no whitespace: #group em,#group strong 
+PASS Document.querySelector: Syntax, group of selectors separator, no whitespace: #group em,#group strong 
+PASS Detached Element.querySelectorAll: Type selector, matching html element: html 
+PASS Detached Element.querySelector: Type selector, matching html element: html 
+PASS Detached Element.querySelectorAll: Type selector, matching body element: body 
+PASS Detached Element.querySelector: Type selector, matching body element: body 
+PASS Detached Element.querySelectorAll: Universal selector, matching all children of element with specified ID: #universal&gt;* 
+PASS Detached Element.querySelector: Universal selector, matching all children of element with specified ID: #universal&gt;* 
+PASS Detached Element.querySelectorAll: Universal selector, matching all grandchildren of element with specified ID: #universal&gt;*&gt;* 
+PASS Detached Element.querySelector: Universal selector, matching all grandchildren of element with specified ID: #universal&gt;*&gt;* 
+PASS Detached Element.querySelectorAll: Universal selector, matching all children of empty element with specified ID: #empty&gt;* 
+PASS Detached Element.querySelector: Universal selector, matching all children of empty element with specified ID: #empty&gt;* 
+PASS Detached Element.querySelectorAll: Universal selector, matching all descendants of element with specified ID: #universal * 
+PASS Detached Element.querySelector: Universal selector, matching all descendants of element with specified ID: #universal * 
+PASS Detached Element.querySelectorAll: Attribute presence selector, matching align attribute with value: .attr-presence-div1[align] 
+PASS Detached Element.querySelector: Attribute presence selector, matching align attribute with value: .attr-presence-div1[align] 
+PASS Detached Element.querySelectorAll: Attribute presence selector, matching align attribute with empty value: .attr-presence-div2[align] 
+PASS Detached Element.querySelector: Attribute presence selector, matching align attribute with empty value: .attr-presence-div2[align] 
+PASS Detached Element.querySelectorAll: Attribute presence selector, matching title attribute, case insensitivity: #attr-presence [TiTlE] 
+PASS Detached Element.querySelector: Attribute presence selector, matching title attribute, case insensitivity: #attr-presence [TiTlE] 
+PASS Detached Element.querySelectorAll: Attribute presence selector, matching custom data-* attribute: [data-attr-presence] 
+PASS Detached Element.querySelector: Attribute presence selector, matching custom data-* attribute: [data-attr-presence] 
+PASS Detached Element.querySelectorAll: Attribute presence selector, not matching attribute with similar name: .attr-presence-div3[align], .attr-presence-div4[align] 
+PASS Detached Element.querySelector: Attribute presence selector, not matching attribute with similar name: .attr-presence-div3[align], .attr-presence-div4[align] 
+PASS Detached Element.querySelectorAll: Attribute presence selector, matching attribute with non-ASCII characters: ul[data-中文] 
+PASS Detached Element.querySelector: Attribute presence selector, matching attribute with non-ASCII characters: ul[data-中文] 
+PASS Detached Element.querySelectorAll: Attribute presence selector, not matching default option without selected attribute: #attr-presence-select1 option[selected] 
+PASS Detached Element.querySelector: Attribute presence selector, not matching default option without selected attribute: #attr-presence-select1 option[selected] 
+PASS Detached Element.querySelectorAll: Attribute presence selector, matching option with selected attribute: #attr-presence-select2 option[selected] 
+PASS Detached Element.querySelector: Attribute presence selector, matching option with selected attribute: #attr-presence-select2 option[selected] 
+PASS Detached Element.querySelectorAll: Attribute presence selector, matching multiple options with selected attributes: #attr-presence-select3 option[selected] 
+PASS Detached Element.querySelector: Attribute presence selector, matching multiple options with selected attributes: #attr-presence-select3 option[selected] 
+PASS Detached Element.querySelectorAll: Attribute value selector, matching align attribute with value: #attr-value [align=&quot;center&quot;] 
+PASS Detached Element.querySelector: Attribute value selector, matching align attribute with value: #attr-value [align=&quot;center&quot;] 
+PASS Detached Element.querySelectorAll: Attribute value selector, matching align attribute with empty value: #attr-value [align=&quot;&quot;] 
+PASS Detached Element.querySelector: Attribute value selector, matching align attribute with empty value: #attr-value [align=&quot;&quot;] 
+PASS Detached Element.querySelectorAll: Attribute value selector, not matching align attribute with partial value: #attr-value [align=&quot;c&quot;] 
+PASS Detached Element.querySelector: Attribute value selector, not matching align attribute with partial value: #attr-value [align=&quot;c&quot;] 
+PASS Detached Element.querySelectorAll: Attribute value selector, not matching align attribute with incorrect value: #attr-value [align=&quot;centera&quot;] 
+PASS Detached Element.querySelector: Attribute value selector, not matching align attribute with incorrect value: #attr-value [align=&quot;centera&quot;] 
+PASS Detached Element.querySelectorAll: Attribute value selector, matching custom data-* attribute with unicode escaped value: [data-attr-value=&quot;\e9&quot;] 
+PASS Detached Element.querySelector: Attribute value selector, matching custom data-* attribute with unicode escaped value: [data-attr-value=&quot;\e9&quot;] 
+PASS Detached Element.querySelectorAll: Attribute value selector, matching custom data-* attribute with escaped character: [data-attr-value_foo=&quot;\e9&quot;] 
+PASS Detached Element.querySelector: Attribute value selector, matching custom data-* attribute with escaped character: [data-attr-value_foo=&quot;\e9&quot;] 
+PASS Detached Element.querySelectorAll: Attribute value selector with single-quoted value, matching multiple inputs with type attributes: #attr-value input[type='hidden'],#attr-value input[type='radio'] 
+PASS Detached Element.querySelector: Attribute value selector with single-quoted value, matching multiple inputs with type attributes: #attr-value input[type='hidden'],#attr-value input[type='radio'] 
+PASS Detached Element.querySelectorAll: Attribute value selector with double-quoted value, matching multiple inputs with type attributes: #attr-value input[type=&quot;hidden&quot;],#attr-value input[type='radio'] 
+PASS Detached Element.querySelector: Attribute value selector with double-quoted value, matching multiple inputs with type attributes: #attr-value input[type=&quot;hidden&quot;],#attr-value input[type='radio'] 
+PASS Detached Element.querySelectorAll: Attribute value selector with unquoted value, matching multiple inputs with type attributes: #attr-value input[type=hidden],#attr-value input[type=radio] 
+PASS Detached Element.querySelector: Attribute value selector with unquoted value, matching multiple inputs with type attributes: #attr-value input[type=hidden],#attr-value input[type=radio] 
+PASS Detached Element.querySelectorAll: Attribute value selector, matching attribute with value using non-ASCII characters: [data-attr-value=中文] 
+PASS Detached Element.querySelector: Attribute value selector, matching attribute with value using non-ASCII characters: [data-attr-value=中文] 
+PASS Detached Element.querySelectorAll: Attribute whitespace-separated list selector, matching class attribute with value: #attr-whitespace [class~=&quot;div1&quot;] 
+PASS Detached Element.querySelector: Attribute whitespace-separated list selector, matching class attribute with value: #attr-whitespace [class~=&quot;div1&quot;] 
+PASS Detached Element.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=&quot;&quot;] 
+PASS Detached Element.querySelector: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=&quot;&quot;] 
+PASS Detached Element.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with partial value: [data-attr-whitespace~=&quot;div&quot;] 
+PASS Detached Element.querySelector: Attribute whitespace-separated list selector, not matching class attribute with partial value: [data-attr-whitespace~=&quot;div&quot;] 
+PASS Detached Element.querySelectorAll: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value: [data-attr-whitespace~=&quot;\0000e9&quot;] 
+PASS Detached Element.querySelector: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value: [data-attr-whitespace~=&quot;\0000e9&quot;] 
+PASS Detached Element.querySelectorAll: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character: [data-attr-whitespace_foo~=&quot;\e9&quot;] 
+PASS Detached Element.querySelector: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character: [data-attr-whitespace_foo~=&quot;\e9&quot;] 
+PASS Detached Element.querySelectorAll: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~='bookmark'],  #attr-whitespace a[rel~='nofollow'] 
+PASS Detached Element.querySelector: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~='bookmark'],  #attr-whitespace a[rel~='nofollow'] 
+PASS Detached Element.querySelectorAll: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=&quot;bookmark&quot;],#attr-whitespace a[rel~='nofollow'] 
+PASS Detached Element.querySelector: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=&quot;bookmark&quot;],#attr-whitespace a[rel~='nofollow'] 
+PASS Detached Element.querySelectorAll: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=bookmark],    #attr-whitespace a[rel~=nofollow] 
+PASS Detached Element.querySelector: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=bookmark],    #attr-whitespace a[rel~=nofollow] 
+PASS Detached Element.querySelectorAll: Attribute whitespace-separated list selector with double-quoted value, not matching value with space: #attr-whitespace a[rel~=&quot;book mark&quot;] 
+PASS Detached Element.querySelector: Attribute whitespace-separated list selector with double-quoted value, not matching value with space: #attr-whitespace a[rel~=&quot;book mark&quot;] 
+PASS Detached Element.querySelectorAll: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters: #attr-whitespace [title~=中文] 
+PASS Detached Element.querySelector: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters: #attr-whitespace [title~=中文] 
+PASS Detached Element.querySelectorAll: Attribute hyphen-separated list selector, not matching unspecified lang attribute: #attr-hyphen-div1[lang|=&quot;en&quot;] 
+PASS Detached Element.querySelector: Attribute hyphen-separated list selector, not matching unspecified lang attribute: #attr-hyphen-div1[lang|=&quot;en&quot;] 
+PASS Detached Element.querySelectorAll: Attribute hyphen-separated list selector, matching lang attribute with exact value: #attr-hyphen-div2[lang|=&quot;fr&quot;] 
+PASS Detached Element.querySelector: Attribute hyphen-separated list selector, matching lang attribute with exact value: #attr-hyphen-div2[lang|=&quot;fr&quot;] 
+PASS Detached Element.querySelectorAll: Attribute hyphen-separated list selector, matching lang attribute with partial value: #attr-hyphen-div3[lang|=&quot;en&quot;] 
+PASS Detached Element.querySelector: Attribute hyphen-separated list selector, matching lang attribute with partial value: #attr-hyphen-div3[lang|=&quot;en&quot;] 
+PASS Detached Element.querySelectorAll: Attribute hyphen-separated list selector, not matching incorrect value: #attr-hyphen-div4[lang|=&quot;es-AR&quot;] 
+PASS Detached Element.querySelector: Attribute hyphen-separated list selector, not matching incorrect value: #attr-hyphen-div4[lang|=&quot;es-AR&quot;] 
+PASS Detached Element.querySelectorAll: Attribute begins with selector, matching href attributes beginning with specified substring: #attr-begins a[href^=&quot;http://www&quot;] 
+PASS Detached Element.querySelector: Attribute begins with selector, matching href attributes beginning with specified substring: #attr-begins a[href^=&quot;http://www&quot;] 
+PASS Detached Element.querySelectorAll: Attribute begins with selector, matching lang attributes beginning with specified substring, : #attr-begins [lang^=&quot;en-&quot;] 
+PASS Detached Element.querySelector: Attribute begins with selector, matching lang attributes beginning with specified substring, : #attr-begins [lang^=&quot;en-&quot;] 
+PASS Detached Element.querySelectorAll: Attribute begins with selector, not matching class attribute not beginning with specified substring: #attr-begins [class^=apple] 
+PASS Detached Element.querySelector: Attribute begins with selector, not matching class attribute not beginning with specified substring: #attr-begins [class^=apple] 
+PASS Detached Element.querySelectorAll: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=' apple'] 
+PASS Detached Element.querySelector: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=' apple'] 
+PASS Detached Element.querySelectorAll: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=&quot; apple&quot;] 
+PASS Detached Element.querySelector: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=&quot; apple&quot;] 
+PASS Detached Element.querySelectorAll: Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring: #attr-begins [class^= apple] 
+PASS Detached Element.querySelector: Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring: #attr-begins [class^= apple] 
+PASS Detached Element.querySelectorAll: Attribute ends with selector, matching href attributes ending with specified substring: #attr-ends a[href$=&quot;.org&quot;] 
+PASS Detached Element.querySelector: Attribute ends with selector, matching href attributes ending with specified substring: #attr-ends a[href$=&quot;.org&quot;] 
+PASS Detached Element.querySelectorAll: Attribute ends with selector, matching lang attributes ending with specified substring, : #attr-ends [lang$=&quot;-CH&quot;] 
+PASS Detached Element.querySelector: Attribute ends with selector, matching lang attributes ending with specified substring, : #attr-ends [lang$=&quot;-CH&quot;] 
+PASS Detached Element.querySelectorAll: Attribute ends with selector, not matching class attribute not ending with specified substring: #attr-ends [class$=apple] 
+PASS Detached Element.querySelector: Attribute ends with selector, not matching class attribute not ending with specified substring: #attr-ends [class$=apple] 
+PASS Detached Element.querySelectorAll: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring: #attr-ends [class$='apple '] 
+PASS Detached Element.querySelector: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring: #attr-ends [class$='apple '] 
+PASS Detached Element.querySelectorAll: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring: #attr-ends [class$=&quot;apple &quot;] 
+PASS Detached Element.querySelector: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring: #attr-ends [class$=&quot;apple &quot;] 
+PASS Detached Element.querySelectorAll: Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring: #attr-ends [class$=apple ] 
+PASS Detached Element.querySelector: Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring: #attr-ends [class$=apple ] 
+PASS Detached Element.querySelectorAll: Attribute contains selector, matching href attributes beginning with specified substring: #attr-contains a[href*=&quot;http://www&quot;] 
+PASS Detached Element.querySelector: Attribute contains selector, matching href attributes beginning with specified substring: #attr-contains a[href*=&quot;http://www&quot;] 
+PASS Detached Element.querySelectorAll: Attribute contains selector, matching href attributes ending with specified substring: #attr-contains a[href*=&quot;.org&quot;] 
+PASS Detached Element.querySelector: Attribute contains selector, matching href attributes ending with specified substring: #attr-contains a[href*=&quot;.org&quot;] 
+PASS Detached Element.querySelectorAll: Attribute contains selector, matching href attributes containing specified substring: #attr-contains a[href*=&quot;.example.&quot;] 
+PASS Detached Element.querySelector: Attribute contains selector, matching href attributes containing specified substring: #attr-contains a[href*=&quot;.example.&quot;] 
+PASS Detached Element.querySelectorAll: Attribute contains selector, matching lang attributes beginning with specified substring, : #attr-contains [lang*=&quot;en-&quot;] 
+PASS Detached Element.querySelector: Attribute contains selector, matching lang attributes beginning with specified substring, : #attr-contains [lang*=&quot;en-&quot;] 
+PASS Detached Element.querySelectorAll: Attribute contains selector, matching lang attributes ending with specified substring, : #attr-contains [lang*=&quot;-CH&quot;] 
+PASS Detached Element.querySelector: Attribute contains selector, matching lang attributes ending with specified substring, : #attr-contains [lang*=&quot;-CH&quot;] 
+PASS Detached Element.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=' apple'] 
+PASS Detached Element.querySelector: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=' apple'] 
+PASS Detached Element.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring: #attr-contains [class*='orange '] 
+PASS Detached Element.querySelector: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring: #attr-contains [class*='orange '] 
+PASS Detached Element.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute containing specified substring: #attr-contains [class*='ple banana ora'] 
+PASS Detached Element.querySelector: Attribute contains selector with single-quoted value, matching class attribute containing specified substring: #attr-contains [class*='ple banana ora'] 
+PASS Detached Element.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=&quot; apple&quot;] 
+PASS Detached Element.querySelector: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=&quot; apple&quot;] 
+PASS Detached Element.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring: #attr-contains [class*=&quot;orange &quot;] 
+PASS Detached Element.querySelector: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring: #attr-contains [class*=&quot;orange &quot;] 
+PASS Detached Element.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute containing specified substring: #attr-contains [class*=&quot;ple banana ora&quot;] 
+PASS Detached Element.querySelector: Attribute contains selector with double-quoted value, matching class attribute containing specified substring: #attr-contains [class*=&quot;ple banana ora&quot;] 
+PASS Detached Element.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring: #attr-contains [class*= apple] 
+PASS Detached Element.querySelector: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring: #attr-contains [class*= apple] 
+PASS Detached Element.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute ending with specified substring: #attr-contains [class*=orange ] 
+PASS Detached Element.querySelector: Attribute contains selector with unquoted value, matching class attribute ending with specified substring: #attr-contains [class*=orange ] 
+PASS Detached Element.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute containing specified substring: #attr-contains [class*= banana ] 
+PASS Detached Element.querySelector: Attribute contains selector with unquoted value, matching class attribute containing specified substring: #attr-contains [class*= banana ] 
+PASS Detached Element.querySelectorAll: :root pseudo-class selector, not matching document root element: :root 
+PASS Detached Element.querySelector: :root pseudo-class selector, not matching document root element: :root 
+PASS Detached Element.querySelectorAll: :nth-child selector, matching the third child element: #pseudo-nth-table1 :nth-child(3) 
+PASS Detached Element.querySelector: :nth-child selector, matching the third child element: #pseudo-nth-table1 :nth-child(3) 
+PASS Detached Element.querySelectorAll: :nth-child selector, matching every third child element: #pseudo-nth li:nth-child(3n) 
+PASS Detached Element.querySelector: :nth-child selector, matching every third child element: #pseudo-nth li:nth-child(3n) 
+PASS Detached Element.querySelectorAll: :nth-child selector, matching every second child element, starting from the fourth: #pseudo-nth li:nth-child(2n+4) 
+PASS Detached Element.querySelector: :nth-child selector, matching every second child element, starting from the fourth: #pseudo-nth li:nth-child(2n+4) 
+PASS Detached Element.querySelectorAll: :nth-child selector, matching every fourth child element, starting from the third: #pseudo-nth-p1 :nth-child(4n-1) 
+PASS Detached Element.querySelector: :nth-child selector, matching every fourth child element, starting from the third: #pseudo-nth-p1 :nth-child(4n-1) 
+PASS Detached Element.querySelectorAll: :nth-last-child selector, matching the third last child element: #pseudo-nth-table1 :nth-last-child(3) 
+PASS Detached Element.querySelector: :nth-last-child selector, matching the third last child element: #pseudo-nth-table1 :nth-last-child(3) 
+PASS Detached Element.querySelectorAll: :nth-last-child selector, matching every third child element from the end: #pseudo-nth li:nth-last-child(3n) 
+PASS Detached Element.querySelector: :nth-last-child selector, matching every third child element from the end: #pseudo-nth li:nth-last-child(3n) 
+PASS Detached Element.querySelectorAll: :nth-last-child selector, matching every second child element from the end, starting from the fourth last: #pseudo-nth li:nth-last-child(2n+4) 
+PASS Detached Element.querySelector: :nth-last-child selector, matching every second child element from the end, starting from the fourth last: #pseudo-nth li:nth-last-child(2n+4) 
+PASS Detached Element.querySelectorAll: :nth-last-child selector, matching every fourth element from the end, starting from the third last: #pseudo-nth-p1 :nth-last-child(4n-1) 
+PASS Detached Element.querySelector: :nth-last-child selector, matching every fourth element from the end, starting from the third last: #pseudo-nth-p1 :nth-last-child(4n-1) 
+PASS Detached Element.querySelectorAll: :nth-of-type selector, matching the third em element: #pseudo-nth-p1 em:nth-of-type(3) 
+PASS Detached Element.querySelector: :nth-of-type selector, matching the third em element: #pseudo-nth-p1 em:nth-of-type(3) 
+PASS Detached Element.querySelectorAll: :nth-of-type selector, matching every second element of their type: #pseudo-nth-p1 :nth-of-type(2n) 
+PASS Detached Element.querySelector: :nth-of-type selector, matching every second element of their type: #pseudo-nth-p1 :nth-of-type(2n) 
+PASS Detached Element.querySelectorAll: :nth-of-type selector, matching every second elemetn of their type, starting from the first: #pseudo-nth-p1 span:nth-of-type(2n-1) 
+PASS Detached Element.querySelector: :nth-of-type selector, matching every second elemetn of their type, starting from the first: #pseudo-nth-p1 span:nth-of-type(2n-1) 
+PASS Detached Element.querySelectorAll: :nth-last-of-type selector, matching the thrid last em element: #pseudo-nth-p1 em:nth-last-of-type(3) 
+PASS Detached Element.querySelector: :nth-last-of-type selector, matching the thrid last em element: #pseudo-nth-p1 em:nth-last-of-type(3) 
+PASS Detached Element.querySelectorAll: :nth-last-of-type selector, matching every second last element of their type: #pseudo-nth-p1 :nth-last-of-type(2n) 
+PASS Detached Element.querySelector: :nth-last-of-type selector, matching every second last element of their type: #pseudo-nth-p1 :nth-last-of-type(2n) 
+PASS Detached Element.querySelectorAll: :nth-last-of-type selector, matching every second last element of their type, starting from the last: #pseudo-nth-p1 span:nth-last-of-type(2n-1) 
+PASS Detached Element.querySelector: :nth-last-of-type selector, matching every second last element of their type, starting from the last: #pseudo-nth-p1 span:nth-last-of-type(2n-1) 
+PASS Detached Element.querySelectorAll: :first-of-type selector, matching the first em element: #pseudo-nth-p1 em:first-of-type 
+PASS Detached Element.querySelector: :first-of-type selector, matching the first em element: #pseudo-nth-p1 em:first-of-type 
+PASS Detached Element.querySelectorAll: :first-of-type selector, matching the first of every type of element: #pseudo-nth-p1 :first-of-type 
+PASS Detached Element.querySelector: :first-of-type selector, matching the first of every type of element: #pseudo-nth-p1 :first-of-type 
+PASS Detached Element.querySelectorAll: :first-of-type selector, matching the first td element in each table row: #pseudo-nth-table1 tr :first-of-type 
+PASS Detached Element.querySelector: :first-of-type selector, matching the first td element in each table row: #pseudo-nth-table1 tr :first-of-type 
+PASS Detached Element.querySelectorAll: :last-of-type selector, matching the last em elemnet: #pseudo-nth-p1 em:last-of-type 
+PASS Detached Element.querySelector: :last-of-type selector, matching the last em elemnet: #pseudo-nth-p1 em:last-of-type 
+PASS Detached Element.querySelectorAll: :last-of-type selector, matching the last of every type of element: #pseudo-nth-p1 :last-of-type 
+PASS Detached Element.querySelector: :last-of-type selector, matching the last of every type of element: #pseudo-nth-p1 :last-of-type 
+PASS Detached Element.querySelectorAll: :last-of-type selector, matching the last td element in each table row: #pseudo-nth-table1 tr :last-of-type 
+PASS Detached Element.querySelector: :last-of-type selector, matching the last td element in each table row: #pseudo-nth-table1 tr :last-of-type 
+PASS Detached Element.querySelectorAll: :first-child pseudo-class selector, matching first child div element: #pseudo-first-child div:first-child 
+PASS Detached Element.querySelector: :first-child pseudo-class selector, matching first child div element: #pseudo-first-child div:first-child 
+PASS Detached Element.querySelectorAll: :first-child pseudo-class selector, doesn't match non-first-child elements: .pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child 
+PASS Detached Element.querySelector: :first-child pseudo-class selector, doesn't match non-first-child elements: .pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child 
+PASS Detached Element.querySelectorAll: :first-child pseudo-class selector, matching first-child of multiple elements: #pseudo-first-child span:first-child 
+PASS Detached Element.querySelector: :first-child pseudo-class selector, matching first-child of multiple elements: #pseudo-first-child span:first-child 
+PASS Detached Element.querySelectorAll: :last-child pseudo-class selector, matching last child div element: #pseudo-last-child div:last-child 
+PASS Detached Element.querySelector: :last-child pseudo-class selector, matching last child div element: #pseudo-last-child div:last-child 
+PASS Detached Element.querySelectorAll: :last-child pseudo-class selector, doesn't match non-last-child elements: .pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child 
+PASS Detached Element.querySelector: :last-child pseudo-class selector, doesn't match non-last-child elements: .pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child 
+PASS Detached Element.querySelectorAll: :last-child pseudo-class selector, matching first-child of multiple elements: #pseudo-last-child span:last-child 
+PASS Detached Element.querySelector: :last-child pseudo-class selector, matching first-child of multiple elements: #pseudo-last-child span:last-child 
+PASS Detached Element.querySelectorAll: :pseudo-only-child pseudo-class selector, matching all only-child elements: #pseudo-only :only-child 
+PASS Detached Element.querySelector: :pseudo-only-child pseudo-class selector, matching all only-child elements: #pseudo-only :only-child 
+PASS Detached Element.querySelectorAll: :pseudo-only-child pseudo-class selector, matching only-child em elements: #pseudo-only em:only-child 
+PASS Detached Element.querySelector: :pseudo-only-child pseudo-class selector, matching only-child em elements: #pseudo-only em:only-child 
+PASS Detached Element.querySelectorAll: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type: #pseudo-only :only-of-type 
+PASS Detached Element.querySelector: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type: #pseudo-only :only-of-type 
+PASS Detached Element.querySelectorAll: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type: #pseudo-only em:only-of-type 
+PASS Detached Element.querySelector: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type: #pseudo-only em:only-of-type 
+PASS Detached Element.querySelectorAll: :empty pseudo-class selector, matching empty p elements: #pseudo-empty p:empty 
+PASS Detached Element.querySelector: :empty pseudo-class selector, matching empty p elements: #pseudo-empty p:empty 
+PASS Detached Element.querySelectorAll: :empty pseudo-class selector, matching all empty elements: #pseudo-empty :empty 
+PASS Detached Element.querySelector: :empty pseudo-class selector, matching all empty elements: #pseudo-empty :empty 
+PASS Detached Element.querySelectorAll: :link and :visited pseudo-class selectors, matching a and area elements with href attributes: #pseudo-link :link, #pseudo-link :visited 
+PASS Detached Element.querySelector: :link and :visited pseudo-class selectors, matching a and area elements with href attributes: #pseudo-link :link, #pseudo-link :visited 
+PASS Detached Element.querySelectorAll: :link and :visited pseudo-class selectors, not matching link elements with href attributes: #head :link, #head :visited 
+PASS Detached Element.querySelector: :link and :visited pseudo-class selectors, not matching link elements with href attributes: #head :link, #head :visited 
+PASS Detached Element.querySelectorAll: :link and :visited pseudo-class selectors, chained, mutually exclusive pseudo-classes match nothing: :link:visited 
+PASS Detached Element.querySelector: :link and :visited pseudo-class selectors, chained, mutually exclusive pseudo-classes match nothing: :link:visited 
+PASS Detached Element.querySelectorAll: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target 
+PASS Detached Element.querySelector: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target 
+PASS Detached Element.querySelectorAll: :lang pseudo-class selector, not matching element with no inherited language: #pseudo-lang-div1:lang(en) 
+PASS Detached Element.querySelector: :lang pseudo-class selector, not matching element with no inherited language: #pseudo-lang-div1:lang(en) 
+PASS Detached Element.querySelectorAll: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) 
+PASS Detached Element.querySelector: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) 
+PASS Detached Element.querySelectorAll: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) 
+PASS Detached Element.querySelector: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) 
+PASS Detached Element.querySelectorAll: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) 
+PASS Detached Element.querySelector: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) 
+PASS Detached Element.querySelectorAll: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled 
+PASS Detached Element.querySelector: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled 
+PASS Detached Element.querySelectorAll: :enabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled 
+PASS Detached Element.querySelector: :enabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled 
+PASS Detached Element.querySelectorAll: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked 
+PASS Detached Element.querySelector: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked 
+PASS Detached Element.querySelectorAll: :not pseudo-class selector, matching : #not&gt;:not(div) 
+PASS Detached Element.querySelector: :not pseudo-class selector, matching : #not&gt;:not(div) 
+PASS Detached Element.querySelectorAll: :not pseudo-class selector, matching : #not * :not(:first-child) 
+PASS Detached Element.querySelector: :not pseudo-class selector, matching : #not * :not(:first-child) 
+PASS Detached Element.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*) 
+PASS Detached Element.querySelector: :not pseudo-class selector, matching nothing: :not(*) 
+PASS Detached Element.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*|*) 
+PASS Detached Element.querySelector: :not pseudo-class selector, matching nothing: :not(*|*) 
+PASS Detached Element.querySelectorAll: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line 
+PASS Detached Element.querySelector: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line 
+PASS Detached Element.querySelectorAll: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line 
+PASS Detached Element.querySelector: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line 
+PASS Detached Element.querySelectorAll: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter 
+PASS Detached Element.querySelector: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter 
+PASS Detached Element.querySelectorAll: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter 
+PASS Detached Element.querySelector: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter 
+PASS Detached Element.querySelectorAll: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before 
+PASS Detached Element.querySelector: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before 
+PASS Detached Element.querySelectorAll: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before 
+PASS Detached Element.querySelector: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before 
+PASS Detached Element.querySelectorAll: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after 
+PASS Detached Element.querySelector: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after 
+PASS Detached Element.querySelectorAll: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after 
+PASS Detached Element.querySelector: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after 
+PASS Detached Element.querySelectorAll: Class selector, matching element with specified class: .class-p 
+PASS Detached Element.querySelector: Class selector, matching element with specified class: .class-p 
+PASS Detached Element.querySelectorAll: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana 
+PASS Detached Element.querySelector: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana 
+PASS Detached Element.querySelectorAll: Class Selector, chained, with type selector: div.apple.banana.orange 
+PASS Detached Element.querySelector: Class Selector, chained, with type selector: div.apple.banana.orange 
+PASS Detached Element.querySelectorAll: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
+PASS Detached Element.querySelector: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
+PASS Detached Element.querySelectorAll: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
+PASS Detached Element.querySelector: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
+PASS Detached Element.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
+PASS Detached Element.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
+PASS Detached Element.querySelectorAll: Class selector, matching element with class with escaped character: .foo\:bar 
+PASS Detached Element.querySelector: Class selector, matching element with class with escaped character: .foo\:bar 
+PASS Detached Element.querySelectorAll: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar 
+PASS Detached Element.querySelector: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar 
+PASS Detached Element.querySelectorAll: ID selector, matching element with specified id: #id #id-div1 
+PASS Detached Element.querySelector: ID selector, matching element with specified id: #id #id-div1 
+PASS Detached Element.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div1 
+PASS Detached Element.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div1 
+PASS Detached Element.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div2 
+PASS Detached Element.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div2 
+PASS Detached Element.querySelectorAll: ID Selector, chained, with type selector: div#id-div1, div#id-div2 
+PASS Detached Element.querySelector: ID Selector, chained, with type selector: div#id-div1, div#id-div2 
+PASS Detached Element.querySelectorAll: ID selector, not matching non-existent descendant: #id #none 
+PASS Detached Element.querySelector: ID selector, not matching non-existent descendant: #id #none 
+PASS Detached Element.querySelectorAll: ID selector, not matching non-existent ancestor: #none #id-div1 
+PASS Detached Element.querySelector: ID selector, not matching non-existent ancestor: #none #id-div1 
+PASS Detached Element.querySelectorAll: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
+PASS Detached Element.querySelector: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
+PASS Detached Element.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
+PASS Detached Element.querySelector: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
+PASS Detached Element.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北 
+PASS Detached Element.querySelector: ID selector, matching id value using non-ASCII characters: #台北 
+PASS Detached Element.querySelectorAll: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
+PASS Detached Element.querySelector: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
+PASS Detached Element.querySelectorAll: ID selector, matching element with id with escaped character: #\#foo\:bar 
+PASS Detached Element.querySelector: ID selector, matching element with id with escaped character: #\#foo\:bar 
+PASS Detached Element.querySelectorAll: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar 
+PASS Detached Element.querySelector: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar 
+PASS Detached Element.querySelectorAll: Namespace selector, matching element with any namespace: #any-namespace *|div 
+PASS Detached Element.querySelector: Namespace selector, matching element with any namespace: #any-namespace *|div 
+FAIL Detached Element.querySelectorAll: Namespace selector, matching div elements in no namespace only: #no-namespace |div assert_equals: The method should return the expected number of matches. expected 1 but got 4
+FAIL Detached Element.querySelector: Namespace selector, matching div elements in no namespace only: #no-namespace |div assert_equals: The method should return the first match. expected &quot;no-namespace-div3&quot; but got &quot;no-namespace-div1&quot;
+FAIL Detached Element.querySelectorAll: Namespace selector, matching any elements in no namespace only: #no-namespace |* assert_equals: The method should return the expected number of matches. expected 1 but got 4
+FAIL Detached Element.querySelector: Namespace selector, matching any elements in no namespace only: #no-namespace |* assert_equals: The method should return the first match. expected &quot;no-namespace-div3&quot; but got &quot;no-namespace-div1&quot;
+PASS Detached Element.querySelectorAll: Descendant combinator, matching element that is a descendant of an element with id: #descendant div 
+PASS Detached Element.querySelector: Descendant combinator, matching element that is a descendant of an element with id: #descendant div 
+PASS Detached Element.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 
+PASS Detached Element.querySelector: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 
+PASS Detached Element.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 
+PASS Detached Element.querySelector: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 
+PASS Detached Element.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 
+PASS Detached Element.querySelector: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 
+PASS Detached Element.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 
+PASS Detached Element.querySelector: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 
+PASS Detached Element.querySelectorAll: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 
+PASS Detached Element.querySelector: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 
+PASS Detached Element.querySelectorAll: Descendant combinator, whitespace characters: #descendant        
+#descendant-div2 
+PASS Detached Element.querySelector: Descendant combinator, whitespace characters: #descendant        
+#descendant-div2 
+PASS Detached Element.querySelectorAll: Child combinator, matching element that is a child of an element with id: #child&gt;div 
+PASS Detached Element.querySelector: Child combinator, matching element that is a child of an element with id: #child&gt;div 
+PASS Detached Element.querySelectorAll: Child combinator, matching element with id that is a child of an element: div&gt;#child-div1 
+PASS Detached Element.querySelector: Child combinator, matching element with id that is a child of an element: div&gt;#child-div1 
+PASS Detached Element.querySelectorAll: Child combinator, matching element with id that is a child of an element with id: #child&gt;#child-div1 
+PASS Detached Element.querySelector: Child combinator, matching element with id that is a child of an element with id: #child&gt;#child-div1 
+PASS Detached Element.querySelectorAll: Child combinator, matching element with id that is a child of an element with class: #child-div1&gt;.child-div2 
+PASS Detached Element.querySelector: Child combinator, matching element with id that is a child of an element with class: #child-div1&gt;.child-div2 
+PASS Detached Element.querySelectorAll: Child combinator, matching element with class that is a child of an element with class: .child-div1&gt;.child-div2 
+PASS Detached Element.querySelector: Child combinator, matching element with class that is a child of an element with class: .child-div1&gt;.child-div2 
+PASS Detached Element.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with id: #child&gt;#child-div3 
+PASS Detached Element.querySelector: Child combinator, not matching element with id that is not a child of an element with id: #child&gt;#child-div3 
+PASS Detached Element.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with class: #child-div1&gt;.child-div3 
+PASS Detached Element.querySelector: Child combinator, not matching element with id that is not a child of an element with class: #child-div1&gt;.child-div3 
+PASS Detached Element.querySelectorAll: Child combinator, not matching element with class that is not a child of an element with class: .child-div1&gt;.child-div3 
+PASS Detached Element.querySelector: Child combinator, not matching element with class that is not a child of an element with class: .child-div1&gt;.child-div3 
+PASS Detached Element.querySelectorAll: Child combinator, surrounded by whitespace: #child-div1        
+&gt;        
+#child-div2 
+PASS Detached Element.querySelector: Child combinator, surrounded by whitespace: #child-div1        
+&gt;        
+#child-div2 
+PASS Detached Element.querySelectorAll: Child combinator, whitespace after: #child-div1&gt;        
+#child-div2 
+PASS Detached Element.querySelector: Child combinator, whitespace after: #child-div1&gt;        
+#child-div2 
+PASS Detached Element.querySelectorAll: Child combinator, whitespace before: #child-div1        
+&gt;#child-div2 
+PASS Detached Element.querySelector: Child combinator, whitespace before: #child-div1        
+&gt;#child-div2 
+PASS Detached Element.querySelectorAll: Child combinator, no whitespace: #child-div1&gt;#child-div2 
+PASS Detached Element.querySelector: Child combinator, no whitespace: #child-div1&gt;#child-div2 
+PASS Detached Element.querySelectorAll: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div 
+PASS Detached Element.querySelector: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div 
+PASS Detached Element.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 
+PASS Detached Element.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 
+PASS Detached Element.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 
+PASS Detached Element.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 
+PASS Detached Element.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 
+PASS Detached Element.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 
+PASS Detached Element.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 
+PASS Detached Element.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 
+PASS Detached Element.querySelectorAll: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p 
+PASS Detached Element.querySelector: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p 
+PASS Detached Element.querySelectorAll: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 
+PASS Detached Element.querySelector: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 
+PASS Detached Element.querySelectorAll: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2        
++        
+#adjacent-p3 
+PASS Detached Element.querySelector: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2        
++        
+#adjacent-p3 
+PASS Detached Element.querySelectorAll: Adjacent sibling combinator, whitespace after: #adjacent-p2+        
+#adjacent-p3 
+PASS Detached Element.querySelector: Adjacent sibling combinator, whitespace after: #adjacent-p2+        
+#adjacent-p3 
+PASS Detached Element.querySelectorAll: Adjacent sibling combinator, whitespace before: #adjacent-p2        
++#adjacent-p3 
+PASS Detached Element.querySelector: Adjacent sibling combinator, whitespace before: #adjacent-p2        
++#adjacent-p3 
+PASS Detached Element.querySelectorAll: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 
+PASS Detached Element.querySelector: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 
+PASS Detached Element.querySelectorAll: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div 
+PASS Detached Element.querySelector: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div 
+PASS Detached Element.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 
+PASS Detached Element.querySelector: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 
+PASS Detached Element.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 
+PASS Detached Element.querySelector: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 
+PASS Detached Element.querySelectorAll: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div 
+PASS Detached Element.querySelector: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div 
+PASS Detached Element.querySelectorAll: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p 
+PASS Detached Element.querySelector: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p 
+PASS Detached Element.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling&gt;p~div 
+PASS Detached Element.querySelector: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling&gt;p~div 
+PASS Detached Element.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 
+PASS Detached Element.querySelector: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 
+PASS Detached Element.querySelectorAll: General sibling combinator, surrounded by whitespace: #sibling-p2        
+~        
+#sibling-p3 
+PASS Detached Element.querySelector: General sibling combinator, surrounded by whitespace: #sibling-p2        
+~        
+#sibling-p3 
+PASS Detached Element.querySelectorAll: General sibling combinator, whitespace after: #sibling-p2~        
+#sibling-p3 
+PASS Detached Element.querySelector: General sibling combinator, whitespace after: #sibling-p2~        
+#sibling-p3 
+PASS Detached Element.querySelectorAll: General sibling combinator, whitespace before: #sibling-p2        
+~#sibling-p3 
+PASS Detached Element.querySelector: General sibling combinator, whitespace before: #sibling-p2        
+~#sibling-p3 
+PASS Detached Element.querySelectorAll: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 
+PASS Detached Element.querySelector: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 
+PASS Detached Element.querySelectorAll: Syntax, group of selectors separator, surrounded by whitespace: #group em        

+,        

+#group strong 
+PASS Detached Element.querySelector: Syntax, group of selectors separator, surrounded by whitespace: #group em        

+,        

+#group strong 
+PASS Detached Element.querySelectorAll: Syntax, group of selectors separator, whitespace after: #group em,        
+#group strong 
+PASS Detached Element.querySelector: Syntax, group of selectors separator, whitespace after: #group em,        
+#group strong 
+PASS Detached Element.querySelectorAll: Syntax, group of selectors separator, whitespace before: #group em        
+,#group strong 
+PASS Detached Element.querySelector: Syntax, group of selectors separator, whitespace before: #group em        
+,#group strong 
+PASS Detached Element.querySelectorAll: Syntax, group of selectors separator, no whitespace: #group em,#group strong 
+PASS Detached Element.querySelector: Syntax, group of selectors separator, no whitespace: #group em,#group strong 
+PASS Fragment.querySelectorAll: Type selector, matching html element: html 
+PASS Fragment.querySelector: Type selector, matching html element: html 
+PASS Fragment.querySelectorAll: Type selector, matching body element: body 
+PASS Fragment.querySelector: Type selector, matching body element: body 
+PASS Fragment.querySelectorAll: Universal selector, matching all children of element with specified ID: #universal&gt;* 
+PASS Fragment.querySelector: Universal selector, matching all children of element with specified ID: #universal&gt;* 
+PASS Fragment.querySelectorAll: Universal selector, matching all grandchildren of element with specified ID: #universal&gt;*&gt;* 
+PASS Fragment.querySelector: Universal selector, matching all grandchildren of element with specified ID: #universal&gt;*&gt;* 
+PASS Fragment.querySelectorAll: Universal selector, matching all children of empty element with specified ID: #empty&gt;* 
+PASS Fragment.querySelector: Universal selector, matching all children of empty element with specified ID: #empty&gt;* 
+PASS Fragment.querySelectorAll: Universal selector, matching all descendants of element with specified ID: #universal * 
+PASS Fragment.querySelector: Universal selector, matching all descendants of element with specified ID: #universal * 
+PASS Fragment.querySelectorAll: Attribute presence selector, matching align attribute with value: .attr-presence-div1[align] 
+PASS Fragment.querySelector: Attribute presence selector, matching align attribute with value: .attr-presence-div1[align] 
+PASS Fragment.querySelectorAll: Attribute presence selector, matching align attribute with empty value: .attr-presence-div2[align] 
+PASS Fragment.querySelector: Attribute presence selector, matching align attribute with empty value: .attr-presence-div2[align] 
+PASS Fragment.querySelectorAll: Attribute presence selector, matching title attribute, case insensitivity: #attr-presence [TiTlE] 
+PASS Fragment.querySelector: Attribute presence selector, matching title attribute, case insensitivity: #attr-presence [TiTlE] 
+PASS Fragment.querySelectorAll: Attribute presence selector, matching custom data-* attribute: [data-attr-presence] 
+PASS Fragment.querySelector: Attribute presence selector, matching custom data-* attribute: [data-attr-presence] 
+PASS Fragment.querySelectorAll: Attribute presence selector, not matching attribute with similar name: .attr-presence-div3[align], .attr-presence-div4[align] 
+PASS Fragment.querySelector: Attribute presence selector, not matching attribute with similar name: .attr-presence-div3[align], .attr-presence-div4[align] 
+PASS Fragment.querySelectorAll: Attribute presence selector, matching attribute with non-ASCII characters: ul[data-中文] 
+PASS Fragment.querySelector: Attribute presence selector, matching attribute with non-ASCII characters: ul[data-中文] 
+PASS Fragment.querySelectorAll: Attribute presence selector, not matching default option without selected attribute: #attr-presence-select1 option[selected] 
+PASS Fragment.querySelector: Attribute presence selector, not matching default option without selected attribute: #attr-presence-select1 option[selected] 
+PASS Fragment.querySelectorAll: Attribute presence selector, matching option with selected attribute: #attr-presence-select2 option[selected] 
+PASS Fragment.querySelector: Attribute presence selector, matching option with selected attribute: #attr-presence-select2 option[selected] 
+PASS Fragment.querySelectorAll: Attribute presence selector, matching multiple options with selected attributes: #attr-presence-select3 option[selected] 
+PASS Fragment.querySelector: Attribute presence selector, matching multiple options with selected attributes: #attr-presence-select3 option[selected] 
+PASS Fragment.querySelectorAll: Attribute value selector, matching align attribute with value: #attr-value [align=&quot;center&quot;] 
+PASS Fragment.querySelector: Attribute value selector, matching align attribute with value: #attr-value [align=&quot;center&quot;] 
+PASS Fragment.querySelectorAll: Attribute value selector, matching align attribute with empty value: #attr-value [align=&quot;&quot;] 
+PASS Fragment.querySelector: Attribute value selector, matching align attribute with empty value: #attr-value [align=&quot;&quot;] 
+PASS Fragment.querySelectorAll: Attribute value selector, not matching align attribute with partial value: #attr-value [align=&quot;c&quot;] 
+PASS Fragment.querySelector: Attribute value selector, not matching align attribute with partial value: #attr-value [align=&quot;c&quot;] 
+PASS Fragment.querySelectorAll: Attribute value selector, not matching align attribute with incorrect value: #attr-value [align=&quot;centera&quot;] 
+PASS Fragment.querySelector: Attribute value selector, not matching align attribute with incorrect value: #attr-value [align=&quot;centera&quot;] 
+PASS Fragment.querySelectorAll: Attribute value selector, matching custom data-* attribute with unicode escaped value: [data-attr-value=&quot;\e9&quot;] 
+PASS Fragment.querySelector: Attribute value selector, matching custom data-* attribute with unicode escaped value: [data-attr-value=&quot;\e9&quot;] 
+PASS Fragment.querySelectorAll: Attribute value selector, matching custom data-* attribute with escaped character: [data-attr-value_foo=&quot;\e9&quot;] 
+PASS Fragment.querySelector: Attribute value selector, matching custom data-* attribute with escaped character: [data-attr-value_foo=&quot;\e9&quot;] 
+PASS Fragment.querySelectorAll: Attribute value selector with single-quoted value, matching multiple inputs with type attributes: #attr-value input[type='hidden'],#attr-value input[type='radio'] 
+PASS Fragment.querySelector: Attribute value selector with single-quoted value, matching multiple inputs with type attributes: #attr-value input[type='hidden'],#attr-value input[type='radio'] 
+PASS Fragment.querySelectorAll: Attribute value selector with double-quoted value, matching multiple inputs with type attributes: #attr-value input[type=&quot;hidden&quot;],#attr-value input[type='radio'] 
+PASS Fragment.querySelector: Attribute value selector with double-quoted value, matching multiple inputs with type attributes: #attr-value input[type=&quot;hidden&quot;],#attr-value input[type='radio'] 
+PASS Fragment.querySelectorAll: Attribute value selector with unquoted value, matching multiple inputs with type attributes: #attr-value input[type=hidden],#attr-value input[type=radio] 
+PASS Fragment.querySelector: Attribute value selector with unquoted value, matching multiple inputs with type attributes: #attr-value input[type=hidden],#attr-value input[type=radio] 
+PASS Fragment.querySelectorAll: Attribute value selector, matching attribute with value using non-ASCII characters: [data-attr-value=中文] 
+PASS Fragment.querySelector: Attribute value selector, matching attribute with value using non-ASCII characters: [data-attr-value=中文] 
+PASS Fragment.querySelectorAll: Attribute whitespace-separated list selector, matching class attribute with value: #attr-whitespace [class~=&quot;div1&quot;] 
+PASS Fragment.querySelector: Attribute whitespace-separated list selector, matching class attribute with value: #attr-whitespace [class~=&quot;div1&quot;] 
+PASS Fragment.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=&quot;&quot;] 
+PASS Fragment.querySelector: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=&quot;&quot;] 
+PASS Fragment.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with partial value: [data-attr-whitespace~=&quot;div&quot;] 
+PASS Fragment.querySelector: Attribute whitespace-separated list selector, not matching class attribute with partial value: [data-attr-whitespace~=&quot;div&quot;] 
+PASS Fragment.querySelectorAll: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value: [data-attr-whitespace~=&quot;\0000e9&quot;] 
+PASS Fragment.querySelector: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value: [data-attr-whitespace~=&quot;\0000e9&quot;] 
+PASS Fragment.querySelectorAll: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character: [data-attr-whitespace_foo~=&quot;\e9&quot;] 
+PASS Fragment.querySelector: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character: [data-attr-whitespace_foo~=&quot;\e9&quot;] 
+PASS Fragment.querySelectorAll: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~='bookmark'],  #attr-whitespace a[rel~='nofollow'] 
+PASS Fragment.querySelector: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~='bookmark'],  #attr-whitespace a[rel~='nofollow'] 
+PASS Fragment.querySelectorAll: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=&quot;bookmark&quot;],#attr-whitespace a[rel~='nofollow'] 
+PASS Fragment.querySelector: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=&quot;bookmark&quot;],#attr-whitespace a[rel~='nofollow'] 
+PASS Fragment.querySelectorAll: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=bookmark],    #attr-whitespace a[rel~=nofollow] 
+PASS Fragment.querySelector: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=bookmark],    #attr-whitespace a[rel~=nofollow] 
+PASS Fragment.querySelectorAll: Attribute whitespace-separated list selector with double-quoted value, not matching value with space: #attr-whitespace a[rel~=&quot;book mark&quot;] 
+PASS Fragment.querySelector: Attribute whitespace-separated list selector with double-quoted value, not matching value with space: #attr-whitespace a[rel~=&quot;book mark&quot;] 
+PASS Fragment.querySelectorAll: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters: #attr-whitespace [title~=中文] 
+PASS Fragment.querySelector: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters: #attr-whitespace [title~=中文] 
+PASS Fragment.querySelectorAll: Attribute hyphen-separated list selector, not matching unspecified lang attribute: #attr-hyphen-div1[lang|=&quot;en&quot;] 
+PASS Fragment.querySelector: Attribute hyphen-separated list selector, not matching unspecified lang attribute: #attr-hyphen-div1[lang|=&quot;en&quot;] 
+PASS Fragment.querySelectorAll: Attribute hyphen-separated list selector, matching lang attribute with exact value: #attr-hyphen-div2[lang|=&quot;fr&quot;] 
+PASS Fragment.querySelector: Attribute hyphen-separated list selector, matching lang attribute with exact value: #attr-hyphen-div2[lang|=&quot;fr&quot;] 
+PASS Fragment.querySelectorAll: Attribute hyphen-separated list selector, matching lang attribute with partial value: #attr-hyphen-div3[lang|=&quot;en&quot;] 
+PASS Fragment.querySelector: Attribute hyphen-separated list selector, matching lang attribute with partial value: #attr-hyphen-div3[lang|=&quot;en&quot;] 
+PASS Fragment.querySelectorAll: Attribute hyphen-separated list selector, not matching incorrect value: #attr-hyphen-div4[lang|=&quot;es-AR&quot;] 
+PASS Fragment.querySelector: Attribute hyphen-separated list selector, not matching incorrect value: #attr-hyphen-div4[lang|=&quot;es-AR&quot;] 
+PASS Fragment.querySelectorAll: Attribute begins with selector, matching href attributes beginning with specified substring: #attr-begins a[href^=&quot;http://www&quot;] 
+PASS Fragment.querySelector: Attribute begins with selector, matching href attributes beginning with specified substring: #attr-begins a[href^=&quot;http://www&quot;] 
+PASS Fragment.querySelectorAll: Attribute begins with selector, matching lang attributes beginning with specified substring, : #attr-begins [lang^=&quot;en-&quot;] 
+PASS Fragment.querySelector: Attribute begins with selector, matching lang attributes beginning with specified substring, : #attr-begins [lang^=&quot;en-&quot;] 
+PASS Fragment.querySelectorAll: Attribute begins with selector, not matching class attribute not beginning with specified substring: #attr-begins [class^=apple] 
+PASS Fragment.querySelector: Attribute begins with selector, not matching class attribute not beginning with specified substring: #attr-begins [class^=apple] 
+PASS Fragment.querySelectorAll: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=' apple'] 
+PASS Fragment.querySelector: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=' apple'] 
+PASS Fragment.querySelectorAll: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=&quot; apple&quot;] 
+PASS Fragment.querySelector: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=&quot; apple&quot;] 
+PASS Fragment.querySelectorAll: Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring: #attr-begins [class^= apple] 
+PASS Fragment.querySelector: Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring: #attr-begins [class^= apple] 
+PASS Fragment.querySelectorAll: Attribute ends with selector, matching href attributes ending with specified substring: #attr-ends a[href$=&quot;.org&quot;] 
+PASS Fragment.querySelector: Attribute ends with selector, matching href attributes ending with specified substring: #attr-ends a[href$=&quot;.org&quot;] 
+PASS Fragment.querySelectorAll: Attribute ends with selector, matching lang attributes ending with specified substring, : #attr-ends [lang$=&quot;-CH&quot;] 
+PASS Fragment.querySelector: Attribute ends with selector, matching lang attributes ending with specified substring, : #attr-ends [lang$=&quot;-CH&quot;] 
+PASS Fragment.querySelectorAll: Attribute ends with selector, not matching class attribute not ending with specified substring: #attr-ends [class$=apple] 
+PASS Fragment.querySelector: Attribute ends with selector, not matching class attribute not ending with specified substring: #attr-ends [class$=apple] 
+PASS Fragment.querySelectorAll: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring: #attr-ends [class$='apple '] 
+PASS Fragment.querySelector: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring: #attr-ends [class$='apple '] 
+PASS Fragment.querySelectorAll: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring: #attr-ends [class$=&quot;apple &quot;] 
+PASS Fragment.querySelector: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring: #attr-ends [class$=&quot;apple &quot;] 
+PASS Fragment.querySelectorAll: Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring: #attr-ends [class$=apple ] 
+PASS Fragment.querySelector: Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring: #attr-ends [class$=apple ] 
+PASS Fragment.querySelectorAll: Attribute contains selector, matching href attributes beginning with specified substring: #attr-contains a[href*=&quot;http://www&quot;] 
+PASS Fragment.querySelector: Attribute contains selector, matching href attributes beginning with specified substring: #attr-contains a[href*=&quot;http://www&quot;] 
+PASS Fragment.querySelectorAll: Attribute contains selector, matching href attributes ending with specified substring: #attr-contains a[href*=&quot;.org&quot;] 
+PASS Fragment.querySelector: Attribute contains selector, matching href attributes ending with specified substring: #attr-contains a[href*=&quot;.org&quot;] 
+PASS Fragment.querySelectorAll: Attribute contains selector, matching href attributes containing specified substring: #attr-contains a[href*=&quot;.example.&quot;] 
+PASS Fragment.querySelector: Attribute contains selector, matching href attributes containing specified substring: #attr-contains a[href*=&quot;.example.&quot;] 
+PASS Fragment.querySelectorAll: Attribute contains selector, matching lang attributes beginning with specified substring, : #attr-contains [lang*=&quot;en-&quot;] 
+PASS Fragment.querySelector: Attribute contains selector, matching lang attributes beginning with specified substring, : #attr-contains [lang*=&quot;en-&quot;] 
+PASS Fragment.querySelectorAll: Attribute contains selector, matching lang attributes ending with specified substring, : #attr-contains [lang*=&quot;-CH&quot;] 
+PASS Fragment.querySelector: Attribute contains selector, matching lang attributes ending with specified substring, : #attr-contains [lang*=&quot;-CH&quot;] 
+PASS Fragment.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=' apple'] 
+PASS Fragment.querySelector: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=' apple'] 
+PASS Fragment.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring: #attr-contains [class*='orange '] 
+PASS Fragment.querySelector: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring: #attr-contains [class*='orange '] 
+PASS Fragment.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute containing specified substring: #attr-contains [class*='ple banana ora'] 
+PASS Fragment.querySelector: Attribute contains selector with single-quoted value, matching class attribute containing specified substring: #attr-contains [class*='ple banana ora'] 
+PASS Fragment.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=&quot; apple&quot;] 
+PASS Fragment.querySelector: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=&quot; apple&quot;] 
+PASS Fragment.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring: #attr-contains [class*=&quot;orange &quot;] 
+PASS Fragment.querySelector: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring: #attr-contains [class*=&quot;orange &quot;] 
+PASS Fragment.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute containing specified substring: #attr-contains [class*=&quot;ple banana ora&quot;] 
+PASS Fragment.querySelector: Attribute contains selector with double-quoted value, matching class attribute containing specified substring: #attr-contains [class*=&quot;ple banana ora&quot;] 
+PASS Fragment.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring: #attr-contains [class*= apple] 
+PASS Fragment.querySelector: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring: #attr-contains [class*= apple] 
+PASS Fragment.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute ending with specified substring: #attr-contains [class*=orange ] 
+PASS Fragment.querySelector: Attribute contains selector with unquoted value, matching class attribute ending with specified substring: #attr-contains [class*=orange ] 
+PASS Fragment.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute containing specified substring: #attr-contains [class*= banana ] 
+PASS Fragment.querySelector: Attribute contains selector with unquoted value, matching class attribute containing specified substring: #attr-contains [class*= banana ] 
+PASS Fragment.querySelectorAll: :root pseudo-class selector, not matching document root element: :root 
+PASS Fragment.querySelector: :root pseudo-class selector, not matching document root element: :root 
+PASS Fragment.querySelectorAll: :nth-child selector, matching the third child element: #pseudo-nth-table1 :nth-child(3) 
+PASS Fragment.querySelector: :nth-child selector, matching the third child element: #pseudo-nth-table1 :nth-child(3) 
+PASS Fragment.querySelectorAll: :nth-child selector, matching every third child element: #pseudo-nth li:nth-child(3n) 
+PASS Fragment.querySelector: :nth-child selector, matching every third child element: #pseudo-nth li:nth-child(3n) 
+PASS Fragment.querySelectorAll: :nth-child selector, matching every second child element, starting from the fourth: #pseudo-nth li:nth-child(2n+4) 
+PASS Fragment.querySelector: :nth-child selector, matching every second child element, starting from the fourth: #pseudo-nth li:nth-child(2n+4) 
+PASS Fragment.querySelectorAll: :nth-child selector, matching every fourth child element, starting from the third: #pseudo-nth-p1 :nth-child(4n-1) 
+PASS Fragment.querySelector: :nth-child selector, matching every fourth child element, starting from the third: #pseudo-nth-p1 :nth-child(4n-1) 
+PASS Fragment.querySelectorAll: :nth-last-child selector, matching the third last child element: #pseudo-nth-table1 :nth-last-child(3) 
+PASS Fragment.querySelector: :nth-last-child selector, matching the third last child element: #pseudo-nth-table1 :nth-last-child(3) 
+PASS Fragment.querySelectorAll: :nth-last-child selector, matching every third child element from the end: #pseudo-nth li:nth-last-child(3n) 
+PASS Fragment.querySelector: :nth-last-child selector, matching every third child element from the end: #pseudo-nth li:nth-last-child(3n) 
+PASS Fragment.querySelectorAll: :nth-last-child selector, matching every second child element from the end, starting from the fourth last: #pseudo-nth li:nth-last-child(2n+4) 
+PASS Fragment.querySelector: :nth-last-child selector, matching every second child element from the end, starting from the fourth last: #pseudo-nth li:nth-last-child(2n+4) 
+PASS Fragment.querySelectorAll: :nth-last-child selector, matching every fourth element from the end, starting from the third last: #pseudo-nth-p1 :nth-last-child(4n-1) 
+PASS Fragment.querySelector: :nth-last-child selector, matching every fourth element from the end, starting from the third last: #pseudo-nth-p1 :nth-last-child(4n-1) 
+PASS Fragment.querySelectorAll: :nth-of-type selector, matching the third em element: #pseudo-nth-p1 em:nth-of-type(3) 
+PASS Fragment.querySelector: :nth-of-type selector, matching the third em element: #pseudo-nth-p1 em:nth-of-type(3) 
+PASS Fragment.querySelectorAll: :nth-of-type selector, matching every second element of their type: #pseudo-nth-p1 :nth-of-type(2n) 
+PASS Fragment.querySelector: :nth-of-type selector, matching every second element of their type: #pseudo-nth-p1 :nth-of-type(2n) 
+PASS Fragment.querySelectorAll: :nth-of-type selector, matching every second elemetn of their type, starting from the first: #pseudo-nth-p1 span:nth-of-type(2n-1) 
+PASS Fragment.querySelector: :nth-of-type selector, matching every second elemetn of their type, starting from the first: #pseudo-nth-p1 span:nth-of-type(2n-1) 
+PASS Fragment.querySelectorAll: :nth-last-of-type selector, matching the thrid last em element: #pseudo-nth-p1 em:nth-last-of-type(3) 
+PASS Fragment.querySelector: :nth-last-of-type selector, matching the thrid last em element: #pseudo-nth-p1 em:nth-last-of-type(3) 
+PASS Fragment.querySelectorAll: :nth-last-of-type selector, matching every second last element of their type: #pseudo-nth-p1 :nth-last-of-type(2n) 
+PASS Fragment.querySelector: :nth-last-of-type selector, matching every second last element of their type: #pseudo-nth-p1 :nth-last-of-type(2n) 
+PASS Fragment.querySelectorAll: :nth-last-of-type selector, matching every second last element of their type, starting from the last: #pseudo-nth-p1 span:nth-last-of-type(2n-1) 
+PASS Fragment.querySelector: :nth-last-of-type selector, matching every second last element of their type, starting from the last: #pseudo-nth-p1 span:nth-last-of-type(2n-1) 
+PASS Fragment.querySelectorAll: :first-of-type selector, matching the first em element: #pseudo-nth-p1 em:first-of-type 
+PASS Fragment.querySelector: :first-of-type selector, matching the first em element: #pseudo-nth-p1 em:first-of-type 
+PASS Fragment.querySelectorAll: :first-of-type selector, matching the first of every type of element: #pseudo-nth-p1 :first-of-type 
+PASS Fragment.querySelector: :first-of-type selector, matching the first of every type of element: #pseudo-nth-p1 :first-of-type 
+PASS Fragment.querySelectorAll: :first-of-type selector, matching the first td element in each table row: #pseudo-nth-table1 tr :first-of-type 
+PASS Fragment.querySelector: :first-of-type selector, matching the first td element in each table row: #pseudo-nth-table1 tr :first-of-type 
+PASS Fragment.querySelectorAll: :last-of-type selector, matching the last em elemnet: #pseudo-nth-p1 em:last-of-type 
+PASS Fragment.querySelector: :last-of-type selector, matching the last em elemnet: #pseudo-nth-p1 em:last-of-type 
+PASS Fragment.querySelectorAll: :last-of-type selector, matching the last of every type of element: #pseudo-nth-p1 :last-of-type 
+PASS Fragment.querySelector: :last-of-type selector, matching the last of every type of element: #pseudo-nth-p1 :last-of-type 
+PASS Fragment.querySelectorAll: :last-of-type selector, matching the last td element in each table row: #pseudo-nth-table1 tr :last-of-type 
+PASS Fragment.querySelector: :last-of-type selector, matching the last td element in each table row: #pseudo-nth-table1 tr :last-of-type 
+PASS Fragment.querySelectorAll: :first-child pseudo-class selector, matching first child div element: #pseudo-first-child div:first-child 
+PASS Fragment.querySelector: :first-child pseudo-class selector, matching first child div element: #pseudo-first-child div:first-child 
+PASS Fragment.querySelectorAll: :first-child pseudo-class selector, doesn't match non-first-child elements: .pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child 
+PASS Fragment.querySelector: :first-child pseudo-class selector, doesn't match non-first-child elements: .pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child 
+PASS Fragment.querySelectorAll: :first-child pseudo-class selector, matching first-child of multiple elements: #pseudo-first-child span:first-child 
+PASS Fragment.querySelector: :first-child pseudo-class selector, matching first-child of multiple elements: #pseudo-first-child span:first-child 
+PASS Fragment.querySelectorAll: :last-child pseudo-class selector, matching last child div element: #pseudo-last-child div:last-child 
+PASS Fragment.querySelector: :last-child pseudo-class selector, matching last child div element: #pseudo-last-child div:last-child 
+PASS Fragment.querySelectorAll: :last-child pseudo-class selector, doesn't match non-last-child elements: .pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child 
+PASS Fragment.querySelector: :last-child pseudo-class selector, doesn't match non-last-child elements: .pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child 
+PASS Fragment.querySelectorAll: :last-child pseudo-class selector, matching first-child of multiple elements: #pseudo-last-child span:last-child 
+PASS Fragment.querySelector: :last-child pseudo-class selector, matching first-child of multiple elements: #pseudo-last-child span:last-child 
+PASS Fragment.querySelectorAll: :pseudo-only-child pseudo-class selector, matching all only-child elements: #pseudo-only :only-child 
+PASS Fragment.querySelector: :pseudo-only-child pseudo-class selector, matching all only-child elements: #pseudo-only :only-child 
+PASS Fragment.querySelectorAll: :pseudo-only-child pseudo-class selector, matching only-child em elements: #pseudo-only em:only-child 
+PASS Fragment.querySelector: :pseudo-only-child pseudo-class selector, matching only-child em elements: #pseudo-only em:only-child 
+PASS Fragment.querySelectorAll: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type: #pseudo-only :only-of-type 
+PASS Fragment.querySelector: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type: #pseudo-only :only-of-type 
+PASS Fragment.querySelectorAll: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type: #pseudo-only em:only-of-type 
+PASS Fragment.querySelector: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type: #pseudo-only em:only-of-type 
+PASS Fragment.querySelectorAll: :empty pseudo-class selector, matching empty p elements: #pseudo-empty p:empty 
+PASS Fragment.querySelector: :empty pseudo-class selector, matching empty p elements: #pseudo-empty p:empty 
+PASS Fragment.querySelectorAll: :empty pseudo-class selector, matching all empty elements: #pseudo-empty :empty 
+PASS Fragment.querySelector: :empty pseudo-class selector, matching all empty elements: #pseudo-empty :empty 
+PASS Fragment.querySelectorAll: :link and :visited pseudo-class selectors, matching a and area elements with href attributes: #pseudo-link :link, #pseudo-link :visited 
+PASS Fragment.querySelector: :link and :visited pseudo-class selectors, matching a and area elements with href attributes: #pseudo-link :link, #pseudo-link :visited 
+PASS Fragment.querySelectorAll: :link and :visited pseudo-class selectors, not matching link elements with href attributes: #head :link, #head :visited 
+PASS Fragment.querySelector: :link and :visited pseudo-class selectors, not matching link elements with href attributes: #head :link, #head :visited 
+PASS Fragment.querySelectorAll: :link and :visited pseudo-class selectors, chained, mutually exclusive pseudo-classes match nothing: :link:visited 
+PASS Fragment.querySelector: :link and :visited pseudo-class selectors, chained, mutually exclusive pseudo-classes match nothing: :link:visited 
+PASS Fragment.querySelectorAll: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target 
+PASS Fragment.querySelector: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target 
+PASS Fragment.querySelectorAll: :lang pseudo-class selector, not matching element with no inherited language: #pseudo-lang-div1:lang(en) 
+PASS Fragment.querySelector: :lang pseudo-class selector, not matching element with no inherited language: #pseudo-lang-div1:lang(en) 
+PASS Fragment.querySelectorAll: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) 
+PASS Fragment.querySelector: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) 
+PASS Fragment.querySelectorAll: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) 
+PASS Fragment.querySelector: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) 
+PASS Fragment.querySelectorAll: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) 
+PASS Fragment.querySelector: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) 
+PASS Fragment.querySelectorAll: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled 
+PASS Fragment.querySelector: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled 
+PASS Fragment.querySelectorAll: :enabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled 
+PASS Fragment.querySelector: :enabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled 
+PASS Fragment.querySelectorAll: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked 
+PASS Fragment.querySelector: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked 
+PASS Fragment.querySelectorAll: :not pseudo-class selector, matching : #not&gt;:not(div) 
+PASS Fragment.querySelector: :not pseudo-class selector, matching : #not&gt;:not(div) 
+PASS Fragment.querySelectorAll: :not pseudo-class selector, matching : #not * :not(:first-child) 
+PASS Fragment.querySelector: :not pseudo-class selector, matching : #not * :not(:first-child) 
+PASS Fragment.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*) 
+PASS Fragment.querySelector: :not pseudo-class selector, matching nothing: :not(*) 
+PASS Fragment.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*|*) 
+PASS Fragment.querySelector: :not pseudo-class selector, matching nothing: :not(*|*) 
+PASS Fragment.querySelectorAll: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line 
+PASS Fragment.querySelector: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line 
+PASS Fragment.querySelectorAll: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line 
+PASS Fragment.querySelector: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line 
+PASS Fragment.querySelectorAll: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter 
+PASS Fragment.querySelector: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter 
+PASS Fragment.querySelectorAll: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter 
+PASS Fragment.querySelector: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter 
+PASS Fragment.querySelectorAll: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before 
+PASS Fragment.querySelector: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before 
+PASS Fragment.querySelectorAll: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before 
+PASS Fragment.querySelector: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before 
+PASS Fragment.querySelectorAll: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after 
+PASS Fragment.querySelector: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after 
+PASS Fragment.querySelectorAll: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after 
+PASS Fragment.querySelector: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after 
+PASS Fragment.querySelectorAll: Class selector, matching element with specified class: .class-p 
+PASS Fragment.querySelector: Class selector, matching element with specified class: .class-p 
+PASS Fragment.querySelectorAll: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana 
+PASS Fragment.querySelector: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana 
+PASS Fragment.querySelectorAll: Class Selector, chained, with type selector: div.apple.banana.orange 
+PASS Fragment.querySelector: Class Selector, chained, with type selector: div.apple.banana.orange 
+PASS Fragment.querySelectorAll: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
+PASS Fragment.querySelector: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
+PASS Fragment.querySelectorAll: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
+PASS Fragment.querySelector: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
+PASS Fragment.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
+PASS Fragment.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
+PASS Fragment.querySelectorAll: Class selector, matching element with class with escaped character: .foo\:bar 
+PASS Fragment.querySelector: Class selector, matching element with class with escaped character: .foo\:bar 
+PASS Fragment.querySelectorAll: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar 
+PASS Fragment.querySelector: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar 
+PASS Fragment.querySelectorAll: ID selector, matching element with specified id: #id #id-div1 
+PASS Fragment.querySelector: ID selector, matching element with specified id: #id #id-div1 
+PASS Fragment.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div1 
+PASS Fragment.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div1 
+PASS Fragment.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div2 
+PASS Fragment.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div2 
+PASS Fragment.querySelectorAll: ID Selector, chained, with type selector: div#id-div1, div#id-div2 
+PASS Fragment.querySelector: ID Selector, chained, with type selector: div#id-div1, div#id-div2 
+PASS Fragment.querySelectorAll: ID selector, not matching non-existent descendant: #id #none 
+PASS Fragment.querySelector: ID selector, not matching non-existent descendant: #id #none 
+PASS Fragment.querySelectorAll: ID selector, not matching non-existent ancestor: #none #id-div1 
+PASS Fragment.querySelector: ID selector, not matching non-existent ancestor: #none #id-div1 
+PASS Fragment.querySelectorAll: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
+PASS Fragment.querySelector: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
+PASS Fragment.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
+PASS Fragment.querySelector: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
+PASS Fragment.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北 
+PASS Fragment.querySelector: ID selector, matching id value using non-ASCII characters: #台北 
+PASS Fragment.querySelectorAll: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
+PASS Fragment.querySelector: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
+PASS Fragment.querySelectorAll: ID selector, matching element with id with escaped character: #\#foo\:bar 
+PASS Fragment.querySelector: ID selector, matching element with id with escaped character: #\#foo\:bar 
+PASS Fragment.querySelectorAll: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar 
+PASS Fragment.querySelector: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar 
+PASS Fragment.querySelectorAll: Namespace selector, matching element with any namespace: #any-namespace *|div 
+PASS Fragment.querySelector: Namespace selector, matching element with any namespace: #any-namespace *|div 
+FAIL Fragment.querySelectorAll: Namespace selector, matching div elements in no namespace only: #no-namespace |div assert_equals: The method should return the expected number of matches. expected 1 but got 4
+FAIL Fragment.querySelector: Namespace selector, matching div elements in no namespace only: #no-namespace |div assert_equals: The method should return the first match. expected &quot;no-namespace-div3&quot; but got &quot;no-namespace-div1&quot;
+FAIL Fragment.querySelectorAll: Namespace selector, matching any elements in no namespace only: #no-namespace |* assert_equals: The method should return the expected number of matches. expected 1 but got 4
+FAIL Fragment.querySelector: Namespace selector, matching any elements in no namespace only: #no-namespace |* assert_equals: The method should return the first match. expected &quot;no-namespace-div3&quot; but got &quot;no-namespace-div1&quot;
+PASS Fragment.querySelectorAll: Descendant combinator, matching element that is a descendant of an element with id: #descendant div 
+PASS Fragment.querySelector: Descendant combinator, matching element that is a descendant of an element with id: #descendant div 
+PASS Fragment.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 
+PASS Fragment.querySelector: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 
+PASS Fragment.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 
+PASS Fragment.querySelector: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 
+PASS Fragment.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 
+PASS Fragment.querySelector: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 
+PASS Fragment.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 
+PASS Fragment.querySelector: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 
+PASS Fragment.querySelectorAll: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 
+PASS Fragment.querySelector: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 
+PASS Fragment.querySelectorAll: Descendant combinator, whitespace characters: #descendant        
+#descendant-div2 
+PASS Fragment.querySelector: Descendant combinator, whitespace characters: #descendant        
+#descendant-div2 
+PASS Fragment.querySelectorAll: Child combinator, matching element that is a child of an element with id: #child&gt;div 
+PASS Fragment.querySelector: Child combinator, matching element that is a child of an element with id: #child&gt;div 
+PASS Fragment.querySelectorAll: Child combinator, matching element with id that is a child of an element: div&gt;#child-div1 
+PASS Fragment.querySelector: Child combinator, matching element with id that is a child of an element: div&gt;#child-div1 
+PASS Fragment.querySelectorAll: Child combinator, matching element with id that is a child of an element with id: #child&gt;#child-div1 
+PASS Fragment.querySelector: Child combinator, matching element with id that is a child of an element with id: #child&gt;#child-div1 
+PASS Fragment.querySelectorAll: Child combinator, matching element with id that is a child of an element with class: #child-div1&gt;.child-div2 
+PASS Fragment.querySelector: Child combinator, matching element with id that is a child of an element with class: #child-div1&gt;.child-div2 
+PASS Fragment.querySelectorAll: Child combinator, matching element with class that is a child of an element with class: .child-div1&gt;.child-div2 
+PASS Fragment.querySelector: Child combinator, matching element with class that is a child of an element with class: .child-div1&gt;.child-div2 
+PASS Fragment.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with id: #child&gt;#child-div3 
+PASS Fragment.querySelector: Child combinator, not matching element with id that is not a child of an element with id: #child&gt;#child-div3 
+PASS Fragment.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with class: #child-div1&gt;.child-div3 
+PASS Fragment.querySelector: Child combinator, not matching element with id that is not a child of an element with class: #child-div1&gt;.child-div3 
+PASS Fragment.querySelectorAll: Child combinator, not matching element with class that is not a child of an element with class: .child-div1&gt;.child-div3 
+PASS Fragment.querySelector: Child combinator, not matching element with class that is not a child of an element with class: .child-div1&gt;.child-div3 
+PASS Fragment.querySelectorAll: Child combinator, surrounded by whitespace: #child-div1        
+&gt;        
+#child-div2 
+PASS Fragment.querySelector: Child combinator, surrounded by whitespace: #child-div1        
+&gt;        
+#child-div2 
+PASS Fragment.querySelectorAll: Child combinator, whitespace after: #child-div1&gt;        
+#child-div2 
+PASS Fragment.querySelector: Child combinator, whitespace after: #child-div1&gt;        
+#child-div2 
+PASS Fragment.querySelectorAll: Child combinator, whitespace before: #child-div1        
+&gt;#child-div2 
+PASS Fragment.querySelector: Child combinator, whitespace before: #child-div1        
+&gt;#child-div2 
+PASS Fragment.querySelectorAll: Child combinator, no whitespace: #child-div1&gt;#child-div2 
+PASS Fragment.querySelector: Child combinator, no whitespace: #child-div1&gt;#child-div2 
+PASS Fragment.querySelectorAll: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div 
+PASS Fragment.querySelector: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div 
+PASS Fragment.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 
+PASS Fragment.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 
+PASS Fragment.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 
+PASS Fragment.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 
+PASS Fragment.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 
+PASS Fragment.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 
+PASS Fragment.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 
+PASS Fragment.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 
+PASS Fragment.querySelectorAll: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p 
+PASS Fragment.querySelector: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p 
+PASS Fragment.querySelectorAll: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 
+PASS Fragment.querySelector: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 
+PASS Fragment.querySelectorAll: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2        
++        
+#adjacent-p3 
+PASS Fragment.querySelector: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2        
++        
+#adjacent-p3 
+PASS Fragment.querySelectorAll: Adjacent sibling combinator, whitespace after: #adjacent-p2+        
+#adjacent-p3 
+PASS Fragment.querySelector: Adjacent sibling combinator, whitespace after: #adjacent-p2+        
+#adjacent-p3 
+PASS Fragment.querySelectorAll: Adjacent sibling combinator, whitespace before: #adjacent-p2        
++#adjacent-p3 
+PASS Fragment.querySelector: Adjacent sibling combinator, whitespace before: #adjacent-p2        
++#adjacent-p3 
+PASS Fragment.querySelectorAll: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 
+PASS Fragment.querySelector: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 
+PASS Fragment.querySelectorAll: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div 
+PASS Fragment.querySelector: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div 
+PASS Fragment.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 
+PASS Fragment.querySelector: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 
+PASS Fragment.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 
+PASS Fragment.querySelector: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 
+PASS Fragment.querySelectorAll: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div 
+PASS Fragment.querySelector: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div 
+PASS Fragment.querySelectorAll: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p 
+PASS Fragment.querySelector: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p 
+PASS Fragment.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling&gt;p~div 
+PASS Fragment.querySelector: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling&gt;p~div 
+PASS Fragment.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 
+PASS Fragment.querySelector: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 
+PASS Fragment.querySelectorAll: General sibling combinator, surrounded by whitespace: #sibling-p2        
+~        
+#sibling-p3 
+PASS Fragment.querySelector: General sibling combinator, surrounded by whitespace: #sibling-p2        
+~        
+#sibling-p3 
+PASS Fragment.querySelectorAll: General sibling combinator, whitespace after: #sibling-p2~        
+#sibling-p3 
+PASS Fragment.querySelector: General sibling combinator, whitespace after: #sibling-p2~        
+#sibling-p3 
+PASS Fragment.querySelectorAll: General sibling combinator, whitespace before: #sibling-p2        
+~#sibling-p3 
+PASS Fragment.querySelector: General sibling combinator, whitespace before: #sibling-p2        
+~#sibling-p3 
+PASS Fragment.querySelectorAll: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 
+PASS Fragment.querySelector: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 
+PASS Fragment.querySelectorAll: Syntax, group of selectors separator, surrounded by whitespace: #group em        

+,        

+#group strong 
+PASS Fragment.querySelector: Syntax, group of selectors separator, surrounded by whitespace: #group em        

+,        

+#group strong 
+PASS Fragment.querySelectorAll: Syntax, group of selectors separator, whitespace after: #group em,        
+#group strong 
+PASS Fragment.querySelector: Syntax, group of selectors separator, whitespace after: #group em,        
+#group strong 
+PASS Fragment.querySelectorAll: Syntax, group of selectors separator, whitespace before: #group em        
+,#group strong 
+PASS Fragment.querySelector: Syntax, group of selectors separator, whitespace before: #group em        
+,#group strong 
+PASS Fragment.querySelectorAll: Syntax, group of selectors separator, no whitespace: #group em,#group strong 
+PASS Fragment.querySelector: Syntax, group of selectors separator, no whitespace: #group em,#group strong 
+PASS In-document Element.querySelectorAll: Type selector, matching html element: html 
+PASS In-document Element.querySelector: Type selector, matching html element: html 
+PASS In-document Element.querySelectorAll: Type selector, matching body element: body 
+PASS In-document Element.querySelector: Type selector, matching body element: body 
+PASS In-document Element.querySelectorAll: Universal selector, matching all children of element with specified ID: #universal&gt;* 
+PASS In-document Element.querySelector: Universal selector, matching all children of element with specified ID: #universal&gt;* 
+PASS In-document Element.querySelectorAll: Universal selector, matching all grandchildren of element with specified ID: #universal&gt;*&gt;* 
+PASS In-document Element.querySelector: Universal selector, matching all grandchildren of element with specified ID: #universal&gt;*&gt;* 
+PASS In-document Element.querySelectorAll: Universal selector, matching all children of empty element with specified ID: #empty&gt;* 
+PASS In-document Element.querySelector: Universal selector, matching all children of empty element with specified ID: #empty&gt;* 
+PASS In-document Element.querySelectorAll: Universal selector, matching all descendants of element with specified ID: #universal * 
+PASS In-document Element.querySelector: Universal selector, matching all descendants of element with specified ID: #universal * 
+PASS In-document Element.querySelectorAll: Attribute presence selector, matching align attribute with value: .attr-presence-div1[align] 
+PASS In-document Element.querySelector: Attribute presence selector, matching align attribute with value: .attr-presence-div1[align] 
+PASS In-document Element.querySelectorAll: Attribute presence selector, matching align attribute with empty value: .attr-presence-div2[align] 
+PASS In-document Element.querySelector: Attribute presence selector, matching align attribute with empty value: .attr-presence-div2[align] 
+PASS In-document Element.querySelectorAll: Attribute presence selector, matching title attribute, case insensitivity: #attr-presence [TiTlE] 
+PASS In-document Element.querySelector: Attribute presence selector, matching title attribute, case insensitivity: #attr-presence [TiTlE] 
+PASS In-document Element.querySelectorAll: Attribute presence selector, matching custom data-* attribute: [data-attr-presence] 
+PASS In-document Element.querySelector: Attribute presence selector, matching custom data-* attribute: [data-attr-presence] 
+PASS In-document Element.querySelectorAll: Attribute presence selector, not matching attribute with similar name: .attr-presence-div3[align], .attr-presence-div4[align] 
+PASS In-document Element.querySelector: Attribute presence selector, not matching attribute with similar name: .attr-presence-div3[align], .attr-presence-div4[align] 
+PASS In-document Element.querySelectorAll: Attribute presence selector, matching attribute with non-ASCII characters: ul[data-中文] 
+PASS In-document Element.querySelector: Attribute presence selector, matching attribute with non-ASCII characters: ul[data-中文] 
+PASS In-document Element.querySelectorAll: Attribute presence selector, not matching default option without selected attribute: #attr-presence-select1 option[selected] 
+PASS In-document Element.querySelector: Attribute presence selector, not matching default option without selected attribute: #attr-presence-select1 option[selected] 
+PASS In-document Element.querySelectorAll: Attribute presence selector, matching option with selected attribute: #attr-presence-select2 option[selected] 
+PASS In-document Element.querySelector: Attribute presence selector, matching option with selected attribute: #attr-presence-select2 option[selected] 
+PASS In-document Element.querySelectorAll: Attribute presence selector, matching multiple options with selected attributes: #attr-presence-select3 option[selected] 
+PASS In-document Element.querySelector: Attribute presence selector, matching multiple options with selected attributes: #attr-presence-select3 option[selected] 
+PASS In-document Element.querySelectorAll: Attribute value selector, matching align attribute with value: #attr-value [align=&quot;center&quot;] 
+PASS In-document Element.querySelector: Attribute value selector, matching align attribute with value: #attr-value [align=&quot;center&quot;] 
+PASS In-document Element.querySelectorAll: Attribute value selector, matching align attribute with empty value: #attr-value [align=&quot;&quot;] 
+PASS In-document Element.querySelector: Attribute value selector, matching align attribute with empty value: #attr-value [align=&quot;&quot;] 
+PASS In-document Element.querySelectorAll: Attribute value selector, not matching align attribute with partial value: #attr-value [align=&quot;c&quot;] 
+PASS In-document Element.querySelector: Attribute value selector, not matching align attribute with partial value: #attr-value [align=&quot;c&quot;] 
+PASS In-document Element.querySelectorAll: Attribute value selector, not matching align attribute with incorrect value: #attr-value [align=&quot;centera&quot;] 
+PASS In-document Element.querySelector: Attribute value selector, not matching align attribute with incorrect value: #attr-value [align=&quot;centera&quot;] 
+PASS In-document Element.querySelectorAll: Attribute value selector, matching custom data-* attribute with unicode escaped value: [data-attr-value=&quot;\e9&quot;] 
+PASS In-document Element.querySelector: Attribute value selector, matching custom data-* attribute with unicode escaped value: [data-attr-value=&quot;\e9&quot;] 
+PASS In-document Element.querySelectorAll: Attribute value selector, matching custom data-* attribute with escaped character: [data-attr-value_foo=&quot;\e9&quot;] 
+PASS In-document Element.querySelector: Attribute value selector, matching custom data-* attribute with escaped character: [data-attr-value_foo=&quot;\e9&quot;] 
+PASS In-document Element.querySelectorAll: Attribute value selector with single-quoted value, matching multiple inputs with type attributes: #attr-value input[type='hidden'],#attr-value input[type='radio'] 
+PASS In-document Element.querySelector: Attribute value selector with single-quoted value, matching multiple inputs with type attributes: #attr-value input[type='hidden'],#attr-value input[type='radio'] 
+PASS In-document Element.querySelectorAll: Attribute value selector with double-quoted value, matching multiple inputs with type attributes: #attr-value input[type=&quot;hidden&quot;],#attr-value input[type='radio'] 
+PASS In-document Element.querySelector: Attribute value selector with double-quoted value, matching multiple inputs with type attributes: #attr-value input[type=&quot;hidden&quot;],#attr-value input[type='radio'] 
+PASS In-document Element.querySelectorAll: Attribute value selector with unquoted value, matching multiple inputs with type attributes: #attr-value input[type=hidden],#attr-value input[type=radio] 
+PASS In-document Element.querySelector: Attribute value selector with unquoted value, matching multiple inputs with type attributes: #attr-value input[type=hidden],#attr-value input[type=radio] 
+PASS In-document Element.querySelectorAll: Attribute value selector, matching attribute with value using non-ASCII characters: [data-attr-value=中文] 
+PASS In-document Element.querySelector: Attribute value selector, matching attribute with value using non-ASCII characters: [data-attr-value=中文] 
+PASS In-document Element.querySelectorAll: Attribute whitespace-separated list selector, matching class attribute with value: #attr-whitespace [class~=&quot;div1&quot;] 
+PASS In-document Element.querySelector: Attribute whitespace-separated list selector, matching class attribute with value: #attr-whitespace [class~=&quot;div1&quot;] 
+PASS In-document Element.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=&quot;&quot;] 
+PASS In-document Element.querySelector: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=&quot;&quot;] 
+PASS In-document Element.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with partial value: [data-attr-whitespace~=&quot;div&quot;] 
+PASS In-document Element.querySelector: Attribute whitespace-separated list selector, not matching class attribute with partial value: [data-attr-whitespace~=&quot;div&quot;] 
+PASS In-document Element.querySelectorAll: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value: [data-attr-whitespace~=&quot;\0000e9&quot;] 
+PASS In-document Element.querySelector: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value: [data-attr-whitespace~=&quot;\0000e9&quot;] 
+PASS In-document Element.querySelectorAll: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character: [data-attr-whitespace_foo~=&quot;\e9&quot;] 
+PASS In-document Element.querySelector: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character: [data-attr-whitespace_foo~=&quot;\e9&quot;] 
+PASS In-document Element.querySelectorAll: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~='bookmark'],  #attr-whitespace a[rel~='nofollow'] 
+PASS In-document Element.querySelector: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~='bookmark'],  #attr-whitespace a[rel~='nofollow'] 
+PASS In-document Element.querySelectorAll: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=&quot;bookmark&quot;],#attr-whitespace a[rel~='nofollow'] 
+PASS In-document Element.querySelector: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=&quot;bookmark&quot;],#attr-whitespace a[rel~='nofollow'] 
+PASS In-document Element.querySelectorAll: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=bookmark],    #attr-whitespace a[rel~=nofollow] 
+PASS In-document Element.querySelector: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=bookmark],    #attr-whitespace a[rel~=nofollow] 
+PASS In-document Element.querySelectorAll: Attribute whitespace-separated list selector with double-quoted value, not matching value with space: #attr-whitespace a[rel~=&quot;book mark&quot;] 
+PASS In-document Element.querySelector: Attribute whitespace-separated list selector with double-quoted value, not matching value with space: #attr-whitespace a[rel~=&quot;book mark&quot;] 
+PASS In-document Element.querySelectorAll: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters: #attr-whitespace [title~=中文] 
+PASS In-document Element.querySelector: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters: #attr-whitespace [title~=中文] 
+PASS In-document Element.querySelectorAll: Attribute hyphen-separated list selector, not matching unspecified lang attribute: #attr-hyphen-div1[lang|=&quot;en&quot;] 
+PASS In-document Element.querySelector: Attribute hyphen-separated list selector, not matching unspecified lang attribute: #attr-hyphen-div1[lang|=&quot;en&quot;] 
+PASS In-document Element.querySelectorAll: Attribute hyphen-separated list selector, matching lang attribute with exact value: #attr-hyphen-div2[lang|=&quot;fr&quot;] 
+PASS In-document Element.querySelector: Attribute hyphen-separated list selector, matching lang attribute with exact value: #attr-hyphen-div2[lang|=&quot;fr&quot;] 
+PASS In-document Element.querySelectorAll: Attribute hyphen-separated list selector, matching lang attribute with partial value: #attr-hyphen-div3[lang|=&quot;en&quot;] 
+PASS In-document Element.querySelector: Attribute hyphen-separated list selector, matching lang attribute with partial value: #attr-hyphen-div3[lang|=&quot;en&quot;] 
+PASS In-document Element.querySelectorAll: Attribute hyphen-separated list selector, not matching incorrect value: #attr-hyphen-div4[lang|=&quot;es-AR&quot;] 
+PASS In-document Element.querySelector: Attribute hyphen-separated list selector, not matching incorrect value: #attr-hyphen-div4[lang|=&quot;es-AR&quot;] 
+PASS In-document Element.querySelectorAll: Attribute begins with selector, matching href attributes beginning with specified substring: #attr-begins a[href^=&quot;http://www&quot;] 
+PASS In-document Element.querySelector: Attribute begins with selector, matching href attributes beginning with specified substring: #attr-begins a[href^=&quot;http://www&quot;] 
+PASS In-document Element.querySelectorAll: Attribute begins with selector, matching lang attributes beginning with specified substring, : #attr-begins [lang^=&quot;en-&quot;] 
+PASS In-document Element.querySelector: Attribute begins with selector, matching lang attributes beginning with specified substring, : #attr-begins [lang^=&quot;en-&quot;] 
+PASS In-document Element.querySelectorAll: Attribute begins with selector, not matching class attribute not beginning with specified substring: #attr-begins [class^=apple] 
+PASS In-document Element.querySelector: Attribute begins with selector, not matching class attribute not beginning with specified substring: #attr-begins [class^=apple] 
+PASS In-document Element.querySelectorAll: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=' apple'] 
+PASS In-document Element.querySelector: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=' apple'] 
+PASS In-document Element.querySelectorAll: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=&quot; apple&quot;] 
+PASS In-document Element.querySelector: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=&quot; apple&quot;] 
+PASS In-document Element.querySelectorAll: Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring: #attr-begins [class^= apple] 
+PASS In-document Element.querySelector: Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring: #attr-begins [class^= apple] 
+PASS In-document Element.querySelectorAll: Attribute ends with selector, matching href attributes ending with specified substring: #attr-ends a[href$=&quot;.org&quot;] 
+PASS In-document Element.querySelector: Attribute ends with selector, matching href attributes ending with specified substring: #attr-ends a[href$=&quot;.org&quot;] 
+PASS In-document Element.querySelectorAll: Attribute ends with selector, matching lang attributes ending with specified substring, : #attr-ends [lang$=&quot;-CH&quot;] 
+PASS In-document Element.querySelector: Attribute ends with selector, matching lang attributes ending with specified substring, : #attr-ends [lang$=&quot;-CH&quot;] 
+PASS In-document Element.querySelectorAll: Attribute ends with selector, not matching class attribute not ending with specified substring: #attr-ends [class$=apple] 
+PASS In-document Element.querySelector: Attribute ends with selector, not matching class attribute not ending with specified substring: #attr-ends [class$=apple] 
+PASS In-document Element.querySelectorAll: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring: #attr-ends [class$='apple '] 
+PASS In-document Element.querySelector: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring: #attr-ends [class$='apple '] 
+PASS In-document Element.querySelectorAll: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring: #attr-ends [class$=&quot;apple &quot;] 
+PASS In-document Element.querySelector: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring: #attr-ends [class$=&quot;apple &quot;] 
+PASS In-document Element.querySelectorAll: Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring: #attr-ends [class$=apple ] 
+PASS In-document Element.querySelector: Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring: #attr-ends [class$=apple ] 
+PASS In-document Element.querySelectorAll: Attribute contains selector, matching href attributes beginning with specified substring: #attr-contains a[href*=&quot;http://www&quot;] 
+PASS In-document Element.querySelector: Attribute contains selector, matching href attributes beginning with specified substring: #attr-contains a[href*=&quot;http://www&quot;] 
+PASS In-document Element.querySelectorAll: Attribute contains selector, matching href attributes ending with specified substring: #attr-contains a[href*=&quot;.org&quot;] 
+PASS In-document Element.querySelector: Attribute contains selector, matching href attributes ending with specified substring: #attr-contains a[href*=&quot;.org&quot;] 
+PASS In-document Element.querySelectorAll: Attribute contains selector, matching href attributes containing specified substring: #attr-contains a[href*=&quot;.example.&quot;] 
+PASS In-document Element.querySelector: Attribute contains selector, matching href attributes containing specified substring: #attr-contains a[href*=&quot;.example.&quot;] 
+PASS In-document Element.querySelectorAll: Attribute contains selector, matching lang attributes beginning with specified substring, : #attr-contains [lang*=&quot;en-&quot;] 
+PASS In-document Element.querySelector: Attribute contains selector, matching lang attributes beginning with specified substring, : #attr-contains [lang*=&quot;en-&quot;] 
+PASS In-document Element.querySelectorAll: Attribute contains selector, matching lang attributes ending with specified substring, : #attr-contains [lang*=&quot;-CH&quot;] 
+PASS In-document Element.querySelector: Attribute contains selector, matching lang attributes ending with specified substring, : #attr-contains [lang*=&quot;-CH&quot;] 
+PASS In-document Element.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=' apple'] 
+PASS In-document Element.querySelector: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=' apple'] 
+PASS In-document Element.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring: #attr-contains [class*='orange '] 
+PASS In-document Element.querySelector: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring: #attr-contains [class*='orange '] 
+PASS In-document Element.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute containing specified substring: #attr-contains [class*='ple banana ora'] 
+PASS In-document Element.querySelector: Attribute contains selector with single-quoted value, matching class attribute containing specified substring: #attr-contains [class*='ple banana ora'] 
+PASS In-document Element.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=&quot; apple&quot;] 
+PASS In-document Element.querySelector: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=&quot; apple&quot;] 
+PASS In-document Element.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring: #attr-contains [class*=&quot;orange &quot;] 
+PASS In-document Element.querySelector: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring: #attr-contains [class*=&quot;orange &quot;] 
+PASS In-document Element.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute containing specified substring: #attr-contains [class*=&quot;ple banana ora&quot;] 
+PASS In-document Element.querySelector: Attribute contains selector with double-quoted value, matching class attribute containing specified substring: #attr-contains [class*=&quot;ple banana ora&quot;] 
+PASS In-document Element.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring: #attr-contains [class*= apple] 
+PASS In-document Element.querySelector: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring: #attr-contains [class*= apple] 
+PASS In-document Element.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute ending with specified substring: #attr-contains [class*=orange ] 
+PASS In-document Element.querySelector: Attribute contains selector with unquoted value, matching class attribute ending with specified substring: #attr-contains [class*=orange ] 
+PASS In-document Element.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute containing specified substring: #attr-contains [class*= banana ] 
+PASS In-document Element.querySelector: Attribute contains selector with unquoted value, matching class attribute containing specified substring: #attr-contains [class*= banana ] 
+PASS In-document Element.querySelectorAll: :root pseudo-class selector, not matching document root element: :root 
+PASS In-document Element.querySelector: :root pseudo-class selector, not matching document root element: :root 
+PASS In-document Element.querySelectorAll: :nth-child selector, matching the third child element: #pseudo-nth-table1 :nth-child(3) 
+PASS In-document Element.querySelector: :nth-child selector, matching the third child element: #pseudo-nth-table1 :nth-child(3) 
+PASS In-document Element.querySelectorAll: :nth-child selector, matching every third child element: #pseudo-nth li:nth-child(3n) 
+PASS In-document Element.querySelector: :nth-child selector, matching every third child element: #pseudo-nth li:nth-child(3n) 
+PASS In-document Element.querySelectorAll: :nth-child selector, matching every second child element, starting from the fourth: #pseudo-nth li:nth-child(2n+4) 
+PASS In-document Element.querySelector: :nth-child selector, matching every second child element, starting from the fourth: #pseudo-nth li:nth-child(2n+4) 
+PASS In-document Element.querySelectorAll: :nth-child selector, matching every fourth child element, starting from the third: #pseudo-nth-p1 :nth-child(4n-1) 
+PASS In-document Element.querySelector: :nth-child selector, matching every fourth child element, starting from the third: #pseudo-nth-p1 :nth-child(4n-1) 
+PASS In-document Element.querySelectorAll: :nth-last-child selector, matching the third last child element: #pseudo-nth-table1 :nth-last-child(3) 
+PASS In-document Element.querySelector: :nth-last-child selector, matching the third last child element: #pseudo-nth-table1 :nth-last-child(3) 
+PASS In-document Element.querySelectorAll: :nth-last-child selector, matching every third child element from the end: #pseudo-nth li:nth-last-child(3n) 
+PASS In-document Element.querySelector: :nth-last-child selector, matching every third child element from the end: #pseudo-nth li:nth-last-child(3n) 
+PASS In-document Element.querySelectorAll: :nth-last-child selector, matching every second child element from the end, starting from the fourth last: #pseudo-nth li:nth-last-child(2n+4) 
+PASS In-document Element.querySelector: :nth-last-child selector, matching every second child element from the end, starting from the fourth last: #pseudo-nth li:nth-last-child(2n+4) 
+PASS In-document Element.querySelectorAll: :nth-last-child selector, matching every fourth element from the end, starting from the third last: #pseudo-nth-p1 :nth-last-child(4n-1) 
+PASS In-document Element.querySelector: :nth-last-child selector, matching every fourth element from the end, starting from the third last: #pseudo-nth-p1 :nth-last-child(4n-1) 
+PASS In-document Element.querySelectorAll: :nth-of-type selector, matching the third em element: #pseudo-nth-p1 em:nth-of-type(3) 
+PASS In-document Element.querySelector: :nth-of-type selector, matching the third em element: #pseudo-nth-p1 em:nth-of-type(3) 
+PASS In-document Element.querySelectorAll: :nth-of-type selector, matching every second element of their type: #pseudo-nth-p1 :nth-of-type(2n) 
+PASS In-document Element.querySelector: :nth-of-type selector, matching every second element of their type: #pseudo-nth-p1 :nth-of-type(2n) 
+PASS In-document Element.querySelectorAll: :nth-of-type selector, matching every second elemetn of their type, starting from the first: #pseudo-nth-p1 span:nth-of-type(2n-1) 
+PASS In-document Element.querySelector: :nth-of-type selector, matching every second elemetn of their type, starting from the first: #pseudo-nth-p1 span:nth-of-type(2n-1) 
+PASS In-document Element.querySelectorAll: :nth-last-of-type selector, matching the thrid last em element: #pseudo-nth-p1 em:nth-last-of-type(3) 
+PASS In-document Element.querySelector: :nth-last-of-type selector, matching the thrid last em element: #pseudo-nth-p1 em:nth-last-of-type(3) 
+PASS In-document Element.querySelectorAll: :nth-last-of-type selector, matching every second last element of their type: #pseudo-nth-p1 :nth-last-of-type(2n) 
+PASS In-document Element.querySelector: :nth-last-of-type selector, matching every second last element of their type: #pseudo-nth-p1 :nth-last-of-type(2n) 
+PASS In-document Element.querySelectorAll: :nth-last-of-type selector, matching every second last element of their type, starting from the last: #pseudo-nth-p1 span:nth-last-of-type(2n-1) 
+PASS In-document Element.querySelector: :nth-last-of-type selector, matching every second last element of their type, starting from the last: #pseudo-nth-p1 span:nth-last-of-type(2n-1) 
+PASS In-document Element.querySelectorAll: :first-of-type selector, matching the first em element: #pseudo-nth-p1 em:first-of-type 
+PASS In-document Element.querySelector: :first-of-type selector, matching the first em element: #pseudo-nth-p1 em:first-of-type 
+PASS In-document Element.querySelectorAll: :first-of-type selector, matching the first of every type of element: #pseudo-nth-p1 :first-of-type 
+PASS In-document Element.querySelector: :first-of-type selector, matching the first of every type of element: #pseudo-nth-p1 :first-of-type 
+PASS In-document Element.querySelectorAll: :first-of-type selector, matching the first td element in each table row: #pseudo-nth-table1 tr :first-of-type 
+PASS In-document Element.querySelector: :first-of-type selector, matching the first td element in each table row: #pseudo-nth-table1 tr :first-of-type 
+PASS In-document Element.querySelectorAll: :last-of-type selector, matching the last em elemnet: #pseudo-nth-p1 em:last-of-type 
+PASS In-document Element.querySelector: :last-of-type selector, matching the last em elemnet: #pseudo-nth-p1 em:last-of-type 
+PASS In-document Element.querySelectorAll: :last-of-type selector, matching the last of every type of element: #pseudo-nth-p1 :last-of-type 
+PASS In-document Element.querySelector: :last-of-type selector, matching the last of every type of element: #pseudo-nth-p1 :last-of-type 
+PASS In-document Element.querySelectorAll: :last-of-type selector, matching the last td element in each table row: #pseudo-nth-table1 tr :last-of-type 
+PASS In-document Element.querySelector: :last-of-type selector, matching the last td element in each table row: #pseudo-nth-table1 tr :last-of-type 
+PASS In-document Element.querySelectorAll: :first-child pseudo-class selector, matching first child div element: #pseudo-first-child div:first-child 
+PASS In-document Element.querySelector: :first-child pseudo-class selector, matching first child div element: #pseudo-first-child div:first-child 
+PASS In-document Element.querySelectorAll: :first-child pseudo-class selector, doesn't match non-first-child elements: .pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child 
+PASS In-document Element.querySelector: :first-child pseudo-class selector, doesn't match non-first-child elements: .pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child 
+PASS In-document Element.querySelectorAll: :first-child pseudo-class selector, matching first-child of multiple elements: #pseudo-first-child span:first-child 
+PASS In-document Element.querySelector: :first-child pseudo-class selector, matching first-child of multiple elements: #pseudo-first-child span:first-child 
+PASS In-document Element.querySelectorAll: :last-child pseudo-class selector, matching last child div element: #pseudo-last-child div:last-child 
+PASS In-document Element.querySelector: :last-child pseudo-class selector, matching last child div element: #pseudo-last-child div:last-child 
+PASS In-document Element.querySelectorAll: :last-child pseudo-class selector, doesn't match non-last-child elements: .pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child 
+PASS In-document Element.querySelector: :last-child pseudo-class selector, doesn't match non-last-child elements: .pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child 
+PASS In-document Element.querySelectorAll: :last-child pseudo-class selector, matching first-child of multiple elements: #pseudo-last-child span:last-child 
+PASS In-document Element.querySelector: :last-child pseudo-class selector, matching first-child of multiple elements: #pseudo-last-child span:last-child 
+PASS In-document Element.querySelectorAll: :pseudo-only-child pseudo-class selector, matching all only-child elements: #pseudo-only :only-child 
+PASS In-document Element.querySelector: :pseudo-only-child pseudo-class selector, matching all only-child elements: #pseudo-only :only-child 
+PASS In-document Element.querySelectorAll: :pseudo-only-child pseudo-class selector, matching only-child em elements: #pseudo-only em:only-child 
+PASS In-document Element.querySelector: :pseudo-only-child pseudo-class selector, matching only-child em elements: #pseudo-only em:only-child 
+PASS In-document Element.querySelectorAll: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type: #pseudo-only :only-of-type 
+PASS In-document Element.querySelector: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type: #pseudo-only :only-of-type 
+PASS In-document Element.querySelectorAll: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type: #pseudo-only em:only-of-type 
+PASS In-document Element.querySelector: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type: #pseudo-only em:only-of-type 
+PASS In-document Element.querySelectorAll: :empty pseudo-class selector, matching empty p elements: #pseudo-empty p:empty 
+PASS In-document Element.querySelector: :empty pseudo-class selector, matching empty p elements: #pseudo-empty p:empty 
+PASS In-document Element.querySelectorAll: :empty pseudo-class selector, matching all empty elements: #pseudo-empty :empty 
+PASS In-document Element.querySelector: :empty pseudo-class selector, matching all empty elements: #pseudo-empty :empty 
+PASS In-document Element.querySelectorAll: :link and :visited pseudo-class selectors, matching a and area elements with href attributes: #pseudo-link :link, #pseudo-link :visited 
+PASS In-document Element.querySelector: :link and :visited pseudo-class selectors, matching a and area elements with href attributes: #pseudo-link :link, #pseudo-link :visited 
+PASS In-document Element.querySelectorAll: :link and :visited pseudo-class selectors, not matching link elements with href attributes: #head :link, #head :visited 
+PASS In-document Element.querySelector: :link and :visited pseudo-class selectors, not matching link elements with href attributes: #head :link, #head :visited 
+PASS In-document Element.querySelectorAll: :link and :visited pseudo-class selectors, chained, mutually exclusive pseudo-classes match nothing: :link:visited 
+PASS In-document Element.querySelector: :link and :visited pseudo-class selectors, chained, mutually exclusive pseudo-classes match nothing: :link:visited 
+PASS In-document Element.querySelectorAll: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target 
+PASS In-document Element.querySelector: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target 
+PASS In-document Element.querySelectorAll: :lang pseudo-class selector, matching inherited language: #pseudo-lang-div1:lang(en) 
+PASS In-document Element.querySelector: :lang pseudo-class selector, matching inherited language: #pseudo-lang-div1:lang(en) 
+PASS In-document Element.querySelectorAll: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) 
+PASS In-document Element.querySelector: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) 
+PASS In-document Element.querySelectorAll: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) 
+PASS In-document Element.querySelector: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) 
+PASS In-document Element.querySelectorAll: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) 
+PASS In-document Element.querySelector: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) 
+PASS In-document Element.querySelectorAll: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled 
+PASS In-document Element.querySelector: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled 
+PASS In-document Element.querySelectorAll: :enabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled 
+PASS In-document Element.querySelector: :enabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled 
+PASS In-document Element.querySelectorAll: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked 
+PASS In-document Element.querySelector: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked 
+PASS In-document Element.querySelectorAll: :not pseudo-class selector, matching : #not&gt;:not(div) 
+PASS In-document Element.querySelector: :not pseudo-class selector, matching : #not&gt;:not(div) 
+PASS In-document Element.querySelectorAll: :not pseudo-class selector, matching : #not * :not(:first-child) 
+PASS In-document Element.querySelector: :not pseudo-class selector, matching : #not * :not(:first-child) 
+PASS In-document Element.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*) 
+PASS In-document Element.querySelector: :not pseudo-class selector, matching nothing: :not(*) 
+PASS In-document Element.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*|*) 
+PASS In-document Element.querySelector: :not pseudo-class selector, matching nothing: :not(*|*) 
+PASS In-document Element.querySelectorAll: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line 
+PASS In-document Element.querySelector: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line 
+PASS In-document Element.querySelectorAll: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line 
+PASS In-document Element.querySelector: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line 
+PASS In-document Element.querySelectorAll: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter 
+PASS In-document Element.querySelector: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter 
+PASS In-document Element.querySelectorAll: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter 
+PASS In-document Element.querySelector: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter 
+PASS In-document Element.querySelectorAll: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before 
+PASS In-document Element.querySelector: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before 
+PASS In-document Element.querySelectorAll: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before 
+PASS In-document Element.querySelector: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before 
+PASS In-document Element.querySelectorAll: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after 
+PASS In-document Element.querySelector: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after 
+PASS In-document Element.querySelectorAll: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after 
+PASS In-document Element.querySelector: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after 
+PASS In-document Element.querySelectorAll: Class selector, matching element with specified class: .class-p 
+PASS In-document Element.querySelector: Class selector, matching element with specified class: .class-p 
+PASS In-document Element.querySelectorAll: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana 
+PASS In-document Element.querySelector: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana 
+PASS In-document Element.querySelectorAll: Class Selector, chained, with type selector: div.apple.banana.orange 
+PASS In-document Element.querySelector: Class Selector, chained, with type selector: div.apple.banana.orange 
+PASS In-document Element.querySelectorAll: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
+PASS In-document Element.querySelector: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
+PASS In-document Element.querySelectorAll: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
+PASS In-document Element.querySelector: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
+PASS In-document Element.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
+PASS In-document Element.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
+PASS In-document Element.querySelectorAll: Class selector, matching element with class with escaped character: .foo\:bar 
+PASS In-document Element.querySelector: Class selector, matching element with class with escaped character: .foo\:bar 
+PASS In-document Element.querySelectorAll: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar 
+PASS In-document Element.querySelector: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar 
+PASS In-document Element.querySelectorAll: ID selector, matching element with specified id: #id #id-div1 
+PASS In-document Element.querySelector: ID selector, matching element with specified id: #id #id-div1 
+PASS In-document Element.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div1 
+PASS In-document Element.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div1 
+PASS In-document Element.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div2 
+PASS In-document Element.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div2 
+PASS In-document Element.querySelectorAll: ID Selector, chained, with type selector: div#id-div1, div#id-div2 
+PASS In-document Element.querySelector: ID Selector, chained, with type selector: div#id-div1, div#id-div2 
+PASS In-document Element.querySelectorAll: ID selector, not matching non-existent descendant: #id #none 
+PASS In-document Element.querySelector: ID selector, not matching non-existent descendant: #id #none 
+PASS In-document Element.querySelectorAll: ID selector, not matching non-existent ancestor: #none #id-div1 
+PASS In-document Element.querySelector: ID selector, not matching non-existent ancestor: #none #id-div1 
+PASS In-document Element.querySelectorAll: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
+PASS In-document Element.querySelector: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
+PASS In-document Element.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
+PASS In-document Element.querySelector: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
+PASS In-document Element.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北 
+PASS In-document Element.querySelector: ID selector, matching id value using non-ASCII characters: #台北 
+PASS In-document Element.querySelectorAll: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
+PASS In-document Element.querySelector: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
+PASS In-document Element.querySelectorAll: ID selector, matching element with id with escaped character: #\#foo\:bar 
+PASS In-document Element.querySelector: ID selector, matching element with id with escaped character: #\#foo\:bar 
+PASS In-document Element.querySelectorAll: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar 
+PASS In-document Element.querySelector: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar 
+PASS In-document Element.querySelectorAll: Namespace selector, matching element with any namespace: #any-namespace *|div 
+PASS In-document Element.querySelector: Namespace selector, matching element with any namespace: #any-namespace *|div 
+FAIL In-document Element.querySelectorAll: Namespace selector, matching div elements in no namespace only: #no-namespace |div assert_equals: The method should return the expected number of matches. expected 1 but got 4
+FAIL In-document Element.querySelector: Namespace selector, matching div elements in no namespace only: #no-namespace |div assert_equals: The method should return the first match. expected &quot;no-namespace-div3&quot; but got &quot;no-namespace-div1&quot;
+FAIL In-document Element.querySelectorAll: Namespace selector, matching any elements in no namespace only: #no-namespace |* assert_equals: The method should return the expected number of matches. expected 1 but got 4
+FAIL In-document Element.querySelector: Namespace selector, matching any elements in no namespace only: #no-namespace |* assert_equals: The method should return the first match. expected &quot;no-namespace-div3&quot; but got &quot;no-namespace-div1&quot;
+PASS In-document Element.querySelectorAll: Descendant combinator, matching element that is a descendant of an element with id: #descendant div 
+PASS In-document Element.querySelector: Descendant combinator, matching element that is a descendant of an element with id: #descendant div 
+PASS In-document Element.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: body #descendant-div1 
+PASS In-document Element.querySelector: Descendant combinator, matching element with id that is a descendant of an element: body #descendant-div1 
+PASS In-document Element.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 
+PASS In-document Element.querySelector: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 
+PASS In-document Element.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 
+PASS In-document Element.querySelector: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 
+PASS In-document Element.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 
+PASS In-document Element.querySelector: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 
+PASS In-document Element.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 
+PASS In-document Element.querySelector: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 
+PASS In-document Element.querySelectorAll: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 
+PASS In-document Element.querySelector: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 
+PASS In-document Element.querySelectorAll: Descendant combinator, whitespace characters: #descendant        
+#descendant-div2 
+PASS In-document Element.querySelector: Descendant combinator, whitespace characters: #descendant        
+#descendant-div2 
+PASS In-document Element.querySelectorAll: Child combinator, matching element that is a child of an element with id: #child&gt;div 
+PASS In-document Element.querySelector: Child combinator, matching element that is a child of an element with id: #child&gt;div 
+PASS In-document Element.querySelectorAll: Child combinator, matching element with id that is a child of an element: div&gt;#child-div1 
+PASS In-document Element.querySelector: Child combinator, matching element with id that is a child of an element: div&gt;#child-div1 
+PASS In-document Element.querySelectorAll: Child combinator, matching element with id that is a child of an element with id: #child&gt;#child-div1 
+PASS In-document Element.querySelector: Child combinator, matching element with id that is a child of an element with id: #child&gt;#child-div1 
+PASS In-document Element.querySelectorAll: Child combinator, matching element with id that is a child of an element with class: #child-div1&gt;.child-div2 
+PASS In-document Element.querySelector: Child combinator, matching element with id that is a child of an element with class: #child-div1&gt;.child-div2 
+PASS In-document Element.querySelectorAll: Child combinator, matching element with class that is a child of an element with class: .child-div1&gt;.child-div2 
+PASS In-document Element.querySelector: Child combinator, matching element with class that is a child of an element with class: .child-div1&gt;.child-div2 
+PASS In-document Element.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with id: #child&gt;#child-div3 
+PASS In-document Element.querySelector: Child combinator, not matching element with id that is not a child of an element with id: #child&gt;#child-div3 
+PASS In-document Element.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with class: #child-div1&gt;.child-div3 
+PASS In-document Element.querySelector: Child combinator, not matching element with id that is not a child of an element with class: #child-div1&gt;.child-div3 
+PASS In-document Element.querySelectorAll: Child combinator, not matching element with class that is not a child of an element with class: .child-div1&gt;.child-div3 
+PASS In-document Element.querySelector: Child combinator, not matching element with class that is not a child of an element with class: .child-div1&gt;.child-div3 
+PASS In-document Element.querySelectorAll: Child combinator, surrounded by whitespace: #child-div1        
+&gt;        
+#child-div2 
+PASS In-document Element.querySelector: Child combinator, surrounded by whitespace: #child-div1        
+&gt;        
+#child-div2 
+PASS In-document Element.querySelectorAll: Child combinator, whitespace after: #child-div1&gt;        
+#child-div2 
+PASS In-document Element.querySelector: Child combinator, whitespace after: #child-div1&gt;        
+#child-div2 
+PASS In-document Element.querySelectorAll: Child combinator, whitespace before: #child-div1        
+&gt;#child-div2 
+PASS In-document Element.querySelector: Child combinator, whitespace before: #child-div1        
+&gt;#child-div2 
+PASS In-document Element.querySelectorAll: Child combinator, no whitespace: #child-div1&gt;#child-div2 
+PASS In-document Element.querySelector: Child combinator, no whitespace: #child-div1&gt;#child-div2 
+PASS In-document Element.querySelectorAll: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div 
+PASS In-document Element.querySelector: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div 
+PASS In-document Element.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 
+PASS In-document Element.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 
+PASS In-document Element.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 
+PASS In-document Element.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 
+PASS In-document Element.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 
+PASS In-document Element.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 
+PASS In-document Element.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 
+PASS In-document Element.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 
+PASS In-document Element.querySelectorAll: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p 
+PASS In-document Element.querySelector: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p 
+PASS In-document Element.querySelectorAll: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 
+PASS In-document Element.querySelector: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 
+PASS In-document Element.querySelectorAll: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2        
++        
+#adjacent-p3 
+PASS In-document Element.querySelector: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2        
++        
+#adjacent-p3 
+PASS In-document Element.querySelectorAll: Adjacent sibling combinator, whitespace after: #adjacent-p2+        
+#adjacent-p3 
+PASS In-document Element.querySelector: Adjacent sibling combinator, whitespace after: #adjacent-p2+        
+#adjacent-p3 
+PASS In-document Element.querySelectorAll: Adjacent sibling combinator, whitespace before: #adjacent-p2        
++#adjacent-p3 
+PASS In-document Element.querySelector: Adjacent sibling combinator, whitespace before: #adjacent-p2        
++#adjacent-p3 
+PASS In-document Element.querySelectorAll: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 
+PASS In-document Element.querySelector: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 
+PASS In-document Element.querySelectorAll: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div 
+PASS In-document Element.querySelector: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div 
+PASS In-document Element.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 
+PASS In-document Element.querySelector: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 
+PASS In-document Element.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 
+PASS In-document Element.querySelector: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 
+PASS In-document Element.querySelectorAll: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div 
+PASS In-document Element.querySelector: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div 
+PASS In-document Element.querySelectorAll: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p 
+PASS In-document Element.querySelector: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p 
+PASS In-document Element.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling&gt;p~div 
+PASS In-document Element.querySelector: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling&gt;p~div 
+PASS In-document Element.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 
+PASS In-document Element.querySelector: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 
+PASS In-document Element.querySelectorAll: General sibling combinator, surrounded by whitespace: #sibling-p2        
+~        
+#sibling-p3 
+PASS In-document Element.querySelector: General sibling combinator, surrounded by whitespace: #sibling-p2        
+~        
+#sibling-p3 
+PASS In-document Element.querySelectorAll: General sibling combinator, whitespace after: #sibling-p2~        
+#sibling-p3 
+PASS In-document Element.querySelector: General sibling combinator, whitespace after: #sibling-p2~        
+#sibling-p3 
+PASS In-document Element.querySelectorAll: General sibling combinator, whitespace before: #sibling-p2        
+~#sibling-p3 
+PASS In-document Element.querySelector: General sibling combinator, whitespace before: #sibling-p2        
+~#sibling-p3 
+PASS In-document Element.querySelectorAll: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 
+PASS In-document Element.querySelector: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 
+PASS In-document Element.querySelectorAll: Syntax, group of selectors separator, surrounded by whitespace: #group em        

+,        

+#group strong 
+PASS In-document Element.querySelector: Syntax, group of selectors separator, surrounded by whitespace: #group em        

+,        

+#group strong 
+PASS In-document Element.querySelectorAll: Syntax, group of selectors separator, whitespace after: #group em,        
+#group strong 
+PASS In-document Element.querySelector: Syntax, group of selectors separator, whitespace after: #group em,        
+#group strong 
+PASS In-document Element.querySelectorAll: Syntax, group of selectors separator, whitespace before: #group em        
+,#group strong 
+PASS In-document Element.querySelector: Syntax, group of selectors separator, whitespace before: #group em        
+,#group strong 
+PASS In-document Element.querySelectorAll: Syntax, group of selectors separator, no whitespace: #group em,#group strong 
+PASS In-document Element.querySelector: Syntax, group of selectors separator, no whitespace: #group em,#group strong 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesParentNodequerySelectorAllxhtmlexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesParentNodequerySelectorAllxhtmlexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-xhtml-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/ParentNode-querySelector-All-xhtml-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-xhtml-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-xhtml-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,2022 @@
</span><ins>+This test requires JavaScript.
+
+PASS Selectors-API Test Suite: XHTML 
+PASS Document supports querySelector 
+PASS Document supports querySelectorAll 
+PASS Document.querySelectorAll returns NodeList instance 
+PASS Detached Element supports querySelector 
+PASS Detached Element supports querySelectorAll 
+PASS Detached Element.querySelectorAll returns NodeList instance 
+PASS Fragment supports querySelector 
+PASS Fragment supports querySelectorAll 
+PASS Fragment.querySelectorAll returns NodeList instance 
+PASS In-document Element supports querySelector 
+PASS In-document Element supports querySelectorAll 
+PASS In-document Element.querySelectorAll returns NodeList instance 
+PASS Document.querySelectorAll null 
+PASS Document.querySelectorAll undefined 
+PASS Document.querySelectorAll no parameter 
+PASS Document.querySelector null 
+PASS Document.querySelector undefined 
+PASS Document.querySelector no parameter 
+PASS Document.querySelectorAll tree order 
+PASS Detached Element.querySelectorAll null 
+PASS Detached Element.querySelectorAll undefined 
+PASS Detached Element.querySelectorAll no parameter 
+PASS Detached Element.querySelector null 
+PASS Detached Element.querySelector undefined 
+PASS Detached Element.querySelector no parameter 
+PASS Detached Element.querySelectorAll tree order 
+PASS Fragment.querySelectorAll null 
+PASS Fragment.querySelectorAll undefined 
+PASS Fragment.querySelectorAll no parameter 
+PASS Fragment.querySelector null 
+PASS Fragment.querySelector undefined 
+PASS Fragment.querySelector no parameter 
+PASS Fragment.querySelectorAll tree order 
+PASS In-document Element.querySelectorAll null 
+PASS In-document Element.querySelectorAll undefined 
+PASS In-document Element.querySelectorAll no parameter 
+PASS In-document Element.querySelector null 
+PASS In-document Element.querySelector undefined 
+PASS In-document Element.querySelector no parameter 
+PASS In-document Element.querySelectorAll tree order 
+PASS Document: static NodeList 
+PASS Document: new NodeList 
+PASS Detached Element: static NodeList 
+PASS Detached Element: new NodeList 
+PASS Fragment: static NodeList 
+PASS Fragment: new NodeList 
+PASS In-document Element: static NodeList 
+PASS In-document Element: new NodeList 
+PASS Document.querySelector: Empty String:  
+PASS Document.querySelectorAll: Empty String:  
+PASS Document.querySelector: Invalid character: [ 
+PASS Document.querySelectorAll: Invalid character: [ 
+PASS Document.querySelector: Invalid character: ] 
+PASS Document.querySelectorAll: Invalid character: ] 
+PASS Document.querySelector: Invalid character: ( 
+PASS Document.querySelectorAll: Invalid character: ( 
+PASS Document.querySelector: Invalid character: ) 
+PASS Document.querySelectorAll: Invalid character: ) 
+PASS Document.querySelector: Invalid character: { 
+PASS Document.querySelectorAll: Invalid character: { 
+PASS Document.querySelector: Invalid character: } 
+PASS Document.querySelectorAll: Invalid character: } 
+PASS Document.querySelector: Invalid character: &lt; 
+PASS Document.querySelectorAll: Invalid character: &lt; 
+PASS Document.querySelector: Invalid character: &gt; 
+PASS Document.querySelectorAll: Invalid character: &gt; 
+PASS Document.querySelector: Invalid ID: # 
+PASS Document.querySelectorAll: Invalid ID: # 
+PASS Document.querySelector: Invalid group of selectors: div, 
+PASS Document.querySelectorAll: Invalid group of selectors: div, 
+PASS Document.querySelector: Invalid class: . 
+PASS Document.querySelectorAll: Invalid class: . 
+PASS Document.querySelector: Invalid class: .5cm 
+PASS Document.querySelectorAll: Invalid class: .5cm 
+PASS Document.querySelector: Invalid class: ..test 
+PASS Document.querySelectorAll: Invalid class: ..test 
+PASS Document.querySelector: Invalid class: .foo..quux 
+PASS Document.querySelectorAll: Invalid class: .foo..quux 
+PASS Document.querySelector: Invalid class: .bar. 
+PASS Document.querySelectorAll: Invalid class: .bar. 
+PASS Document.querySelector: Invalid combinator: div &amp; address, p 
+PASS Document.querySelectorAll: Invalid combinator: div &amp; address, p 
+FAIL Document.querySelector: Invalid combinator: div &gt;&gt; address, p assert_throws: function &quot;function () {
+        root.querySelector(q)
+      }&quot; did not throw
+FAIL Document.querySelectorAll: Invalid combinator: div &gt;&gt; address, p assert_throws: function &quot;function () {
+        root.querySelectorAll(q)
+      }&quot; did not throw
+PASS Document.querySelector: Invalid combinator: div ++ address, p 
+PASS Document.querySelectorAll: Invalid combinator: div ++ address, p 
+PASS Document.querySelector: Invalid combinator: div ~~ address, p 
+PASS Document.querySelectorAll: Invalid combinator: div ~~ address, p 
+PASS Document.querySelector: Invalid [att=value] selector: [*=test] 
+PASS Document.querySelectorAll: Invalid [att=value] selector: [*=test] 
+PASS Document.querySelector: Invalid [att=value] selector: [*|*=test] 
+PASS Document.querySelectorAll: Invalid [att=value] selector: [*|*=test] 
+PASS Document.querySelector: Invalid [att=value] selector: [class= space unquoted ] 
+PASS Document.querySelectorAll: Invalid [att=value] selector: [class= space unquoted ] 
+PASS Document.querySelector: Unknown pseudo-class: div:example 
+PASS Document.querySelectorAll: Unknown pseudo-class: div:example 
+PASS Document.querySelector: Unknown pseudo-class: :example 
+PASS Document.querySelectorAll: Unknown pseudo-class: :example 
+PASS Document.querySelector: Unknown pseudo-element: div::example 
+PASS Document.querySelectorAll: Unknown pseudo-element: div::example 
+PASS Document.querySelector: Unknown pseudo-element: ::example 
+PASS Document.querySelectorAll: Unknown pseudo-element: ::example 
+PASS Document.querySelector: Invalid pseudo-element: :::before 
+PASS Document.querySelectorAll: Invalid pseudo-element: :::before 
+FAIL Document.querySelector: Undeclared namespace: ns|div assert_throws: function &quot;function () {
+        root.querySelector(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+FAIL Document.querySelectorAll: Undeclared namespace: ns|div assert_throws: function &quot;function () {
+        root.querySelectorAll(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+FAIL Document.querySelector: Undeclared namespace: :not(ns|div) assert_throws: function &quot;function () {
+        root.querySelector(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+FAIL Document.querySelectorAll: Undeclared namespace: :not(ns|div) assert_throws: function &quot;function () {
+        root.querySelectorAll(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+PASS Document.querySelector: Invalid namespace: ^|div 
+PASS Document.querySelectorAll: Invalid namespace: ^|div 
+PASS Document.querySelector: Invalid namespace: $|div 
+PASS Document.querySelectorAll: Invalid namespace: $|div 
+PASS Detached Element.querySelector: Empty String:  
+PASS Detached Element.querySelectorAll: Empty String:  
+PASS Detached Element.querySelector: Invalid character: [ 
+PASS Detached Element.querySelectorAll: Invalid character: [ 
+PASS Detached Element.querySelector: Invalid character: ] 
+PASS Detached Element.querySelectorAll: Invalid character: ] 
+PASS Detached Element.querySelector: Invalid character: ( 
+PASS Detached Element.querySelectorAll: Invalid character: ( 
+PASS Detached Element.querySelector: Invalid character: ) 
+PASS Detached Element.querySelectorAll: Invalid character: ) 
+PASS Detached Element.querySelector: Invalid character: { 
+PASS Detached Element.querySelectorAll: Invalid character: { 
+PASS Detached Element.querySelector: Invalid character: } 
+PASS Detached Element.querySelectorAll: Invalid character: } 
+PASS Detached Element.querySelector: Invalid character: &lt; 
+PASS Detached Element.querySelectorAll: Invalid character: &lt; 
+PASS Detached Element.querySelector: Invalid character: &gt; 
+PASS Detached Element.querySelectorAll: Invalid character: &gt; 
+PASS Detached Element.querySelector: Invalid ID: # 
+PASS Detached Element.querySelectorAll: Invalid ID: # 
+PASS Detached Element.querySelector: Invalid group of selectors: div, 
+PASS Detached Element.querySelectorAll: Invalid group of selectors: div, 
+PASS Detached Element.querySelector: Invalid class: . 
+PASS Detached Element.querySelectorAll: Invalid class: . 
+PASS Detached Element.querySelector: Invalid class: .5cm 
+PASS Detached Element.querySelectorAll: Invalid class: .5cm 
+PASS Detached Element.querySelector: Invalid class: ..test 
+PASS Detached Element.querySelectorAll: Invalid class: ..test 
+PASS Detached Element.querySelector: Invalid class: .foo..quux 
+PASS Detached Element.querySelectorAll: Invalid class: .foo..quux 
+PASS Detached Element.querySelector: Invalid class: .bar. 
+PASS Detached Element.querySelectorAll: Invalid class: .bar. 
+PASS Detached Element.querySelector: Invalid combinator: div &amp; address, p 
+PASS Detached Element.querySelectorAll: Invalid combinator: div &amp; address, p 
+FAIL Detached Element.querySelector: Invalid combinator: div &gt;&gt; address, p assert_throws: function &quot;function () {
+        root.querySelector(q)
+      }&quot; did not throw
+FAIL Detached Element.querySelectorAll: Invalid combinator: div &gt;&gt; address, p assert_throws: function &quot;function () {
+        root.querySelectorAll(q)
+      }&quot; did not throw
+PASS Detached Element.querySelector: Invalid combinator: div ++ address, p 
+PASS Detached Element.querySelectorAll: Invalid combinator: div ++ address, p 
+PASS Detached Element.querySelector: Invalid combinator: div ~~ address, p 
+PASS Detached Element.querySelectorAll: Invalid combinator: div ~~ address, p 
+PASS Detached Element.querySelector: Invalid [att=value] selector: [*=test] 
+PASS Detached Element.querySelectorAll: Invalid [att=value] selector: [*=test] 
+PASS Detached Element.querySelector: Invalid [att=value] selector: [*|*=test] 
+PASS Detached Element.querySelectorAll: Invalid [att=value] selector: [*|*=test] 
+PASS Detached Element.querySelector: Invalid [att=value] selector: [class= space unquoted ] 
+PASS Detached Element.querySelectorAll: Invalid [att=value] selector: [class= space unquoted ] 
+PASS Detached Element.querySelector: Unknown pseudo-class: div:example 
+PASS Detached Element.querySelectorAll: Unknown pseudo-class: div:example 
+PASS Detached Element.querySelector: Unknown pseudo-class: :example 
+PASS Detached Element.querySelectorAll: Unknown pseudo-class: :example 
+PASS Detached Element.querySelector: Unknown pseudo-element: div::example 
+PASS Detached Element.querySelectorAll: Unknown pseudo-element: div::example 
+PASS Detached Element.querySelector: Unknown pseudo-element: ::example 
+PASS Detached Element.querySelectorAll: Unknown pseudo-element: ::example 
+PASS Detached Element.querySelector: Invalid pseudo-element: :::before 
+PASS Detached Element.querySelectorAll: Invalid pseudo-element: :::before 
+FAIL Detached Element.querySelector: Undeclared namespace: ns|div assert_throws: function &quot;function () {
+        root.querySelector(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+FAIL Detached Element.querySelectorAll: Undeclared namespace: ns|div assert_throws: function &quot;function () {
+        root.querySelectorAll(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+FAIL Detached Element.querySelector: Undeclared namespace: :not(ns|div) assert_throws: function &quot;function () {
+        root.querySelector(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+FAIL Detached Element.querySelectorAll: Undeclared namespace: :not(ns|div) assert_throws: function &quot;function () {
+        root.querySelectorAll(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+PASS Detached Element.querySelector: Invalid namespace: ^|div 
+PASS Detached Element.querySelectorAll: Invalid namespace: ^|div 
+PASS Detached Element.querySelector: Invalid namespace: $|div 
+PASS Detached Element.querySelectorAll: Invalid namespace: $|div 
+PASS Fragment.querySelector: Empty String:  
+PASS Fragment.querySelectorAll: Empty String:  
+PASS Fragment.querySelector: Invalid character: [ 
+PASS Fragment.querySelectorAll: Invalid character: [ 
+PASS Fragment.querySelector: Invalid character: ] 
+PASS Fragment.querySelectorAll: Invalid character: ] 
+PASS Fragment.querySelector: Invalid character: ( 
+PASS Fragment.querySelectorAll: Invalid character: ( 
+PASS Fragment.querySelector: Invalid character: ) 
+PASS Fragment.querySelectorAll: Invalid character: ) 
+PASS Fragment.querySelector: Invalid character: { 
+PASS Fragment.querySelectorAll: Invalid character: { 
+PASS Fragment.querySelector: Invalid character: } 
+PASS Fragment.querySelectorAll: Invalid character: } 
+PASS Fragment.querySelector: Invalid character: &lt; 
+PASS Fragment.querySelectorAll: Invalid character: &lt; 
+PASS Fragment.querySelector: Invalid character: &gt; 
+PASS Fragment.querySelectorAll: Invalid character: &gt; 
+PASS Fragment.querySelector: Invalid ID: # 
+PASS Fragment.querySelectorAll: Invalid ID: # 
+PASS Fragment.querySelector: Invalid group of selectors: div, 
+PASS Fragment.querySelectorAll: Invalid group of selectors: div, 
+PASS Fragment.querySelector: Invalid class: . 
+PASS Fragment.querySelectorAll: Invalid class: . 
+PASS Fragment.querySelector: Invalid class: .5cm 
+PASS Fragment.querySelectorAll: Invalid class: .5cm 
+PASS Fragment.querySelector: Invalid class: ..test 
+PASS Fragment.querySelectorAll: Invalid class: ..test 
+PASS Fragment.querySelector: Invalid class: .foo..quux 
+PASS Fragment.querySelectorAll: Invalid class: .foo..quux 
+PASS Fragment.querySelector: Invalid class: .bar. 
+PASS Fragment.querySelectorAll: Invalid class: .bar. 
+PASS Fragment.querySelector: Invalid combinator: div &amp; address, p 
+PASS Fragment.querySelectorAll: Invalid combinator: div &amp; address, p 
+FAIL Fragment.querySelector: Invalid combinator: div &gt;&gt; address, p assert_throws: function &quot;function () {
+        root.querySelector(q)
+      }&quot; did not throw
+FAIL Fragment.querySelectorAll: Invalid combinator: div &gt;&gt; address, p assert_throws: function &quot;function () {
+        root.querySelectorAll(q)
+      }&quot; did not throw
+PASS Fragment.querySelector: Invalid combinator: div ++ address, p 
+PASS Fragment.querySelectorAll: Invalid combinator: div ++ address, p 
+PASS Fragment.querySelector: Invalid combinator: div ~~ address, p 
+PASS Fragment.querySelectorAll: Invalid combinator: div ~~ address, p 
+PASS Fragment.querySelector: Invalid [att=value] selector: [*=test] 
+PASS Fragment.querySelectorAll: Invalid [att=value] selector: [*=test] 
+PASS Fragment.querySelector: Invalid [att=value] selector: [*|*=test] 
+PASS Fragment.querySelectorAll: Invalid [att=value] selector: [*|*=test] 
+PASS Fragment.querySelector: Invalid [att=value] selector: [class= space unquoted ] 
+PASS Fragment.querySelectorAll: Invalid [att=value] selector: [class= space unquoted ] 
+PASS Fragment.querySelector: Unknown pseudo-class: div:example 
+PASS Fragment.querySelectorAll: Unknown pseudo-class: div:example 
+PASS Fragment.querySelector: Unknown pseudo-class: :example 
+PASS Fragment.querySelectorAll: Unknown pseudo-class: :example 
+PASS Fragment.querySelector: Unknown pseudo-element: div::example 
+PASS Fragment.querySelectorAll: Unknown pseudo-element: div::example 
+PASS Fragment.querySelector: Unknown pseudo-element: ::example 
+PASS Fragment.querySelectorAll: Unknown pseudo-element: ::example 
+PASS Fragment.querySelector: Invalid pseudo-element: :::before 
+PASS Fragment.querySelectorAll: Invalid pseudo-element: :::before 
+FAIL Fragment.querySelector: Undeclared namespace: ns|div assert_throws: function &quot;function () {
+        root.querySelector(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+FAIL Fragment.querySelectorAll: Undeclared namespace: ns|div assert_throws: function &quot;function () {
+        root.querySelectorAll(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+FAIL Fragment.querySelector: Undeclared namespace: :not(ns|div) assert_throws: function &quot;function () {
+        root.querySelector(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+FAIL Fragment.querySelectorAll: Undeclared namespace: :not(ns|div) assert_throws: function &quot;function () {
+        root.querySelectorAll(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+PASS Fragment.querySelector: Invalid namespace: ^|div 
+PASS Fragment.querySelectorAll: Invalid namespace: ^|div 
+PASS Fragment.querySelector: Invalid namespace: $|div 
+PASS Fragment.querySelectorAll: Invalid namespace: $|div 
+PASS In-document Element.querySelector: Empty String:  
+PASS In-document Element.querySelectorAll: Empty String:  
+PASS In-document Element.querySelector: Invalid character: [ 
+PASS In-document Element.querySelectorAll: Invalid character: [ 
+PASS In-document Element.querySelector: Invalid character: ] 
+PASS In-document Element.querySelectorAll: Invalid character: ] 
+PASS In-document Element.querySelector: Invalid character: ( 
+PASS In-document Element.querySelectorAll: Invalid character: ( 
+PASS In-document Element.querySelector: Invalid character: ) 
+PASS In-document Element.querySelectorAll: Invalid character: ) 
+PASS In-document Element.querySelector: Invalid character: { 
+PASS In-document Element.querySelectorAll: Invalid character: { 
+PASS In-document Element.querySelector: Invalid character: } 
+PASS In-document Element.querySelectorAll: Invalid character: } 
+PASS In-document Element.querySelector: Invalid character: &lt; 
+PASS In-document Element.querySelectorAll: Invalid character: &lt; 
+PASS In-document Element.querySelector: Invalid character: &gt; 
+PASS In-document Element.querySelectorAll: Invalid character: &gt; 
+PASS In-document Element.querySelector: Invalid ID: # 
+PASS In-document Element.querySelectorAll: Invalid ID: # 
+PASS In-document Element.querySelector: Invalid group of selectors: div, 
+PASS In-document Element.querySelectorAll: Invalid group of selectors: div, 
+PASS In-document Element.querySelector: Invalid class: . 
+PASS In-document Element.querySelectorAll: Invalid class: . 
+PASS In-document Element.querySelector: Invalid class: .5cm 
+PASS In-document Element.querySelectorAll: Invalid class: .5cm 
+PASS In-document Element.querySelector: Invalid class: ..test 
+PASS In-document Element.querySelectorAll: Invalid class: ..test 
+PASS In-document Element.querySelector: Invalid class: .foo..quux 
+PASS In-document Element.querySelectorAll: Invalid class: .foo..quux 
+PASS In-document Element.querySelector: Invalid class: .bar. 
+PASS In-document Element.querySelectorAll: Invalid class: .bar. 
+PASS In-document Element.querySelector: Invalid combinator: div &amp; address, p 
+PASS In-document Element.querySelectorAll: Invalid combinator: div &amp; address, p 
+FAIL In-document Element.querySelector: Invalid combinator: div &gt;&gt; address, p assert_throws: function &quot;function () {
+        root.querySelector(q)
+      }&quot; did not throw
+FAIL In-document Element.querySelectorAll: Invalid combinator: div &gt;&gt; address, p assert_throws: function &quot;function () {
+        root.querySelectorAll(q)
+      }&quot; did not throw
+PASS In-document Element.querySelector: Invalid combinator: div ++ address, p 
+PASS In-document Element.querySelectorAll: Invalid combinator: div ++ address, p 
+PASS In-document Element.querySelector: Invalid combinator: div ~~ address, p 
+PASS In-document Element.querySelectorAll: Invalid combinator: div ~~ address, p 
+PASS In-document Element.querySelector: Invalid [att=value] selector: [*=test] 
+PASS In-document Element.querySelectorAll: Invalid [att=value] selector: [*=test] 
+PASS In-document Element.querySelector: Invalid [att=value] selector: [*|*=test] 
+PASS In-document Element.querySelectorAll: Invalid [att=value] selector: [*|*=test] 
+PASS In-document Element.querySelector: Invalid [att=value] selector: [class= space unquoted ] 
+PASS In-document Element.querySelectorAll: Invalid [att=value] selector: [class= space unquoted ] 
+PASS In-document Element.querySelector: Unknown pseudo-class: div:example 
+PASS In-document Element.querySelectorAll: Unknown pseudo-class: div:example 
+PASS In-document Element.querySelector: Unknown pseudo-class: :example 
+PASS In-document Element.querySelectorAll: Unknown pseudo-class: :example 
+PASS In-document Element.querySelector: Unknown pseudo-element: div::example 
+PASS In-document Element.querySelectorAll: Unknown pseudo-element: div::example 
+PASS In-document Element.querySelector: Unknown pseudo-element: ::example 
+PASS In-document Element.querySelectorAll: Unknown pseudo-element: ::example 
+PASS In-document Element.querySelector: Invalid pseudo-element: :::before 
+PASS In-document Element.querySelectorAll: Invalid pseudo-element: :::before 
+FAIL In-document Element.querySelector: Undeclared namespace: ns|div assert_throws: function &quot;function () {
+        root.querySelector(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+FAIL In-document Element.querySelectorAll: Undeclared namespace: ns|div assert_throws: function &quot;function () {
+        root.querySelectorAll(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+FAIL In-document Element.querySelector: Undeclared namespace: :not(ns|div) assert_throws: function &quot;function () {
+        root.querySelector(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+FAIL In-document Element.querySelectorAll: Undeclared namespace: :not(ns|div) assert_throws: function &quot;function () {
+        root.querySelectorAll(q)
+      }&quot; threw object &quot;Error: NamespaceError: DOM Exception 14&quot; that is not a DOMException SyntaxError: property &quot;code&quot; is equal to 14, expected 12
+PASS In-document Element.querySelector: Invalid namespace: ^|div 
+PASS In-document Element.querySelectorAll: Invalid namespace: ^|div 
+PASS In-document Element.querySelector: Invalid namespace: $|div 
+PASS In-document Element.querySelectorAll: Invalid namespace: $|div 
+PASS Document.querySelectorAll: Type selector, matching html element: html 
+PASS Document.querySelector: Type selector, matching html element: html 
+PASS Document.querySelectorAll: Type selector, matching body element: body 
+PASS Document.querySelector: Type selector, matching body element: body 
+PASS Document.querySelectorAll: Universal selector, matching all children of element with specified ID: #universal&gt;* 
+PASS Document.querySelector: Universal selector, matching all children of element with specified ID: #universal&gt;* 
+PASS Document.querySelectorAll: Universal selector, matching all grandchildren of element with specified ID: #universal&gt;*&gt;* 
+PASS Document.querySelector: Universal selector, matching all grandchildren of element with specified ID: #universal&gt;*&gt;* 
+PASS Document.querySelectorAll: Universal selector, matching all children of empty element with specified ID: #empty&gt;* 
+PASS Document.querySelector: Universal selector, matching all children of empty element with specified ID: #empty&gt;* 
+PASS Document.querySelectorAll: Universal selector, matching all descendants of element with specified ID: #universal * 
+PASS Document.querySelector: Universal selector, matching all descendants of element with specified ID: #universal * 
+PASS Document.querySelectorAll: Attribute presence selector, matching align attribute with value: .attr-presence-div1[align] 
+PASS Document.querySelector: Attribute presence selector, matching align attribute with value: .attr-presence-div1[align] 
+PASS Document.querySelectorAll: Attribute presence selector, matching align attribute with empty value: .attr-presence-div2[align] 
+PASS Document.querySelector: Attribute presence selector, matching align attribute with empty value: .attr-presence-div2[align] 
+PASS Document.querySelectorAll: Attribute presence selector, not matching title attribute, case sensitivity: #attr-presence [TiTlE] 
+PASS Document.querySelector: Attribute presence selector, not matching title attribute, case sensitivity: #attr-presence [TiTlE] 
+PASS Document.querySelectorAll: Attribute presence selector, matching custom data-* attribute: [data-attr-presence] 
+PASS Document.querySelector: Attribute presence selector, matching custom data-* attribute: [data-attr-presence] 
+PASS Document.querySelectorAll: Attribute presence selector, not matching attribute with similar name: .attr-presence-div3[align], .attr-presence-div4[align] 
+PASS Document.querySelector: Attribute presence selector, not matching attribute with similar name: .attr-presence-div3[align], .attr-presence-div4[align] 
+PASS Document.querySelectorAll: Attribute presence selector, matching attribute with non-ASCII characters: ul[data-中文] 
+PASS Document.querySelector: Attribute presence selector, matching attribute with non-ASCII characters: ul[data-中文] 
+PASS Document.querySelectorAll: Attribute presence selector, not matching default option without selected attribute: #attr-presence-select1 option[selected] 
+PASS Document.querySelector: Attribute presence selector, not matching default option without selected attribute: #attr-presence-select1 option[selected] 
+PASS Document.querySelectorAll: Attribute presence selector, matching option with selected attribute: #attr-presence-select2 option[selected] 
+PASS Document.querySelector: Attribute presence selector, matching option with selected attribute: #attr-presence-select2 option[selected] 
+PASS Document.querySelectorAll: Attribute presence selector, matching multiple options with selected attributes: #attr-presence-select3 option[selected] 
+PASS Document.querySelector: Attribute presence selector, matching multiple options with selected attributes: #attr-presence-select3 option[selected] 
+PASS Document.querySelectorAll: Attribute value selector, matching align attribute with value: #attr-value [align=&quot;center&quot;] 
+PASS Document.querySelector: Attribute value selector, matching align attribute with value: #attr-value [align=&quot;center&quot;] 
+PASS Document.querySelectorAll: Attribute value selector, matching align attribute with empty value: #attr-value [align=&quot;&quot;] 
+PASS Document.querySelector: Attribute value selector, matching align attribute with empty value: #attr-value [align=&quot;&quot;] 
+PASS Document.querySelectorAll: Attribute value selector, not matching align attribute with partial value: #attr-value [align=&quot;c&quot;] 
+PASS Document.querySelector: Attribute value selector, not matching align attribute with partial value: #attr-value [align=&quot;c&quot;] 
+PASS Document.querySelectorAll: Attribute value selector, not matching align attribute with incorrect value: #attr-value [align=&quot;centera&quot;] 
+PASS Document.querySelector: Attribute value selector, not matching align attribute with incorrect value: #attr-value [align=&quot;centera&quot;] 
+PASS Document.querySelectorAll: Attribute value selector, matching custom data-* attribute with unicode escaped value: [data-attr-value=&quot;\e9&quot;] 
+PASS Document.querySelector: Attribute value selector, matching custom data-* attribute with unicode escaped value: [data-attr-value=&quot;\e9&quot;] 
+PASS Document.querySelectorAll: Attribute value selector, matching custom data-* attribute with escaped character: [data-attr-value_foo=&quot;\e9&quot;] 
+PASS Document.querySelector: Attribute value selector, matching custom data-* attribute with escaped character: [data-attr-value_foo=&quot;\e9&quot;] 
+PASS Document.querySelectorAll: Attribute value selector with single-quoted value, matching multiple inputs with type attributes: #attr-value input[type='hidden'],#attr-value input[type='radio'] 
+PASS Document.querySelector: Attribute value selector with single-quoted value, matching multiple inputs with type attributes: #attr-value input[type='hidden'],#attr-value input[type='radio'] 
+PASS Document.querySelectorAll: Attribute value selector with double-quoted value, matching multiple inputs with type attributes: #attr-value input[type=&quot;hidden&quot;],#attr-value input[type='radio'] 
+PASS Document.querySelector: Attribute value selector with double-quoted value, matching multiple inputs with type attributes: #attr-value input[type=&quot;hidden&quot;],#attr-value input[type='radio'] 
+PASS Document.querySelectorAll: Attribute value selector with unquoted value, matching multiple inputs with type attributes: #attr-value input[type=hidden],#attr-value input[type=radio] 
+PASS Document.querySelector: Attribute value selector with unquoted value, matching multiple inputs with type attributes: #attr-value input[type=hidden],#attr-value input[type=radio] 
+PASS Document.querySelectorAll: Attribute value selector, matching attribute with value using non-ASCII characters: [data-attr-value=中文] 
+PASS Document.querySelector: Attribute value selector, matching attribute with value using non-ASCII characters: [data-attr-value=中文] 
+PASS Document.querySelectorAll: Attribute whitespace-separated list selector, matching class attribute with value: #attr-whitespace [class~=&quot;div1&quot;] 
+PASS Document.querySelector: Attribute whitespace-separated list selector, matching class attribute with value: #attr-whitespace [class~=&quot;div1&quot;] 
+PASS Document.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=&quot;&quot;] 
+PASS Document.querySelector: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=&quot;&quot;] 
+PASS Document.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with partial value: [data-attr-whitespace~=&quot;div&quot;] 
+PASS Document.querySelector: Attribute whitespace-separated list selector, not matching class attribute with partial value: [data-attr-whitespace~=&quot;div&quot;] 
+PASS Document.querySelectorAll: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value: [data-attr-whitespace~=&quot;\0000e9&quot;] 
+PASS Document.querySelector: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value: [data-attr-whitespace~=&quot;\0000e9&quot;] 
+PASS Document.querySelectorAll: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character: [data-attr-whitespace_foo~=&quot;\e9&quot;] 
+PASS Document.querySelector: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character: [data-attr-whitespace_foo~=&quot;\e9&quot;] 
+PASS Document.querySelectorAll: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~='bookmark'],  #attr-whitespace a[rel~='nofollow'] 
+PASS Document.querySelector: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~='bookmark'],  #attr-whitespace a[rel~='nofollow'] 
+PASS Document.querySelectorAll: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=&quot;bookmark&quot;],#attr-whitespace a[rel~='nofollow'] 
+PASS Document.querySelector: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=&quot;bookmark&quot;],#attr-whitespace a[rel~='nofollow'] 
+PASS Document.querySelectorAll: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=bookmark],    #attr-whitespace a[rel~=nofollow] 
+PASS Document.querySelector: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=bookmark],    #attr-whitespace a[rel~=nofollow] 
+PASS Document.querySelectorAll: Attribute whitespace-separated list selector with double-quoted value, not matching value with space: #attr-whitespace a[rel~=&quot;book mark&quot;] 
+PASS Document.querySelector: Attribute whitespace-separated list selector with double-quoted value, not matching value with space: #attr-whitespace a[rel~=&quot;book mark&quot;] 
+PASS Document.querySelectorAll: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters: #attr-whitespace [title~=中文] 
+PASS Document.querySelector: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters: #attr-whitespace [title~=中文] 
+PASS Document.querySelectorAll: Attribute hyphen-separated list selector, not matching unspecified lang attribute: #attr-hyphen-div1[lang|=&quot;en&quot;] 
+PASS Document.querySelector: Attribute hyphen-separated list selector, not matching unspecified lang attribute: #attr-hyphen-div1[lang|=&quot;en&quot;] 
+PASS Document.querySelectorAll: Attribute hyphen-separated list selector, matching lang attribute with exact value: #attr-hyphen-div2[lang|=&quot;fr&quot;] 
+PASS Document.querySelector: Attribute hyphen-separated list selector, matching lang attribute with exact value: #attr-hyphen-div2[lang|=&quot;fr&quot;] 
+PASS Document.querySelectorAll: Attribute hyphen-separated list selector, matching lang attribute with partial value: #attr-hyphen-div3[lang|=&quot;en&quot;] 
+PASS Document.querySelector: Attribute hyphen-separated list selector, matching lang attribute with partial value: #attr-hyphen-div3[lang|=&quot;en&quot;] 
+PASS Document.querySelectorAll: Attribute hyphen-separated list selector, not matching incorrect value: #attr-hyphen-div4[lang|=&quot;es-AR&quot;] 
+PASS Document.querySelector: Attribute hyphen-separated list selector, not matching incorrect value: #attr-hyphen-div4[lang|=&quot;es-AR&quot;] 
+PASS Document.querySelectorAll: Attribute begins with selector, matching href attributes beginning with specified substring: #attr-begins a[href^=&quot;http://www&quot;] 
+PASS Document.querySelector: Attribute begins with selector, matching href attributes beginning with specified substring: #attr-begins a[href^=&quot;http://www&quot;] 
+PASS Document.querySelectorAll: Attribute begins with selector, matching lang attributes beginning with specified substring, : #attr-begins [lang^=&quot;en-&quot;] 
+PASS Document.querySelector: Attribute begins with selector, matching lang attributes beginning with specified substring, : #attr-begins [lang^=&quot;en-&quot;] 
+PASS Document.querySelectorAll: Attribute begins with selector, not matching class attribute not beginning with specified substring: #attr-begins [class^=apple] 
+PASS Document.querySelector: Attribute begins with selector, not matching class attribute not beginning with specified substring: #attr-begins [class^=apple] 
+PASS Document.querySelectorAll: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=' apple'] 
+PASS Document.querySelector: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=' apple'] 
+PASS Document.querySelectorAll: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=&quot; apple&quot;] 
+PASS Document.querySelector: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=&quot; apple&quot;] 
+PASS Document.querySelectorAll: Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring: #attr-begins [class^= apple] 
+PASS Document.querySelector: Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring: #attr-begins [class^= apple] 
+PASS Document.querySelectorAll: Attribute ends with selector, matching href attributes ending with specified substring: #attr-ends a[href$=&quot;.org&quot;] 
+PASS Document.querySelector: Attribute ends with selector, matching href attributes ending with specified substring: #attr-ends a[href$=&quot;.org&quot;] 
+PASS Document.querySelectorAll: Attribute ends with selector, matching lang attributes ending with specified substring, : #attr-ends [lang$=&quot;-CH&quot;] 
+PASS Document.querySelector: Attribute ends with selector, matching lang attributes ending with specified substring, : #attr-ends [lang$=&quot;-CH&quot;] 
+PASS Document.querySelectorAll: Attribute ends with selector, not matching class attribute not ending with specified substring: #attr-ends [class$=apple] 
+PASS Document.querySelector: Attribute ends with selector, not matching class attribute not ending with specified substring: #attr-ends [class$=apple] 
+PASS Document.querySelectorAll: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring: #attr-ends [class$='apple '] 
+PASS Document.querySelector: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring: #attr-ends [class$='apple '] 
+PASS Document.querySelectorAll: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring: #attr-ends [class$=&quot;apple &quot;] 
+PASS Document.querySelector: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring: #attr-ends [class$=&quot;apple &quot;] 
+PASS Document.querySelectorAll: Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring: #attr-ends [class$=apple ] 
+PASS Document.querySelector: Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring: #attr-ends [class$=apple ] 
+PASS Document.querySelectorAll: Attribute contains selector, matching href attributes beginning with specified substring: #attr-contains a[href*=&quot;http://www&quot;] 
+PASS Document.querySelector: Attribute contains selector, matching href attributes beginning with specified substring: #attr-contains a[href*=&quot;http://www&quot;] 
+PASS Document.querySelectorAll: Attribute contains selector, matching href attributes ending with specified substring: #attr-contains a[href*=&quot;.org&quot;] 
+PASS Document.querySelector: Attribute contains selector, matching href attributes ending with specified substring: #attr-contains a[href*=&quot;.org&quot;] 
+PASS Document.querySelectorAll: Attribute contains selector, matching href attributes containing specified substring: #attr-contains a[href*=&quot;.example.&quot;] 
+PASS Document.querySelector: Attribute contains selector, matching href attributes containing specified substring: #attr-contains a[href*=&quot;.example.&quot;] 
+PASS Document.querySelectorAll: Attribute contains selector, matching lang attributes beginning with specified substring, : #attr-contains [lang*=&quot;en-&quot;] 
+PASS Document.querySelector: Attribute contains selector, matching lang attributes beginning with specified substring, : #attr-contains [lang*=&quot;en-&quot;] 
+PASS Document.querySelectorAll: Attribute contains selector, matching lang attributes ending with specified substring, : #attr-contains [lang*=&quot;-CH&quot;] 
+PASS Document.querySelector: Attribute contains selector, matching lang attributes ending with specified substring, : #attr-contains [lang*=&quot;-CH&quot;] 
+PASS Document.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=' apple'] 
+PASS Document.querySelector: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=' apple'] 
+PASS Document.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring: #attr-contains [class*='orange '] 
+PASS Document.querySelector: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring: #attr-contains [class*='orange '] 
+PASS Document.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute containing specified substring: #attr-contains [class*='ple banana ora'] 
+PASS Document.querySelector: Attribute contains selector with single-quoted value, matching class attribute containing specified substring: #attr-contains [class*='ple banana ora'] 
+PASS Document.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=&quot; apple&quot;] 
+PASS Document.querySelector: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=&quot; apple&quot;] 
+PASS Document.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring: #attr-contains [class*=&quot;orange &quot;] 
+PASS Document.querySelector: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring: #attr-contains [class*=&quot;orange &quot;] 
+PASS Document.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute containing specified substring: #attr-contains [class*=&quot;ple banana ora&quot;] 
+PASS Document.querySelector: Attribute contains selector with double-quoted value, matching class attribute containing specified substring: #attr-contains [class*=&quot;ple banana ora&quot;] 
+PASS Document.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring: #attr-contains [class*= apple] 
+PASS Document.querySelector: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring: #attr-contains [class*= apple] 
+PASS Document.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute ending with specified substring: #attr-contains [class*=orange ] 
+PASS Document.querySelector: Attribute contains selector with unquoted value, matching class attribute ending with specified substring: #attr-contains [class*=orange ] 
+PASS Document.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute containing specified substring: #attr-contains [class*= banana ] 
+PASS Document.querySelector: Attribute contains selector with unquoted value, matching class attribute containing specified substring: #attr-contains [class*= banana ] 
+PASS Document.querySelectorAll: :root pseudo-class selector, matching document root element: :root 
+PASS Document.querySelector: :root pseudo-class selector, matching document root element: :root 
+PASS Document.querySelectorAll: :nth-child selector, matching the third child element: #pseudo-nth-table1 :nth-child(3) 
+PASS Document.querySelector: :nth-child selector, matching the third child element: #pseudo-nth-table1 :nth-child(3) 
+PASS Document.querySelectorAll: :nth-child selector, matching every third child element: #pseudo-nth li:nth-child(3n) 
+PASS Document.querySelector: :nth-child selector, matching every third child element: #pseudo-nth li:nth-child(3n) 
+PASS Document.querySelectorAll: :nth-child selector, matching every second child element, starting from the fourth: #pseudo-nth li:nth-child(2n+4) 
+PASS Document.querySelector: :nth-child selector, matching every second child element, starting from the fourth: #pseudo-nth li:nth-child(2n+4) 
+PASS Document.querySelectorAll: :nth-child selector, matching every fourth child element, starting from the third: #pseudo-nth-p1 :nth-child(4n-1) 
+PASS Document.querySelector: :nth-child selector, matching every fourth child element, starting from the third: #pseudo-nth-p1 :nth-child(4n-1) 
+PASS Document.querySelectorAll: :nth-last-child selector, matching the third last child element: #pseudo-nth-table1 :nth-last-child(3) 
+PASS Document.querySelector: :nth-last-child selector, matching the third last child element: #pseudo-nth-table1 :nth-last-child(3) 
+PASS Document.querySelectorAll: :nth-last-child selector, matching every third child element from the end: #pseudo-nth li:nth-last-child(3n) 
+PASS Document.querySelector: :nth-last-child selector, matching every third child element from the end: #pseudo-nth li:nth-last-child(3n) 
+PASS Document.querySelectorAll: :nth-last-child selector, matching every second child element from the end, starting from the fourth last: #pseudo-nth li:nth-last-child(2n+4) 
+PASS Document.querySelector: :nth-last-child selector, matching every second child element from the end, starting from the fourth last: #pseudo-nth li:nth-last-child(2n+4) 
+PASS Document.querySelectorAll: :nth-last-child selector, matching every fourth element from the end, starting from the third last: #pseudo-nth-p1 :nth-last-child(4n-1) 
+PASS Document.querySelector: :nth-last-child selector, matching every fourth element from the end, starting from the third last: #pseudo-nth-p1 :nth-last-child(4n-1) 
+PASS Document.querySelectorAll: :nth-of-type selector, matching the third em element: #pseudo-nth-p1 em:nth-of-type(3) 
+PASS Document.querySelector: :nth-of-type selector, matching the third em element: #pseudo-nth-p1 em:nth-of-type(3) 
+PASS Document.querySelectorAll: :nth-of-type selector, matching every second element of their type: #pseudo-nth-p1 :nth-of-type(2n) 
+PASS Document.querySelector: :nth-of-type selector, matching every second element of their type: #pseudo-nth-p1 :nth-of-type(2n) 
+PASS Document.querySelectorAll: :nth-of-type selector, matching every second elemetn of their type, starting from the first: #pseudo-nth-p1 span:nth-of-type(2n-1) 
+PASS Document.querySelector: :nth-of-type selector, matching every second elemetn of their type, starting from the first: #pseudo-nth-p1 span:nth-of-type(2n-1) 
+PASS Document.querySelectorAll: :nth-last-of-type selector, matching the thrid last em element: #pseudo-nth-p1 em:nth-last-of-type(3) 
+PASS Document.querySelector: :nth-last-of-type selector, matching the thrid last em element: #pseudo-nth-p1 em:nth-last-of-type(3) 
+PASS Document.querySelectorAll: :nth-last-of-type selector, matching every second last element of their type: #pseudo-nth-p1 :nth-last-of-type(2n) 
+PASS Document.querySelector: :nth-last-of-type selector, matching every second last element of their type: #pseudo-nth-p1 :nth-last-of-type(2n) 
+PASS Document.querySelectorAll: :nth-last-of-type selector, matching every second last element of their type, starting from the last: #pseudo-nth-p1 span:nth-last-of-type(2n-1) 
+PASS Document.querySelector: :nth-last-of-type selector, matching every second last element of their type, starting from the last: #pseudo-nth-p1 span:nth-last-of-type(2n-1) 
+PASS Document.querySelectorAll: :first-of-type selector, matching the first em element: #pseudo-nth-p1 em:first-of-type 
+PASS Document.querySelector: :first-of-type selector, matching the first em element: #pseudo-nth-p1 em:first-of-type 
+PASS Document.querySelectorAll: :first-of-type selector, matching the first of every type of element: #pseudo-nth-p1 :first-of-type 
+PASS Document.querySelector: :first-of-type selector, matching the first of every type of element: #pseudo-nth-p1 :first-of-type 
+PASS Document.querySelectorAll: :first-of-type selector, matching the first td element in each table row: #pseudo-nth-table1 tr :first-of-type 
+PASS Document.querySelector: :first-of-type selector, matching the first td element in each table row: #pseudo-nth-table1 tr :first-of-type 
+PASS Document.querySelectorAll: :last-of-type selector, matching the last em elemnet: #pseudo-nth-p1 em:last-of-type 
+PASS Document.querySelector: :last-of-type selector, matching the last em elemnet: #pseudo-nth-p1 em:last-of-type 
+PASS Document.querySelectorAll: :last-of-type selector, matching the last of every type of element: #pseudo-nth-p1 :last-of-type 
+PASS Document.querySelector: :last-of-type selector, matching the last of every type of element: #pseudo-nth-p1 :last-of-type 
+PASS Document.querySelectorAll: :last-of-type selector, matching the last td element in each table row: #pseudo-nth-table1 tr :last-of-type 
+PASS Document.querySelector: :last-of-type selector, matching the last td element in each table row: #pseudo-nth-table1 tr :last-of-type 
+PASS Document.querySelectorAll: :first-child pseudo-class selector, matching first child div element: #pseudo-first-child div:first-child 
+PASS Document.querySelector: :first-child pseudo-class selector, matching first child div element: #pseudo-first-child div:first-child 
+PASS Document.querySelectorAll: :first-child pseudo-class selector, doesn't match non-first-child elements: .pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child 
+PASS Document.querySelector: :first-child pseudo-class selector, doesn't match non-first-child elements: .pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child 
+PASS Document.querySelectorAll: :first-child pseudo-class selector, matching first-child of multiple elements: #pseudo-first-child span:first-child 
+PASS Document.querySelector: :first-child pseudo-class selector, matching first-child of multiple elements: #pseudo-first-child span:first-child 
+PASS Document.querySelectorAll: :last-child pseudo-class selector, matching last child div element: #pseudo-last-child div:last-child 
+PASS Document.querySelector: :last-child pseudo-class selector, matching last child div element: #pseudo-last-child div:last-child 
+PASS Document.querySelectorAll: :last-child pseudo-class selector, doesn't match non-last-child elements: .pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child 
+PASS Document.querySelector: :last-child pseudo-class selector, doesn't match non-last-child elements: .pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child 
+PASS Document.querySelectorAll: :last-child pseudo-class selector, matching first-child of multiple elements: #pseudo-last-child span:last-child 
+PASS Document.querySelector: :last-child pseudo-class selector, matching first-child of multiple elements: #pseudo-last-child span:last-child 
+PASS Document.querySelectorAll: :pseudo-only-child pseudo-class selector, matching all only-child elements: #pseudo-only :only-child 
+PASS Document.querySelector: :pseudo-only-child pseudo-class selector, matching all only-child elements: #pseudo-only :only-child 
+PASS Document.querySelectorAll: :pseudo-only-child pseudo-class selector, matching only-child em elements: #pseudo-only em:only-child 
+PASS Document.querySelector: :pseudo-only-child pseudo-class selector, matching only-child em elements: #pseudo-only em:only-child 
+PASS Document.querySelectorAll: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type: #pseudo-only :only-of-type 
+PASS Document.querySelector: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type: #pseudo-only :only-of-type 
+PASS Document.querySelectorAll: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type: #pseudo-only em:only-of-type 
+PASS Document.querySelector: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type: #pseudo-only em:only-of-type 
+PASS Document.querySelectorAll: :empty pseudo-class selector, matching empty p elements: #pseudo-empty p:empty 
+PASS Document.querySelector: :empty pseudo-class selector, matching empty p elements: #pseudo-empty p:empty 
+PASS Document.querySelectorAll: :empty pseudo-class selector, matching all empty elements: #pseudo-empty :empty 
+PASS Document.querySelector: :empty pseudo-class selector, matching all empty elements: #pseudo-empty :empty 
+PASS Document.querySelectorAll: :link and :visited pseudo-class selectors, matching a and area elements with href attributes: #pseudo-link :link, #pseudo-link :visited 
+PASS Document.querySelector: :link and :visited pseudo-class selectors, matching a and area elements with href attributes: #pseudo-link :link, #pseudo-link :visited 
+PASS Document.querySelectorAll: :link and :visited pseudo-class selectors, matching link elements with href attributes: #head :link, #head :visited 
+PASS Document.querySelector: :link and :visited pseudo-class selectors, matching link elements with href attributes: #head :link, #head :visited 
+PASS Document.querySelectorAll: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target 
+PASS Document.querySelector: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target 
+PASS Document.querySelectorAll: :lang pseudo-class selector, matching inherited language: #pseudo-lang-div1:lang(en) 
+PASS Document.querySelector: :lang pseudo-class selector, matching inherited language: #pseudo-lang-div1:lang(en) 
+PASS Document.querySelectorAll: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) 
+PASS Document.querySelector: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) 
+PASS Document.querySelectorAll: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) 
+PASS Document.querySelector: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) 
+PASS Document.querySelectorAll: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) 
+PASS Document.querySelector: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) 
+PASS Document.querySelectorAll: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled 
+PASS Document.querySelector: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled 
+PASS Document.querySelectorAll: :enabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled 
+PASS Document.querySelector: :enabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled 
+PASS Document.querySelectorAll: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked 
+PASS Document.querySelector: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked 
+PASS Document.querySelectorAll: :not pseudo-class selector, matching : #not&gt;:not(div) 
+PASS Document.querySelector: :not pseudo-class selector, matching : #not&gt;:not(div) 
+PASS Document.querySelectorAll: :not pseudo-class selector, matching : #not * :not(:first-child) 
+PASS Document.querySelector: :not pseudo-class selector, matching : #not * :not(:first-child) 
+PASS Document.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*) 
+PASS Document.querySelector: :not pseudo-class selector, matching nothing: :not(*) 
+PASS Document.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*|*) 
+PASS Document.querySelector: :not pseudo-class selector, matching nothing: :not(*|*) 
+PASS Document.querySelectorAll: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line 
+PASS Document.querySelector: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line 
+PASS Document.querySelectorAll: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line 
+PASS Document.querySelector: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line 
+PASS Document.querySelectorAll: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter 
+PASS Document.querySelector: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter 
+PASS Document.querySelectorAll: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter 
+PASS Document.querySelector: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter 
+PASS Document.querySelectorAll: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before 
+PASS Document.querySelector: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before 
+PASS Document.querySelectorAll: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before 
+PASS Document.querySelector: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before 
+PASS Document.querySelectorAll: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after 
+PASS Document.querySelector: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after 
+PASS Document.querySelectorAll: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after 
+PASS Document.querySelector: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after 
+PASS Document.querySelectorAll: Class selector, matching element with specified class: .class-p 
+PASS Document.querySelector: Class selector, matching element with specified class: .class-p 
+PASS Document.querySelectorAll: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana 
+PASS Document.querySelector: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana 
+PASS Document.querySelectorAll: Class Selector, chained, with type selector: div.apple.banana.orange 
+PASS Document.querySelector: Class Selector, chained, with type selector: div.apple.banana.orange 
+PASS Document.querySelectorAll: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
+PASS Document.querySelector: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
+PASS Document.querySelectorAll: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
+PASS Document.querySelector: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
+PASS Document.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
+PASS Document.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
+PASS Document.querySelectorAll: Class selector, matching element with class with escaped character: .foo\:bar 
+PASS Document.querySelector: Class selector, matching element with class with escaped character: .foo\:bar 
+PASS Document.querySelectorAll: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar 
+PASS Document.querySelector: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar 
+PASS Document.querySelectorAll: ID selector, matching element with specified id: #id #id-div1 
+PASS Document.querySelector: ID selector, matching element with specified id: #id #id-div1 
+PASS Document.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div1 
+PASS Document.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div1 
+PASS Document.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div2 
+PASS Document.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div2 
+PASS Document.querySelectorAll: ID Selector, chained, with type selector: div#id-div1, div#id-div2 
+PASS Document.querySelector: ID Selector, chained, with type selector: div#id-div1, div#id-div2 
+PASS Document.querySelectorAll: ID selector, not matching non-existent descendant: #id #none 
+PASS Document.querySelector: ID selector, not matching non-existent descendant: #id #none 
+PASS Document.querySelectorAll: ID selector, not matching non-existent ancestor: #none #id-div1 
+PASS Document.querySelector: ID selector, not matching non-existent ancestor: #none #id-div1 
+PASS Document.querySelectorAll: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
+PASS Document.querySelector: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
+PASS Document.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
+PASS Document.querySelector: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
+PASS Document.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北 
+PASS Document.querySelector: ID selector, matching id value using non-ASCII characters: #台北 
+PASS Document.querySelectorAll: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
+PASS Document.querySelector: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
+PASS Document.querySelectorAll: ID selector, matching element with id with escaped character: #\#foo\:bar 
+PASS Document.querySelector: ID selector, matching element with id with escaped character: #\#foo\:bar 
+PASS Document.querySelectorAll: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar 
+PASS Document.querySelector: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar 
+PASS Document.querySelectorAll: Namespace selector, matching element with any namespace: #any-namespace *|div 
+PASS Document.querySelector: Namespace selector, matching element with any namespace: #any-namespace *|div 
+FAIL Document.querySelectorAll: Namespace selector, matching div elements in no namespace only: #no-namespace |div assert_equals: The method should return the expected number of matches. expected 1 but got 4
+FAIL Document.querySelector: Namespace selector, matching div elements in no namespace only: #no-namespace |div assert_equals: The method should return the first match. expected &quot;no-namespace-div3&quot; but got &quot;no-namespace-div1&quot;
+FAIL Document.querySelectorAll: Namespace selector, matching any elements in no namespace only: #no-namespace |* assert_equals: The method should return the expected number of matches. expected 1 but got 4
+FAIL Document.querySelector: Namespace selector, matching any elements in no namespace only: #no-namespace |* assert_equals: The method should return the first match. expected &quot;no-namespace-div3&quot; but got &quot;no-namespace-div1&quot;
+PASS Document.querySelectorAll: Descendant combinator, matching element that is a descendant of an element with id: #descendant div 
+PASS Document.querySelector: Descendant combinator, matching element that is a descendant of an element with id: #descendant div 
+PASS Document.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: body #descendant-div1 
+PASS Document.querySelector: Descendant combinator, matching element with id that is a descendant of an element: body #descendant-div1 
+PASS Document.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 
+PASS Document.querySelector: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 
+PASS Document.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 
+PASS Document.querySelector: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 
+PASS Document.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 
+PASS Document.querySelector: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 
+PASS Document.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 
+PASS Document.querySelector: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 
+PASS Document.querySelectorAll: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 
+PASS Document.querySelector: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 
+PASS Document.querySelectorAll: Descendant combinator, whitespace characters: #descendant        
+#descendant-div2 
+PASS Document.querySelector: Descendant combinator, whitespace characters: #descendant        
+#descendant-div2 
+PASS Document.querySelectorAll: Child combinator, matching element that is a child of an element with id: #child&gt;div 
+PASS Document.querySelector: Child combinator, matching element that is a child of an element with id: #child&gt;div 
+PASS Document.querySelectorAll: Child combinator, matching element with id that is a child of an element: div&gt;#child-div1 
+PASS Document.querySelector: Child combinator, matching element with id that is a child of an element: div&gt;#child-div1 
+PASS Document.querySelectorAll: Child combinator, matching element with id that is a child of an element with id: #child&gt;#child-div1 
+PASS Document.querySelector: Child combinator, matching element with id that is a child of an element with id: #child&gt;#child-div1 
+PASS Document.querySelectorAll: Child combinator, matching element with id that is a child of an element with class: #child-div1&gt;.child-div2 
+PASS Document.querySelector: Child combinator, matching element with id that is a child of an element with class: #child-div1&gt;.child-div2 
+PASS Document.querySelectorAll: Child combinator, matching element with class that is a child of an element with class: .child-div1&gt;.child-div2 
+PASS Document.querySelector: Child combinator, matching element with class that is a child of an element with class: .child-div1&gt;.child-div2 
+PASS Document.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with id: #child&gt;#child-div3 
+PASS Document.querySelector: Child combinator, not matching element with id that is not a child of an element with id: #child&gt;#child-div3 
+PASS Document.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with class: #child-div1&gt;.child-div3 
+PASS Document.querySelector: Child combinator, not matching element with id that is not a child of an element with class: #child-div1&gt;.child-div3 
+PASS Document.querySelectorAll: Child combinator, not matching element with class that is not a child of an element with class: .child-div1&gt;.child-div3 
+PASS Document.querySelector: Child combinator, not matching element with class that is not a child of an element with class: .child-div1&gt;.child-div3 
+PASS Document.querySelectorAll: Child combinator, surrounded by whitespace: #child-div1        
+&gt;        
+#child-div2 
+PASS Document.querySelector: Child combinator, surrounded by whitespace: #child-div1        
+&gt;        
+#child-div2 
+PASS Document.querySelectorAll: Child combinator, whitespace after: #child-div1&gt;        
+#child-div2 
+PASS Document.querySelector: Child combinator, whitespace after: #child-div1&gt;        
+#child-div2 
+PASS Document.querySelectorAll: Child combinator, whitespace before: #child-div1        
+&gt;#child-div2 
+PASS Document.querySelector: Child combinator, whitespace before: #child-div1        
+&gt;#child-div2 
+PASS Document.querySelectorAll: Child combinator, no whitespace: #child-div1&gt;#child-div2 
+PASS Document.querySelector: Child combinator, no whitespace: #child-div1&gt;#child-div2 
+PASS Document.querySelectorAll: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div 
+PASS Document.querySelector: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div 
+PASS Document.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 
+PASS Document.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 
+PASS Document.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 
+PASS Document.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 
+PASS Document.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 
+PASS Document.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 
+PASS Document.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 
+PASS Document.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 
+PASS Document.querySelectorAll: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p 
+PASS Document.querySelector: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p 
+PASS Document.querySelectorAll: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 
+PASS Document.querySelector: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 
+PASS Document.querySelectorAll: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2        
++        
+#adjacent-p3 
+PASS Document.querySelector: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2        
++        
+#adjacent-p3 
+PASS Document.querySelectorAll: Adjacent sibling combinator, whitespace after: #adjacent-p2+        
+#adjacent-p3 
+PASS Document.querySelector: Adjacent sibling combinator, whitespace after: #adjacent-p2+        
+#adjacent-p3 
+PASS Document.querySelectorAll: Adjacent sibling combinator, whitespace before: #adjacent-p2        
++#adjacent-p3 
+PASS Document.querySelector: Adjacent sibling combinator, whitespace before: #adjacent-p2        
++#adjacent-p3 
+PASS Document.querySelectorAll: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 
+PASS Document.querySelector: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 
+PASS Document.querySelectorAll: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div 
+PASS Document.querySelector: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div 
+PASS Document.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 
+PASS Document.querySelector: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 
+PASS Document.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 
+PASS Document.querySelector: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 
+PASS Document.querySelectorAll: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div 
+PASS Document.querySelector: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div 
+PASS Document.querySelectorAll: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p 
+PASS Document.querySelector: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p 
+PASS Document.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling&gt;p~div 
+PASS Document.querySelector: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling&gt;p~div 
+PASS Document.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 
+PASS Document.querySelector: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 
+PASS Document.querySelectorAll: General sibling combinator, surrounded by whitespace: #sibling-p2        
+~        
+#sibling-p3 
+PASS Document.querySelector: General sibling combinator, surrounded by whitespace: #sibling-p2        
+~        
+#sibling-p3 
+PASS Document.querySelectorAll: General sibling combinator, whitespace after: #sibling-p2~        
+#sibling-p3 
+PASS Document.querySelector: General sibling combinator, whitespace after: #sibling-p2~        
+#sibling-p3 
+PASS Document.querySelectorAll: General sibling combinator, whitespace before: #sibling-p2        
+~#sibling-p3 
+PASS Document.querySelector: General sibling combinator, whitespace before: #sibling-p2        
+~#sibling-p3 
+PASS Document.querySelectorAll: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 
+PASS Document.querySelector: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 
+PASS Document.querySelectorAll: Syntax, group of selectors separator, surrounded by whitespace: #group em        

+,        

+#group strong 
+PASS Document.querySelector: Syntax, group of selectors separator, surrounded by whitespace: #group em        

+,        

+#group strong 
+PASS Document.querySelectorAll: Syntax, group of selectors separator, whitespace after: #group em,        
+#group strong 
+PASS Document.querySelector: Syntax, group of selectors separator, whitespace after: #group em,        
+#group strong 
+PASS Document.querySelectorAll: Syntax, group of selectors separator, whitespace before: #group em        
+,#group strong 
+PASS Document.querySelector: Syntax, group of selectors separator, whitespace before: #group em        
+,#group strong 
+PASS Document.querySelectorAll: Syntax, group of selectors separator, no whitespace: #group em,#group strong 
+PASS Document.querySelector: Syntax, group of selectors separator, no whitespace: #group em,#group strong 
+PASS Detached Element.querySelectorAll: Type selector, matching html element: html 
+PASS Detached Element.querySelector: Type selector, matching html element: html 
+PASS Detached Element.querySelectorAll: Type selector, matching body element: body 
+PASS Detached Element.querySelector: Type selector, matching body element: body 
+PASS Detached Element.querySelectorAll: Universal selector, matching all children of element with specified ID: #universal&gt;* 
+PASS Detached Element.querySelector: Universal selector, matching all children of element with specified ID: #universal&gt;* 
+PASS Detached Element.querySelectorAll: Universal selector, matching all grandchildren of element with specified ID: #universal&gt;*&gt;* 
+PASS Detached Element.querySelector: Universal selector, matching all grandchildren of element with specified ID: #universal&gt;*&gt;* 
+PASS Detached Element.querySelectorAll: Universal selector, matching all children of empty element with specified ID: #empty&gt;* 
+PASS Detached Element.querySelector: Universal selector, matching all children of empty element with specified ID: #empty&gt;* 
+PASS Detached Element.querySelectorAll: Universal selector, matching all descendants of element with specified ID: #universal * 
+PASS Detached Element.querySelector: Universal selector, matching all descendants of element with specified ID: #universal * 
+PASS Detached Element.querySelectorAll: Attribute presence selector, matching align attribute with value: .attr-presence-div1[align] 
+PASS Detached Element.querySelector: Attribute presence selector, matching align attribute with value: .attr-presence-div1[align] 
+PASS Detached Element.querySelectorAll: Attribute presence selector, matching align attribute with empty value: .attr-presence-div2[align] 
+PASS Detached Element.querySelector: Attribute presence selector, matching align attribute with empty value: .attr-presence-div2[align] 
+PASS Detached Element.querySelectorAll: Attribute presence selector, not matching title attribute, case sensitivity: #attr-presence [TiTlE] 
+PASS Detached Element.querySelector: Attribute presence selector, not matching title attribute, case sensitivity: #attr-presence [TiTlE] 
+PASS Detached Element.querySelectorAll: Attribute presence selector, matching custom data-* attribute: [data-attr-presence] 
+PASS Detached Element.querySelector: Attribute presence selector, matching custom data-* attribute: [data-attr-presence] 
+PASS Detached Element.querySelectorAll: Attribute presence selector, not matching attribute with similar name: .attr-presence-div3[align], .attr-presence-div4[align] 
+PASS Detached Element.querySelector: Attribute presence selector, not matching attribute with similar name: .attr-presence-div3[align], .attr-presence-div4[align] 
+PASS Detached Element.querySelectorAll: Attribute presence selector, matching attribute with non-ASCII characters: ul[data-中文] 
+PASS Detached Element.querySelector: Attribute presence selector, matching attribute with non-ASCII characters: ul[data-中文] 
+PASS Detached Element.querySelectorAll: Attribute presence selector, not matching default option without selected attribute: #attr-presence-select1 option[selected] 
+PASS Detached Element.querySelector: Attribute presence selector, not matching default option without selected attribute: #attr-presence-select1 option[selected] 
+PASS Detached Element.querySelectorAll: Attribute presence selector, matching option with selected attribute: #attr-presence-select2 option[selected] 
+PASS Detached Element.querySelector: Attribute presence selector, matching option with selected attribute: #attr-presence-select2 option[selected] 
+PASS Detached Element.querySelectorAll: Attribute presence selector, matching multiple options with selected attributes: #attr-presence-select3 option[selected] 
+PASS Detached Element.querySelector: Attribute presence selector, matching multiple options with selected attributes: #attr-presence-select3 option[selected] 
+PASS Detached Element.querySelectorAll: Attribute value selector, matching align attribute with value: #attr-value [align=&quot;center&quot;] 
+PASS Detached Element.querySelector: Attribute value selector, matching align attribute with value: #attr-value [align=&quot;center&quot;] 
+PASS Detached Element.querySelectorAll: Attribute value selector, matching align attribute with empty value: #attr-value [align=&quot;&quot;] 
+PASS Detached Element.querySelector: Attribute value selector, matching align attribute with empty value: #attr-value [align=&quot;&quot;] 
+PASS Detached Element.querySelectorAll: Attribute value selector, not matching align attribute with partial value: #attr-value [align=&quot;c&quot;] 
+PASS Detached Element.querySelector: Attribute value selector, not matching align attribute with partial value: #attr-value [align=&quot;c&quot;] 
+PASS Detached Element.querySelectorAll: Attribute value selector, not matching align attribute with incorrect value: #attr-value [align=&quot;centera&quot;] 
+PASS Detached Element.querySelector: Attribute value selector, not matching align attribute with incorrect value: #attr-value [align=&quot;centera&quot;] 
+PASS Detached Element.querySelectorAll: Attribute value selector, matching custom data-* attribute with unicode escaped value: [data-attr-value=&quot;\e9&quot;] 
+PASS Detached Element.querySelector: Attribute value selector, matching custom data-* attribute with unicode escaped value: [data-attr-value=&quot;\e9&quot;] 
+PASS Detached Element.querySelectorAll: Attribute value selector, matching custom data-* attribute with escaped character: [data-attr-value_foo=&quot;\e9&quot;] 
+PASS Detached Element.querySelector: Attribute value selector, matching custom data-* attribute with escaped character: [data-attr-value_foo=&quot;\e9&quot;] 
+PASS Detached Element.querySelectorAll: Attribute value selector with single-quoted value, matching multiple inputs with type attributes: #attr-value input[type='hidden'],#attr-value input[type='radio'] 
+PASS Detached Element.querySelector: Attribute value selector with single-quoted value, matching multiple inputs with type attributes: #attr-value input[type='hidden'],#attr-value input[type='radio'] 
+PASS Detached Element.querySelectorAll: Attribute value selector with double-quoted value, matching multiple inputs with type attributes: #attr-value input[type=&quot;hidden&quot;],#attr-value input[type='radio'] 
+PASS Detached Element.querySelector: Attribute value selector with double-quoted value, matching multiple inputs with type attributes: #attr-value input[type=&quot;hidden&quot;],#attr-value input[type='radio'] 
+PASS Detached Element.querySelectorAll: Attribute value selector with unquoted value, matching multiple inputs with type attributes: #attr-value input[type=hidden],#attr-value input[type=radio] 
+PASS Detached Element.querySelector: Attribute value selector with unquoted value, matching multiple inputs with type attributes: #attr-value input[type=hidden],#attr-value input[type=radio] 
+PASS Detached Element.querySelectorAll: Attribute value selector, matching attribute with value using non-ASCII characters: [data-attr-value=中文] 
+PASS Detached Element.querySelector: Attribute value selector, matching attribute with value using non-ASCII characters: [data-attr-value=中文] 
+PASS Detached Element.querySelectorAll: Attribute whitespace-separated list selector, matching class attribute with value: #attr-whitespace [class~=&quot;div1&quot;] 
+PASS Detached Element.querySelector: Attribute whitespace-separated list selector, matching class attribute with value: #attr-whitespace [class~=&quot;div1&quot;] 
+PASS Detached Element.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=&quot;&quot;] 
+PASS Detached Element.querySelector: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=&quot;&quot;] 
+PASS Detached Element.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with partial value: [data-attr-whitespace~=&quot;div&quot;] 
+PASS Detached Element.querySelector: Attribute whitespace-separated list selector, not matching class attribute with partial value: [data-attr-whitespace~=&quot;div&quot;] 
+PASS Detached Element.querySelectorAll: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value: [data-attr-whitespace~=&quot;\0000e9&quot;] 
+PASS Detached Element.querySelector: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value: [data-attr-whitespace~=&quot;\0000e9&quot;] 
+PASS Detached Element.querySelectorAll: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character: [data-attr-whitespace_foo~=&quot;\e9&quot;] 
+PASS Detached Element.querySelector: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character: [data-attr-whitespace_foo~=&quot;\e9&quot;] 
+PASS Detached Element.querySelectorAll: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~='bookmark'],  #attr-whitespace a[rel~='nofollow'] 
+PASS Detached Element.querySelector: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~='bookmark'],  #attr-whitespace a[rel~='nofollow'] 
+PASS Detached Element.querySelectorAll: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=&quot;bookmark&quot;],#attr-whitespace a[rel~='nofollow'] 
+PASS Detached Element.querySelector: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=&quot;bookmark&quot;],#attr-whitespace a[rel~='nofollow'] 
+PASS Detached Element.querySelectorAll: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=bookmark],    #attr-whitespace a[rel~=nofollow] 
+PASS Detached Element.querySelector: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=bookmark],    #attr-whitespace a[rel~=nofollow] 
+PASS Detached Element.querySelectorAll: Attribute whitespace-separated list selector with double-quoted value, not matching value with space: #attr-whitespace a[rel~=&quot;book mark&quot;] 
+PASS Detached Element.querySelector: Attribute whitespace-separated list selector with double-quoted value, not matching value with space: #attr-whitespace a[rel~=&quot;book mark&quot;] 
+PASS Detached Element.querySelectorAll: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters: #attr-whitespace [title~=中文] 
+PASS Detached Element.querySelector: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters: #attr-whitespace [title~=中文] 
+PASS Detached Element.querySelectorAll: Attribute hyphen-separated list selector, not matching unspecified lang attribute: #attr-hyphen-div1[lang|=&quot;en&quot;] 
+PASS Detached Element.querySelector: Attribute hyphen-separated list selector, not matching unspecified lang attribute: #attr-hyphen-div1[lang|=&quot;en&quot;] 
+PASS Detached Element.querySelectorAll: Attribute hyphen-separated list selector, matching lang attribute with exact value: #attr-hyphen-div2[lang|=&quot;fr&quot;] 
+PASS Detached Element.querySelector: Attribute hyphen-separated list selector, matching lang attribute with exact value: #attr-hyphen-div2[lang|=&quot;fr&quot;] 
+PASS Detached Element.querySelectorAll: Attribute hyphen-separated list selector, matching lang attribute with partial value: #attr-hyphen-div3[lang|=&quot;en&quot;] 
+PASS Detached Element.querySelector: Attribute hyphen-separated list selector, matching lang attribute with partial value: #attr-hyphen-div3[lang|=&quot;en&quot;] 
+PASS Detached Element.querySelectorAll: Attribute hyphen-separated list selector, not matching incorrect value: #attr-hyphen-div4[lang|=&quot;es-AR&quot;] 
+PASS Detached Element.querySelector: Attribute hyphen-separated list selector, not matching incorrect value: #attr-hyphen-div4[lang|=&quot;es-AR&quot;] 
+PASS Detached Element.querySelectorAll: Attribute begins with selector, matching href attributes beginning with specified substring: #attr-begins a[href^=&quot;http://www&quot;] 
+PASS Detached Element.querySelector: Attribute begins with selector, matching href attributes beginning with specified substring: #attr-begins a[href^=&quot;http://www&quot;] 
+PASS Detached Element.querySelectorAll: Attribute begins with selector, matching lang attributes beginning with specified substring, : #attr-begins [lang^=&quot;en-&quot;] 
+PASS Detached Element.querySelector: Attribute begins with selector, matching lang attributes beginning with specified substring, : #attr-begins [lang^=&quot;en-&quot;] 
+PASS Detached Element.querySelectorAll: Attribute begins with selector, not matching class attribute not beginning with specified substring: #attr-begins [class^=apple] 
+PASS Detached Element.querySelector: Attribute begins with selector, not matching class attribute not beginning with specified substring: #attr-begins [class^=apple] 
+PASS Detached Element.querySelectorAll: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=' apple'] 
+PASS Detached Element.querySelector: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=' apple'] 
+PASS Detached Element.querySelectorAll: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=&quot; apple&quot;] 
+PASS Detached Element.querySelector: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=&quot; apple&quot;] 
+PASS Detached Element.querySelectorAll: Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring: #attr-begins [class^= apple] 
+PASS Detached Element.querySelector: Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring: #attr-begins [class^= apple] 
+PASS Detached Element.querySelectorAll: Attribute ends with selector, matching href attributes ending with specified substring: #attr-ends a[href$=&quot;.org&quot;] 
+PASS Detached Element.querySelector: Attribute ends with selector, matching href attributes ending with specified substring: #attr-ends a[href$=&quot;.org&quot;] 
+PASS Detached Element.querySelectorAll: Attribute ends with selector, matching lang attributes ending with specified substring, : #attr-ends [lang$=&quot;-CH&quot;] 
+PASS Detached Element.querySelector: Attribute ends with selector, matching lang attributes ending with specified substring, : #attr-ends [lang$=&quot;-CH&quot;] 
+PASS Detached Element.querySelectorAll: Attribute ends with selector, not matching class attribute not ending with specified substring: #attr-ends [class$=apple] 
+PASS Detached Element.querySelector: Attribute ends with selector, not matching class attribute not ending with specified substring: #attr-ends [class$=apple] 
+PASS Detached Element.querySelectorAll: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring: #attr-ends [class$='apple '] 
+PASS Detached Element.querySelector: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring: #attr-ends [class$='apple '] 
+PASS Detached Element.querySelectorAll: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring: #attr-ends [class$=&quot;apple &quot;] 
+PASS Detached Element.querySelector: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring: #attr-ends [class$=&quot;apple &quot;] 
+PASS Detached Element.querySelectorAll: Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring: #attr-ends [class$=apple ] 
+PASS Detached Element.querySelector: Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring: #attr-ends [class$=apple ] 
+PASS Detached Element.querySelectorAll: Attribute contains selector, matching href attributes beginning with specified substring: #attr-contains a[href*=&quot;http://www&quot;] 
+PASS Detached Element.querySelector: Attribute contains selector, matching href attributes beginning with specified substring: #attr-contains a[href*=&quot;http://www&quot;] 
+PASS Detached Element.querySelectorAll: Attribute contains selector, matching href attributes ending with specified substring: #attr-contains a[href*=&quot;.org&quot;] 
+PASS Detached Element.querySelector: Attribute contains selector, matching href attributes ending with specified substring: #attr-contains a[href*=&quot;.org&quot;] 
+PASS Detached Element.querySelectorAll: Attribute contains selector, matching href attributes containing specified substring: #attr-contains a[href*=&quot;.example.&quot;] 
+PASS Detached Element.querySelector: Attribute contains selector, matching href attributes containing specified substring: #attr-contains a[href*=&quot;.example.&quot;] 
+PASS Detached Element.querySelectorAll: Attribute contains selector, matching lang attributes beginning with specified substring, : #attr-contains [lang*=&quot;en-&quot;] 
+PASS Detached Element.querySelector: Attribute contains selector, matching lang attributes beginning with specified substring, : #attr-contains [lang*=&quot;en-&quot;] 
+PASS Detached Element.querySelectorAll: Attribute contains selector, matching lang attributes ending with specified substring, : #attr-contains [lang*=&quot;-CH&quot;] 
+PASS Detached Element.querySelector: Attribute contains selector, matching lang attributes ending with specified substring, : #attr-contains [lang*=&quot;-CH&quot;] 
+PASS Detached Element.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=' apple'] 
+PASS Detached Element.querySelector: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=' apple'] 
+PASS Detached Element.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring: #attr-contains [class*='orange '] 
+PASS Detached Element.querySelector: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring: #attr-contains [class*='orange '] 
+PASS Detached Element.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute containing specified substring: #attr-contains [class*='ple banana ora'] 
+PASS Detached Element.querySelector: Attribute contains selector with single-quoted value, matching class attribute containing specified substring: #attr-contains [class*='ple banana ora'] 
+PASS Detached Element.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=&quot; apple&quot;] 
+PASS Detached Element.querySelector: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=&quot; apple&quot;] 
+PASS Detached Element.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring: #attr-contains [class*=&quot;orange &quot;] 
+PASS Detached Element.querySelector: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring: #attr-contains [class*=&quot;orange &quot;] 
+PASS Detached Element.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute containing specified substring: #attr-contains [class*=&quot;ple banana ora&quot;] 
+PASS Detached Element.querySelector: Attribute contains selector with double-quoted value, matching class attribute containing specified substring: #attr-contains [class*=&quot;ple banana ora&quot;] 
+PASS Detached Element.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring: #attr-contains [class*= apple] 
+PASS Detached Element.querySelector: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring: #attr-contains [class*= apple] 
+PASS Detached Element.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute ending with specified substring: #attr-contains [class*=orange ] 
+PASS Detached Element.querySelector: Attribute contains selector with unquoted value, matching class attribute ending with specified substring: #attr-contains [class*=orange ] 
+PASS Detached Element.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute containing specified substring: #attr-contains [class*= banana ] 
+PASS Detached Element.querySelector: Attribute contains selector with unquoted value, matching class attribute containing specified substring: #attr-contains [class*= banana ] 
+PASS Detached Element.querySelectorAll: :root pseudo-class selector, not matching document root element: :root 
+PASS Detached Element.querySelector: :root pseudo-class selector, not matching document root element: :root 
+PASS Detached Element.querySelectorAll: :nth-child selector, matching the third child element: #pseudo-nth-table1 :nth-child(3) 
+PASS Detached Element.querySelector: :nth-child selector, matching the third child element: #pseudo-nth-table1 :nth-child(3) 
+PASS Detached Element.querySelectorAll: :nth-child selector, matching every third child element: #pseudo-nth li:nth-child(3n) 
+PASS Detached Element.querySelector: :nth-child selector, matching every third child element: #pseudo-nth li:nth-child(3n) 
+PASS Detached Element.querySelectorAll: :nth-child selector, matching every second child element, starting from the fourth: #pseudo-nth li:nth-child(2n+4) 
+PASS Detached Element.querySelector: :nth-child selector, matching every second child element, starting from the fourth: #pseudo-nth li:nth-child(2n+4) 
+PASS Detached Element.querySelectorAll: :nth-child selector, matching every fourth child element, starting from the third: #pseudo-nth-p1 :nth-child(4n-1) 
+PASS Detached Element.querySelector: :nth-child selector, matching every fourth child element, starting from the third: #pseudo-nth-p1 :nth-child(4n-1) 
+PASS Detached Element.querySelectorAll: :nth-last-child selector, matching the third last child element: #pseudo-nth-table1 :nth-last-child(3) 
+PASS Detached Element.querySelector: :nth-last-child selector, matching the third last child element: #pseudo-nth-table1 :nth-last-child(3) 
+PASS Detached Element.querySelectorAll: :nth-last-child selector, matching every third child element from the end: #pseudo-nth li:nth-last-child(3n) 
+PASS Detached Element.querySelector: :nth-last-child selector, matching every third child element from the end: #pseudo-nth li:nth-last-child(3n) 
+PASS Detached Element.querySelectorAll: :nth-last-child selector, matching every second child element from the end, starting from the fourth last: #pseudo-nth li:nth-last-child(2n+4) 
+PASS Detached Element.querySelector: :nth-last-child selector, matching every second child element from the end, starting from the fourth last: #pseudo-nth li:nth-last-child(2n+4) 
+PASS Detached Element.querySelectorAll: :nth-last-child selector, matching every fourth element from the end, starting from the third last: #pseudo-nth-p1 :nth-last-child(4n-1) 
+PASS Detached Element.querySelector: :nth-last-child selector, matching every fourth element from the end, starting from the third last: #pseudo-nth-p1 :nth-last-child(4n-1) 
+PASS Detached Element.querySelectorAll: :nth-of-type selector, matching the third em element: #pseudo-nth-p1 em:nth-of-type(3) 
+PASS Detached Element.querySelector: :nth-of-type selector, matching the third em element: #pseudo-nth-p1 em:nth-of-type(3) 
+PASS Detached Element.querySelectorAll: :nth-of-type selector, matching every second element of their type: #pseudo-nth-p1 :nth-of-type(2n) 
+PASS Detached Element.querySelector: :nth-of-type selector, matching every second element of their type: #pseudo-nth-p1 :nth-of-type(2n) 
+PASS Detached Element.querySelectorAll: :nth-of-type selector, matching every second elemetn of their type, starting from the first: #pseudo-nth-p1 span:nth-of-type(2n-1) 
+PASS Detached Element.querySelector: :nth-of-type selector, matching every second elemetn of their type, starting from the first: #pseudo-nth-p1 span:nth-of-type(2n-1) 
+PASS Detached Element.querySelectorAll: :nth-last-of-type selector, matching the thrid last em element: #pseudo-nth-p1 em:nth-last-of-type(3) 
+PASS Detached Element.querySelector: :nth-last-of-type selector, matching the thrid last em element: #pseudo-nth-p1 em:nth-last-of-type(3) 
+PASS Detached Element.querySelectorAll: :nth-last-of-type selector, matching every second last element of their type: #pseudo-nth-p1 :nth-last-of-type(2n) 
+PASS Detached Element.querySelector: :nth-last-of-type selector, matching every second last element of their type: #pseudo-nth-p1 :nth-last-of-type(2n) 
+PASS Detached Element.querySelectorAll: :nth-last-of-type selector, matching every second last element of their type, starting from the last: #pseudo-nth-p1 span:nth-last-of-type(2n-1) 
+PASS Detached Element.querySelector: :nth-last-of-type selector, matching every second last element of their type, starting from the last: #pseudo-nth-p1 span:nth-last-of-type(2n-1) 
+PASS Detached Element.querySelectorAll: :first-of-type selector, matching the first em element: #pseudo-nth-p1 em:first-of-type 
+PASS Detached Element.querySelector: :first-of-type selector, matching the first em element: #pseudo-nth-p1 em:first-of-type 
+PASS Detached Element.querySelectorAll: :first-of-type selector, matching the first of every type of element: #pseudo-nth-p1 :first-of-type 
+PASS Detached Element.querySelector: :first-of-type selector, matching the first of every type of element: #pseudo-nth-p1 :first-of-type 
+PASS Detached Element.querySelectorAll: :first-of-type selector, matching the first td element in each table row: #pseudo-nth-table1 tr :first-of-type 
+PASS Detached Element.querySelector: :first-of-type selector, matching the first td element in each table row: #pseudo-nth-table1 tr :first-of-type 
+PASS Detached Element.querySelectorAll: :last-of-type selector, matching the last em elemnet: #pseudo-nth-p1 em:last-of-type 
+PASS Detached Element.querySelector: :last-of-type selector, matching the last em elemnet: #pseudo-nth-p1 em:last-of-type 
+PASS Detached Element.querySelectorAll: :last-of-type selector, matching the last of every type of element: #pseudo-nth-p1 :last-of-type 
+PASS Detached Element.querySelector: :last-of-type selector, matching the last of every type of element: #pseudo-nth-p1 :last-of-type 
+PASS Detached Element.querySelectorAll: :last-of-type selector, matching the last td element in each table row: #pseudo-nth-table1 tr :last-of-type 
+PASS Detached Element.querySelector: :last-of-type selector, matching the last td element in each table row: #pseudo-nth-table1 tr :last-of-type 
+PASS Detached Element.querySelectorAll: :first-child pseudo-class selector, matching first child div element: #pseudo-first-child div:first-child 
+PASS Detached Element.querySelector: :first-child pseudo-class selector, matching first child div element: #pseudo-first-child div:first-child 
+PASS Detached Element.querySelectorAll: :first-child pseudo-class selector, doesn't match non-first-child elements: .pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child 
+PASS Detached Element.querySelector: :first-child pseudo-class selector, doesn't match non-first-child elements: .pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child 
+PASS Detached Element.querySelectorAll: :first-child pseudo-class selector, matching first-child of multiple elements: #pseudo-first-child span:first-child 
+PASS Detached Element.querySelector: :first-child pseudo-class selector, matching first-child of multiple elements: #pseudo-first-child span:first-child 
+PASS Detached Element.querySelectorAll: :last-child pseudo-class selector, matching last child div element: #pseudo-last-child div:last-child 
+PASS Detached Element.querySelector: :last-child pseudo-class selector, matching last child div element: #pseudo-last-child div:last-child 
+PASS Detached Element.querySelectorAll: :last-child pseudo-class selector, doesn't match non-last-child elements: .pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child 
+PASS Detached Element.querySelector: :last-child pseudo-class selector, doesn't match non-last-child elements: .pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child 
+PASS Detached Element.querySelectorAll: :last-child pseudo-class selector, matching first-child of multiple elements: #pseudo-last-child span:last-child 
+PASS Detached Element.querySelector: :last-child pseudo-class selector, matching first-child of multiple elements: #pseudo-last-child span:last-child 
+PASS Detached Element.querySelectorAll: :pseudo-only-child pseudo-class selector, matching all only-child elements: #pseudo-only :only-child 
+PASS Detached Element.querySelector: :pseudo-only-child pseudo-class selector, matching all only-child elements: #pseudo-only :only-child 
+PASS Detached Element.querySelectorAll: :pseudo-only-child pseudo-class selector, matching only-child em elements: #pseudo-only em:only-child 
+PASS Detached Element.querySelector: :pseudo-only-child pseudo-class selector, matching only-child em elements: #pseudo-only em:only-child 
+PASS Detached Element.querySelectorAll: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type: #pseudo-only :only-of-type 
+PASS Detached Element.querySelector: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type: #pseudo-only :only-of-type 
+PASS Detached Element.querySelectorAll: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type: #pseudo-only em:only-of-type 
+PASS Detached Element.querySelector: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type: #pseudo-only em:only-of-type 
+PASS Detached Element.querySelectorAll: :empty pseudo-class selector, matching empty p elements: #pseudo-empty p:empty 
+PASS Detached Element.querySelector: :empty pseudo-class selector, matching empty p elements: #pseudo-empty p:empty 
+PASS Detached Element.querySelectorAll: :empty pseudo-class selector, matching all empty elements: #pseudo-empty :empty 
+PASS Detached Element.querySelector: :empty pseudo-class selector, matching all empty elements: #pseudo-empty :empty 
+PASS Detached Element.querySelectorAll: :link and :visited pseudo-class selectors, matching a and area elements with href attributes: #pseudo-link :link, #pseudo-link :visited 
+PASS Detached Element.querySelector: :link and :visited pseudo-class selectors, matching a and area elements with href attributes: #pseudo-link :link, #pseudo-link :visited 
+PASS Detached Element.querySelectorAll: :link and :visited pseudo-class selectors, not matching link elements with href attributes: #head :link, #head :visited 
+PASS Detached Element.querySelector: :link and :visited pseudo-class selectors, not matching link elements with href attributes: #head :link, #head :visited 
+PASS Detached Element.querySelectorAll: :link and :visited pseudo-class selectors, chained, mutually exclusive pseudo-classes match nothing: :link:visited 
+PASS Detached Element.querySelector: :link and :visited pseudo-class selectors, chained, mutually exclusive pseudo-classes match nothing: :link:visited 
+PASS Detached Element.querySelectorAll: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target 
+PASS Detached Element.querySelector: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target 
+PASS Detached Element.querySelectorAll: :lang pseudo-class selector, not matching element with no inherited language: #pseudo-lang-div1:lang(en) 
+PASS Detached Element.querySelector: :lang pseudo-class selector, not matching element with no inherited language: #pseudo-lang-div1:lang(en) 
+PASS Detached Element.querySelectorAll: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) 
+PASS Detached Element.querySelector: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) 
+PASS Detached Element.querySelectorAll: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) 
+PASS Detached Element.querySelector: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) 
+PASS Detached Element.querySelectorAll: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) 
+PASS Detached Element.querySelector: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) 
+PASS Detached Element.querySelectorAll: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled 
+PASS Detached Element.querySelector: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled 
+PASS Detached Element.querySelectorAll: :enabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled 
+PASS Detached Element.querySelector: :enabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled 
+PASS Detached Element.querySelectorAll: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked 
+PASS Detached Element.querySelector: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked 
+PASS Detached Element.querySelectorAll: :not pseudo-class selector, matching : #not&gt;:not(div) 
+PASS Detached Element.querySelector: :not pseudo-class selector, matching : #not&gt;:not(div) 
+PASS Detached Element.querySelectorAll: :not pseudo-class selector, matching : #not * :not(:first-child) 
+PASS Detached Element.querySelector: :not pseudo-class selector, matching : #not * :not(:first-child) 
+PASS Detached Element.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*) 
+PASS Detached Element.querySelector: :not pseudo-class selector, matching nothing: :not(*) 
+PASS Detached Element.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*|*) 
+PASS Detached Element.querySelector: :not pseudo-class selector, matching nothing: :not(*|*) 
+PASS Detached Element.querySelectorAll: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line 
+PASS Detached Element.querySelector: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line 
+PASS Detached Element.querySelectorAll: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line 
+PASS Detached Element.querySelector: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line 
+PASS Detached Element.querySelectorAll: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter 
+PASS Detached Element.querySelector: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter 
+PASS Detached Element.querySelectorAll: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter 
+PASS Detached Element.querySelector: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter 
+PASS Detached Element.querySelectorAll: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before 
+PASS Detached Element.querySelector: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before 
+PASS Detached Element.querySelectorAll: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before 
+PASS Detached Element.querySelector: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before 
+PASS Detached Element.querySelectorAll: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after 
+PASS Detached Element.querySelector: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after 
+PASS Detached Element.querySelectorAll: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after 
+PASS Detached Element.querySelector: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after 
+PASS Detached Element.querySelectorAll: Class selector, matching element with specified class: .class-p 
+PASS Detached Element.querySelector: Class selector, matching element with specified class: .class-p 
+PASS Detached Element.querySelectorAll: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana 
+PASS Detached Element.querySelector: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana 
+PASS Detached Element.querySelectorAll: Class Selector, chained, with type selector: div.apple.banana.orange 
+PASS Detached Element.querySelector: Class Selector, chained, with type selector: div.apple.banana.orange 
+PASS Detached Element.querySelectorAll: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
+PASS Detached Element.querySelector: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
+PASS Detached Element.querySelectorAll: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
+PASS Detached Element.querySelector: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
+PASS Detached Element.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
+PASS Detached Element.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
+PASS Detached Element.querySelectorAll: Class selector, matching element with class with escaped character: .foo\:bar 
+PASS Detached Element.querySelector: Class selector, matching element with class with escaped character: .foo\:bar 
+PASS Detached Element.querySelectorAll: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar 
+PASS Detached Element.querySelector: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar 
+PASS Detached Element.querySelectorAll: ID selector, matching element with specified id: #id #id-div1 
+PASS Detached Element.querySelector: ID selector, matching element with specified id: #id #id-div1 
+PASS Detached Element.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div1 
+PASS Detached Element.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div1 
+PASS Detached Element.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div2 
+PASS Detached Element.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div2 
+PASS Detached Element.querySelectorAll: ID Selector, chained, with type selector: div#id-div1, div#id-div2 
+PASS Detached Element.querySelector: ID Selector, chained, with type selector: div#id-div1, div#id-div2 
+PASS Detached Element.querySelectorAll: ID selector, not matching non-existent descendant: #id #none 
+PASS Detached Element.querySelector: ID selector, not matching non-existent descendant: #id #none 
+PASS Detached Element.querySelectorAll: ID selector, not matching non-existent ancestor: #none #id-div1 
+PASS Detached Element.querySelector: ID selector, not matching non-existent ancestor: #none #id-div1 
+PASS Detached Element.querySelectorAll: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
+PASS Detached Element.querySelector: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
+PASS Detached Element.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
+PASS Detached Element.querySelector: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
+PASS Detached Element.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北 
+PASS Detached Element.querySelector: ID selector, matching id value using non-ASCII characters: #台北 
+PASS Detached Element.querySelectorAll: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
+PASS Detached Element.querySelector: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
+PASS Detached Element.querySelectorAll: ID selector, matching element with id with escaped character: #\#foo\:bar 
+PASS Detached Element.querySelector: ID selector, matching element with id with escaped character: #\#foo\:bar 
+PASS Detached Element.querySelectorAll: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar 
+PASS Detached Element.querySelector: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar 
+PASS Detached Element.querySelectorAll: Namespace selector, matching element with any namespace: #any-namespace *|div 
+PASS Detached Element.querySelector: Namespace selector, matching element with any namespace: #any-namespace *|div 
+FAIL Detached Element.querySelectorAll: Namespace selector, matching div elements in no namespace only: #no-namespace |div assert_equals: The method should return the expected number of matches. expected 1 but got 4
+FAIL Detached Element.querySelector: Namespace selector, matching div elements in no namespace only: #no-namespace |div assert_equals: The method should return the first match. expected &quot;no-namespace-div3&quot; but got &quot;no-namespace-div1&quot;
+FAIL Detached Element.querySelectorAll: Namespace selector, matching any elements in no namespace only: #no-namespace |* assert_equals: The method should return the expected number of matches. expected 1 but got 4
+FAIL Detached Element.querySelector: Namespace selector, matching any elements in no namespace only: #no-namespace |* assert_equals: The method should return the first match. expected &quot;no-namespace-div3&quot; but got &quot;no-namespace-div1&quot;
+PASS Detached Element.querySelectorAll: Descendant combinator, matching element that is a descendant of an element with id: #descendant div 
+PASS Detached Element.querySelector: Descendant combinator, matching element that is a descendant of an element with id: #descendant div 
+PASS Detached Element.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 
+PASS Detached Element.querySelector: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 
+PASS Detached Element.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 
+PASS Detached Element.querySelector: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 
+PASS Detached Element.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 
+PASS Detached Element.querySelector: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 
+PASS Detached Element.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 
+PASS Detached Element.querySelector: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 
+PASS Detached Element.querySelectorAll: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 
+PASS Detached Element.querySelector: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 
+PASS Detached Element.querySelectorAll: Descendant combinator, whitespace characters: #descendant        
+#descendant-div2 
+PASS Detached Element.querySelector: Descendant combinator, whitespace characters: #descendant        
+#descendant-div2 
+PASS Detached Element.querySelectorAll: Child combinator, matching element that is a child of an element with id: #child&gt;div 
+PASS Detached Element.querySelector: Child combinator, matching element that is a child of an element with id: #child&gt;div 
+PASS Detached Element.querySelectorAll: Child combinator, matching element with id that is a child of an element: div&gt;#child-div1 
+PASS Detached Element.querySelector: Child combinator, matching element with id that is a child of an element: div&gt;#child-div1 
+PASS Detached Element.querySelectorAll: Child combinator, matching element with id that is a child of an element with id: #child&gt;#child-div1 
+PASS Detached Element.querySelector: Child combinator, matching element with id that is a child of an element with id: #child&gt;#child-div1 
+PASS Detached Element.querySelectorAll: Child combinator, matching element with id that is a child of an element with class: #child-div1&gt;.child-div2 
+PASS Detached Element.querySelector: Child combinator, matching element with id that is a child of an element with class: #child-div1&gt;.child-div2 
+PASS Detached Element.querySelectorAll: Child combinator, matching element with class that is a child of an element with class: .child-div1&gt;.child-div2 
+PASS Detached Element.querySelector: Child combinator, matching element with class that is a child of an element with class: .child-div1&gt;.child-div2 
+PASS Detached Element.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with id: #child&gt;#child-div3 
+PASS Detached Element.querySelector: Child combinator, not matching element with id that is not a child of an element with id: #child&gt;#child-div3 
+PASS Detached Element.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with class: #child-div1&gt;.child-div3 
+PASS Detached Element.querySelector: Child combinator, not matching element with id that is not a child of an element with class: #child-div1&gt;.child-div3 
+PASS Detached Element.querySelectorAll: Child combinator, not matching element with class that is not a child of an element with class: .child-div1&gt;.child-div3 
+PASS Detached Element.querySelector: Child combinator, not matching element with class that is not a child of an element with class: .child-div1&gt;.child-div3 
+PASS Detached Element.querySelectorAll: Child combinator, surrounded by whitespace: #child-div1        
+&gt;        
+#child-div2 
+PASS Detached Element.querySelector: Child combinator, surrounded by whitespace: #child-div1        
+&gt;        
+#child-div2 
+PASS Detached Element.querySelectorAll: Child combinator, whitespace after: #child-div1&gt;        
+#child-div2 
+PASS Detached Element.querySelector: Child combinator, whitespace after: #child-div1&gt;        
+#child-div2 
+PASS Detached Element.querySelectorAll: Child combinator, whitespace before: #child-div1        
+&gt;#child-div2 
+PASS Detached Element.querySelector: Child combinator, whitespace before: #child-div1        
+&gt;#child-div2 
+PASS Detached Element.querySelectorAll: Child combinator, no whitespace: #child-div1&gt;#child-div2 
+PASS Detached Element.querySelector: Child combinator, no whitespace: #child-div1&gt;#child-div2 
+PASS Detached Element.querySelectorAll: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div 
+PASS Detached Element.querySelector: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div 
+PASS Detached Element.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 
+PASS Detached Element.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 
+PASS Detached Element.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 
+PASS Detached Element.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 
+PASS Detached Element.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 
+PASS Detached Element.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 
+PASS Detached Element.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 
+PASS Detached Element.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 
+PASS Detached Element.querySelectorAll: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p 
+PASS Detached Element.querySelector: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p 
+PASS Detached Element.querySelectorAll: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 
+PASS Detached Element.querySelector: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 
+PASS Detached Element.querySelectorAll: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2        
++        
+#adjacent-p3 
+PASS Detached Element.querySelector: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2        
++        
+#adjacent-p3 
+PASS Detached Element.querySelectorAll: Adjacent sibling combinator, whitespace after: #adjacent-p2+        
+#adjacent-p3 
+PASS Detached Element.querySelector: Adjacent sibling combinator, whitespace after: #adjacent-p2+        
+#adjacent-p3 
+PASS Detached Element.querySelectorAll: Adjacent sibling combinator, whitespace before: #adjacent-p2        
++#adjacent-p3 
+PASS Detached Element.querySelector: Adjacent sibling combinator, whitespace before: #adjacent-p2        
++#adjacent-p3 
+PASS Detached Element.querySelectorAll: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 
+PASS Detached Element.querySelector: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 
+PASS Detached Element.querySelectorAll: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div 
+PASS Detached Element.querySelector: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div 
+PASS Detached Element.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 
+PASS Detached Element.querySelector: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 
+PASS Detached Element.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 
+PASS Detached Element.querySelector: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 
+PASS Detached Element.querySelectorAll: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div 
+PASS Detached Element.querySelector: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div 
+PASS Detached Element.querySelectorAll: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p 
+PASS Detached Element.querySelector: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p 
+PASS Detached Element.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling&gt;p~div 
+PASS Detached Element.querySelector: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling&gt;p~div 
+PASS Detached Element.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 
+PASS Detached Element.querySelector: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 
+PASS Detached Element.querySelectorAll: General sibling combinator, surrounded by whitespace: #sibling-p2        
+~        
+#sibling-p3 
+PASS Detached Element.querySelector: General sibling combinator, surrounded by whitespace: #sibling-p2        
+~        
+#sibling-p3 
+PASS Detached Element.querySelectorAll: General sibling combinator, whitespace after: #sibling-p2~        
+#sibling-p3 
+PASS Detached Element.querySelector: General sibling combinator, whitespace after: #sibling-p2~        
+#sibling-p3 
+PASS Detached Element.querySelectorAll: General sibling combinator, whitespace before: #sibling-p2        
+~#sibling-p3 
+PASS Detached Element.querySelector: General sibling combinator, whitespace before: #sibling-p2        
+~#sibling-p3 
+PASS Detached Element.querySelectorAll: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 
+PASS Detached Element.querySelector: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 
+PASS Detached Element.querySelectorAll: Syntax, group of selectors separator, surrounded by whitespace: #group em        

+,        

+#group strong 
+PASS Detached Element.querySelector: Syntax, group of selectors separator, surrounded by whitespace: #group em        

+,        

+#group strong 
+PASS Detached Element.querySelectorAll: Syntax, group of selectors separator, whitespace after: #group em,        
+#group strong 
+PASS Detached Element.querySelector: Syntax, group of selectors separator, whitespace after: #group em,        
+#group strong 
+PASS Detached Element.querySelectorAll: Syntax, group of selectors separator, whitespace before: #group em        
+,#group strong 
+PASS Detached Element.querySelector: Syntax, group of selectors separator, whitespace before: #group em        
+,#group strong 
+PASS Detached Element.querySelectorAll: Syntax, group of selectors separator, no whitespace: #group em,#group strong 
+PASS Detached Element.querySelector: Syntax, group of selectors separator, no whitespace: #group em,#group strong 
+PASS Fragment.querySelectorAll: Type selector, matching html element: html 
+PASS Fragment.querySelector: Type selector, matching html element: html 
+PASS Fragment.querySelectorAll: Type selector, matching body element: body 
+PASS Fragment.querySelector: Type selector, matching body element: body 
+PASS Fragment.querySelectorAll: Universal selector, matching all children of element with specified ID: #universal&gt;* 
+PASS Fragment.querySelector: Universal selector, matching all children of element with specified ID: #universal&gt;* 
+PASS Fragment.querySelectorAll: Universal selector, matching all grandchildren of element with specified ID: #universal&gt;*&gt;* 
+PASS Fragment.querySelector: Universal selector, matching all grandchildren of element with specified ID: #universal&gt;*&gt;* 
+PASS Fragment.querySelectorAll: Universal selector, matching all children of empty element with specified ID: #empty&gt;* 
+PASS Fragment.querySelector: Universal selector, matching all children of empty element with specified ID: #empty&gt;* 
+PASS Fragment.querySelectorAll: Universal selector, matching all descendants of element with specified ID: #universal * 
+PASS Fragment.querySelector: Universal selector, matching all descendants of element with specified ID: #universal * 
+PASS Fragment.querySelectorAll: Attribute presence selector, matching align attribute with value: .attr-presence-div1[align] 
+PASS Fragment.querySelector: Attribute presence selector, matching align attribute with value: .attr-presence-div1[align] 
+PASS Fragment.querySelectorAll: Attribute presence selector, matching align attribute with empty value: .attr-presence-div2[align] 
+PASS Fragment.querySelector: Attribute presence selector, matching align attribute with empty value: .attr-presence-div2[align] 
+PASS Fragment.querySelectorAll: Attribute presence selector, not matching title attribute, case sensitivity: #attr-presence [TiTlE] 
+PASS Fragment.querySelector: Attribute presence selector, not matching title attribute, case sensitivity: #attr-presence [TiTlE] 
+PASS Fragment.querySelectorAll: Attribute presence selector, matching custom data-* attribute: [data-attr-presence] 
+PASS Fragment.querySelector: Attribute presence selector, matching custom data-* attribute: [data-attr-presence] 
+PASS Fragment.querySelectorAll: Attribute presence selector, not matching attribute with similar name: .attr-presence-div3[align], .attr-presence-div4[align] 
+PASS Fragment.querySelector: Attribute presence selector, not matching attribute with similar name: .attr-presence-div3[align], .attr-presence-div4[align] 
+PASS Fragment.querySelectorAll: Attribute presence selector, matching attribute with non-ASCII characters: ul[data-中文] 
+PASS Fragment.querySelector: Attribute presence selector, matching attribute with non-ASCII characters: ul[data-中文] 
+PASS Fragment.querySelectorAll: Attribute presence selector, not matching default option without selected attribute: #attr-presence-select1 option[selected] 
+PASS Fragment.querySelector: Attribute presence selector, not matching default option without selected attribute: #attr-presence-select1 option[selected] 
+PASS Fragment.querySelectorAll: Attribute presence selector, matching option with selected attribute: #attr-presence-select2 option[selected] 
+PASS Fragment.querySelector: Attribute presence selector, matching option with selected attribute: #attr-presence-select2 option[selected] 
+PASS Fragment.querySelectorAll: Attribute presence selector, matching multiple options with selected attributes: #attr-presence-select3 option[selected] 
+PASS Fragment.querySelector: Attribute presence selector, matching multiple options with selected attributes: #attr-presence-select3 option[selected] 
+PASS Fragment.querySelectorAll: Attribute value selector, matching align attribute with value: #attr-value [align=&quot;center&quot;] 
+PASS Fragment.querySelector: Attribute value selector, matching align attribute with value: #attr-value [align=&quot;center&quot;] 
+PASS Fragment.querySelectorAll: Attribute value selector, matching align attribute with empty value: #attr-value [align=&quot;&quot;] 
+PASS Fragment.querySelector: Attribute value selector, matching align attribute with empty value: #attr-value [align=&quot;&quot;] 
+PASS Fragment.querySelectorAll: Attribute value selector, not matching align attribute with partial value: #attr-value [align=&quot;c&quot;] 
+PASS Fragment.querySelector: Attribute value selector, not matching align attribute with partial value: #attr-value [align=&quot;c&quot;] 
+PASS Fragment.querySelectorAll: Attribute value selector, not matching align attribute with incorrect value: #attr-value [align=&quot;centera&quot;] 
+PASS Fragment.querySelector: Attribute value selector, not matching align attribute with incorrect value: #attr-value [align=&quot;centera&quot;] 
+PASS Fragment.querySelectorAll: Attribute value selector, matching custom data-* attribute with unicode escaped value: [data-attr-value=&quot;\e9&quot;] 
+PASS Fragment.querySelector: Attribute value selector, matching custom data-* attribute with unicode escaped value: [data-attr-value=&quot;\e9&quot;] 
+PASS Fragment.querySelectorAll: Attribute value selector, matching custom data-* attribute with escaped character: [data-attr-value_foo=&quot;\e9&quot;] 
+PASS Fragment.querySelector: Attribute value selector, matching custom data-* attribute with escaped character: [data-attr-value_foo=&quot;\e9&quot;] 
+PASS Fragment.querySelectorAll: Attribute value selector with single-quoted value, matching multiple inputs with type attributes: #attr-value input[type='hidden'],#attr-value input[type='radio'] 
+PASS Fragment.querySelector: Attribute value selector with single-quoted value, matching multiple inputs with type attributes: #attr-value input[type='hidden'],#attr-value input[type='radio'] 
+PASS Fragment.querySelectorAll: Attribute value selector with double-quoted value, matching multiple inputs with type attributes: #attr-value input[type=&quot;hidden&quot;],#attr-value input[type='radio'] 
+PASS Fragment.querySelector: Attribute value selector with double-quoted value, matching multiple inputs with type attributes: #attr-value input[type=&quot;hidden&quot;],#attr-value input[type='radio'] 
+PASS Fragment.querySelectorAll: Attribute value selector with unquoted value, matching multiple inputs with type attributes: #attr-value input[type=hidden],#attr-value input[type=radio] 
+PASS Fragment.querySelector: Attribute value selector with unquoted value, matching multiple inputs with type attributes: #attr-value input[type=hidden],#attr-value input[type=radio] 
+PASS Fragment.querySelectorAll: Attribute value selector, matching attribute with value using non-ASCII characters: [data-attr-value=中文] 
+PASS Fragment.querySelector: Attribute value selector, matching attribute with value using non-ASCII characters: [data-attr-value=中文] 
+PASS Fragment.querySelectorAll: Attribute whitespace-separated list selector, matching class attribute with value: #attr-whitespace [class~=&quot;div1&quot;] 
+PASS Fragment.querySelector: Attribute whitespace-separated list selector, matching class attribute with value: #attr-whitespace [class~=&quot;div1&quot;] 
+PASS Fragment.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=&quot;&quot;] 
+PASS Fragment.querySelector: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=&quot;&quot;] 
+PASS Fragment.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with partial value: [data-attr-whitespace~=&quot;div&quot;] 
+PASS Fragment.querySelector: Attribute whitespace-separated list selector, not matching class attribute with partial value: [data-attr-whitespace~=&quot;div&quot;] 
+PASS Fragment.querySelectorAll: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value: [data-attr-whitespace~=&quot;\0000e9&quot;] 
+PASS Fragment.querySelector: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value: [data-attr-whitespace~=&quot;\0000e9&quot;] 
+PASS Fragment.querySelectorAll: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character: [data-attr-whitespace_foo~=&quot;\e9&quot;] 
+PASS Fragment.querySelector: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character: [data-attr-whitespace_foo~=&quot;\e9&quot;] 
+PASS Fragment.querySelectorAll: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~='bookmark'],  #attr-whitespace a[rel~='nofollow'] 
+PASS Fragment.querySelector: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~='bookmark'],  #attr-whitespace a[rel~='nofollow'] 
+PASS Fragment.querySelectorAll: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=&quot;bookmark&quot;],#attr-whitespace a[rel~='nofollow'] 
+PASS Fragment.querySelector: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=&quot;bookmark&quot;],#attr-whitespace a[rel~='nofollow'] 
+PASS Fragment.querySelectorAll: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=bookmark],    #attr-whitespace a[rel~=nofollow] 
+PASS Fragment.querySelector: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=bookmark],    #attr-whitespace a[rel~=nofollow] 
+PASS Fragment.querySelectorAll: Attribute whitespace-separated list selector with double-quoted value, not matching value with space: #attr-whitespace a[rel~=&quot;book mark&quot;] 
+PASS Fragment.querySelector: Attribute whitespace-separated list selector with double-quoted value, not matching value with space: #attr-whitespace a[rel~=&quot;book mark&quot;] 
+PASS Fragment.querySelectorAll: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters: #attr-whitespace [title~=中文] 
+PASS Fragment.querySelector: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters: #attr-whitespace [title~=中文] 
+PASS Fragment.querySelectorAll: Attribute hyphen-separated list selector, not matching unspecified lang attribute: #attr-hyphen-div1[lang|=&quot;en&quot;] 
+PASS Fragment.querySelector: Attribute hyphen-separated list selector, not matching unspecified lang attribute: #attr-hyphen-div1[lang|=&quot;en&quot;] 
+PASS Fragment.querySelectorAll: Attribute hyphen-separated list selector, matching lang attribute with exact value: #attr-hyphen-div2[lang|=&quot;fr&quot;] 
+PASS Fragment.querySelector: Attribute hyphen-separated list selector, matching lang attribute with exact value: #attr-hyphen-div2[lang|=&quot;fr&quot;] 
+PASS Fragment.querySelectorAll: Attribute hyphen-separated list selector, matching lang attribute with partial value: #attr-hyphen-div3[lang|=&quot;en&quot;] 
+PASS Fragment.querySelector: Attribute hyphen-separated list selector, matching lang attribute with partial value: #attr-hyphen-div3[lang|=&quot;en&quot;] 
+PASS Fragment.querySelectorAll: Attribute hyphen-separated list selector, not matching incorrect value: #attr-hyphen-div4[lang|=&quot;es-AR&quot;] 
+PASS Fragment.querySelector: Attribute hyphen-separated list selector, not matching incorrect value: #attr-hyphen-div4[lang|=&quot;es-AR&quot;] 
+PASS Fragment.querySelectorAll: Attribute begins with selector, matching href attributes beginning with specified substring: #attr-begins a[href^=&quot;http://www&quot;] 
+PASS Fragment.querySelector: Attribute begins with selector, matching href attributes beginning with specified substring: #attr-begins a[href^=&quot;http://www&quot;] 
+PASS Fragment.querySelectorAll: Attribute begins with selector, matching lang attributes beginning with specified substring, : #attr-begins [lang^=&quot;en-&quot;] 
+PASS Fragment.querySelector: Attribute begins with selector, matching lang attributes beginning with specified substring, : #attr-begins [lang^=&quot;en-&quot;] 
+PASS Fragment.querySelectorAll: Attribute begins with selector, not matching class attribute not beginning with specified substring: #attr-begins [class^=apple] 
+PASS Fragment.querySelector: Attribute begins with selector, not matching class attribute not beginning with specified substring: #attr-begins [class^=apple] 
+PASS Fragment.querySelectorAll: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=' apple'] 
+PASS Fragment.querySelector: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=' apple'] 
+PASS Fragment.querySelectorAll: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=&quot; apple&quot;] 
+PASS Fragment.querySelector: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=&quot; apple&quot;] 
+PASS Fragment.querySelectorAll: Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring: #attr-begins [class^= apple] 
+PASS Fragment.querySelector: Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring: #attr-begins [class^= apple] 
+PASS Fragment.querySelectorAll: Attribute ends with selector, matching href attributes ending with specified substring: #attr-ends a[href$=&quot;.org&quot;] 
+PASS Fragment.querySelector: Attribute ends with selector, matching href attributes ending with specified substring: #attr-ends a[href$=&quot;.org&quot;] 
+PASS Fragment.querySelectorAll: Attribute ends with selector, matching lang attributes ending with specified substring, : #attr-ends [lang$=&quot;-CH&quot;] 
+PASS Fragment.querySelector: Attribute ends with selector, matching lang attributes ending with specified substring, : #attr-ends [lang$=&quot;-CH&quot;] 
+PASS Fragment.querySelectorAll: Attribute ends with selector, not matching class attribute not ending with specified substring: #attr-ends [class$=apple] 
+PASS Fragment.querySelector: Attribute ends with selector, not matching class attribute not ending with specified substring: #attr-ends [class$=apple] 
+PASS Fragment.querySelectorAll: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring: #attr-ends [class$='apple '] 
+PASS Fragment.querySelector: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring: #attr-ends [class$='apple '] 
+PASS Fragment.querySelectorAll: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring: #attr-ends [class$=&quot;apple &quot;] 
+PASS Fragment.querySelector: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring: #attr-ends [class$=&quot;apple &quot;] 
+PASS Fragment.querySelectorAll: Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring: #attr-ends [class$=apple ] 
+PASS Fragment.querySelector: Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring: #attr-ends [class$=apple ] 
+PASS Fragment.querySelectorAll: Attribute contains selector, matching href attributes beginning with specified substring: #attr-contains a[href*=&quot;http://www&quot;] 
+PASS Fragment.querySelector: Attribute contains selector, matching href attributes beginning with specified substring: #attr-contains a[href*=&quot;http://www&quot;] 
+PASS Fragment.querySelectorAll: Attribute contains selector, matching href attributes ending with specified substring: #attr-contains a[href*=&quot;.org&quot;] 
+PASS Fragment.querySelector: Attribute contains selector, matching href attributes ending with specified substring: #attr-contains a[href*=&quot;.org&quot;] 
+PASS Fragment.querySelectorAll: Attribute contains selector, matching href attributes containing specified substring: #attr-contains a[href*=&quot;.example.&quot;] 
+PASS Fragment.querySelector: Attribute contains selector, matching href attributes containing specified substring: #attr-contains a[href*=&quot;.example.&quot;] 
+PASS Fragment.querySelectorAll: Attribute contains selector, matching lang attributes beginning with specified substring, : #attr-contains [lang*=&quot;en-&quot;] 
+PASS Fragment.querySelector: Attribute contains selector, matching lang attributes beginning with specified substring, : #attr-contains [lang*=&quot;en-&quot;] 
+PASS Fragment.querySelectorAll: Attribute contains selector, matching lang attributes ending with specified substring, : #attr-contains [lang*=&quot;-CH&quot;] 
+PASS Fragment.querySelector: Attribute contains selector, matching lang attributes ending with specified substring, : #attr-contains [lang*=&quot;-CH&quot;] 
+PASS Fragment.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=' apple'] 
+PASS Fragment.querySelector: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=' apple'] 
+PASS Fragment.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring: #attr-contains [class*='orange '] 
+PASS Fragment.querySelector: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring: #attr-contains [class*='orange '] 
+PASS Fragment.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute containing specified substring: #attr-contains [class*='ple banana ora'] 
+PASS Fragment.querySelector: Attribute contains selector with single-quoted value, matching class attribute containing specified substring: #attr-contains [class*='ple banana ora'] 
+PASS Fragment.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=&quot; apple&quot;] 
+PASS Fragment.querySelector: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=&quot; apple&quot;] 
+PASS Fragment.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring: #attr-contains [class*=&quot;orange &quot;] 
+PASS Fragment.querySelector: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring: #attr-contains [class*=&quot;orange &quot;] 
+PASS Fragment.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute containing specified substring: #attr-contains [class*=&quot;ple banana ora&quot;] 
+PASS Fragment.querySelector: Attribute contains selector with double-quoted value, matching class attribute containing specified substring: #attr-contains [class*=&quot;ple banana ora&quot;] 
+PASS Fragment.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring: #attr-contains [class*= apple] 
+PASS Fragment.querySelector: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring: #attr-contains [class*= apple] 
+PASS Fragment.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute ending with specified substring: #attr-contains [class*=orange ] 
+PASS Fragment.querySelector: Attribute contains selector with unquoted value, matching class attribute ending with specified substring: #attr-contains [class*=orange ] 
+PASS Fragment.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute containing specified substring: #attr-contains [class*= banana ] 
+PASS Fragment.querySelector: Attribute contains selector with unquoted value, matching class attribute containing specified substring: #attr-contains [class*= banana ] 
+PASS Fragment.querySelectorAll: :root pseudo-class selector, not matching document root element: :root 
+PASS Fragment.querySelector: :root pseudo-class selector, not matching document root element: :root 
+PASS Fragment.querySelectorAll: :nth-child selector, matching the third child element: #pseudo-nth-table1 :nth-child(3) 
+PASS Fragment.querySelector: :nth-child selector, matching the third child element: #pseudo-nth-table1 :nth-child(3) 
+PASS Fragment.querySelectorAll: :nth-child selector, matching every third child element: #pseudo-nth li:nth-child(3n) 
+PASS Fragment.querySelector: :nth-child selector, matching every third child element: #pseudo-nth li:nth-child(3n) 
+PASS Fragment.querySelectorAll: :nth-child selector, matching every second child element, starting from the fourth: #pseudo-nth li:nth-child(2n+4) 
+PASS Fragment.querySelector: :nth-child selector, matching every second child element, starting from the fourth: #pseudo-nth li:nth-child(2n+4) 
+PASS Fragment.querySelectorAll: :nth-child selector, matching every fourth child element, starting from the third: #pseudo-nth-p1 :nth-child(4n-1) 
+PASS Fragment.querySelector: :nth-child selector, matching every fourth child element, starting from the third: #pseudo-nth-p1 :nth-child(4n-1) 
+PASS Fragment.querySelectorAll: :nth-last-child selector, matching the third last child element: #pseudo-nth-table1 :nth-last-child(3) 
+PASS Fragment.querySelector: :nth-last-child selector, matching the third last child element: #pseudo-nth-table1 :nth-last-child(3) 
+PASS Fragment.querySelectorAll: :nth-last-child selector, matching every third child element from the end: #pseudo-nth li:nth-last-child(3n) 
+PASS Fragment.querySelector: :nth-last-child selector, matching every third child element from the end: #pseudo-nth li:nth-last-child(3n) 
+PASS Fragment.querySelectorAll: :nth-last-child selector, matching every second child element from the end, starting from the fourth last: #pseudo-nth li:nth-last-child(2n+4) 
+PASS Fragment.querySelector: :nth-last-child selector, matching every second child element from the end, starting from the fourth last: #pseudo-nth li:nth-last-child(2n+4) 
+PASS Fragment.querySelectorAll: :nth-last-child selector, matching every fourth element from the end, starting from the third last: #pseudo-nth-p1 :nth-last-child(4n-1) 
+PASS Fragment.querySelector: :nth-last-child selector, matching every fourth element from the end, starting from the third last: #pseudo-nth-p1 :nth-last-child(4n-1) 
+PASS Fragment.querySelectorAll: :nth-of-type selector, matching the third em element: #pseudo-nth-p1 em:nth-of-type(3) 
+PASS Fragment.querySelector: :nth-of-type selector, matching the third em element: #pseudo-nth-p1 em:nth-of-type(3) 
+PASS Fragment.querySelectorAll: :nth-of-type selector, matching every second element of their type: #pseudo-nth-p1 :nth-of-type(2n) 
+PASS Fragment.querySelector: :nth-of-type selector, matching every second element of their type: #pseudo-nth-p1 :nth-of-type(2n) 
+PASS Fragment.querySelectorAll: :nth-of-type selector, matching every second elemetn of their type, starting from the first: #pseudo-nth-p1 span:nth-of-type(2n-1) 
+PASS Fragment.querySelector: :nth-of-type selector, matching every second elemetn of their type, starting from the first: #pseudo-nth-p1 span:nth-of-type(2n-1) 
+PASS Fragment.querySelectorAll: :nth-last-of-type selector, matching the thrid last em element: #pseudo-nth-p1 em:nth-last-of-type(3) 
+PASS Fragment.querySelector: :nth-last-of-type selector, matching the thrid last em element: #pseudo-nth-p1 em:nth-last-of-type(3) 
+PASS Fragment.querySelectorAll: :nth-last-of-type selector, matching every second last element of their type: #pseudo-nth-p1 :nth-last-of-type(2n) 
+PASS Fragment.querySelector: :nth-last-of-type selector, matching every second last element of their type: #pseudo-nth-p1 :nth-last-of-type(2n) 
+PASS Fragment.querySelectorAll: :nth-last-of-type selector, matching every second last element of their type, starting from the last: #pseudo-nth-p1 span:nth-last-of-type(2n-1) 
+PASS Fragment.querySelector: :nth-last-of-type selector, matching every second last element of their type, starting from the last: #pseudo-nth-p1 span:nth-last-of-type(2n-1) 
+PASS Fragment.querySelectorAll: :first-of-type selector, matching the first em element: #pseudo-nth-p1 em:first-of-type 
+PASS Fragment.querySelector: :first-of-type selector, matching the first em element: #pseudo-nth-p1 em:first-of-type 
+PASS Fragment.querySelectorAll: :first-of-type selector, matching the first of every type of element: #pseudo-nth-p1 :first-of-type 
+PASS Fragment.querySelector: :first-of-type selector, matching the first of every type of element: #pseudo-nth-p1 :first-of-type 
+PASS Fragment.querySelectorAll: :first-of-type selector, matching the first td element in each table row: #pseudo-nth-table1 tr :first-of-type 
+PASS Fragment.querySelector: :first-of-type selector, matching the first td element in each table row: #pseudo-nth-table1 tr :first-of-type 
+PASS Fragment.querySelectorAll: :last-of-type selector, matching the last em elemnet: #pseudo-nth-p1 em:last-of-type 
+PASS Fragment.querySelector: :last-of-type selector, matching the last em elemnet: #pseudo-nth-p1 em:last-of-type 
+PASS Fragment.querySelectorAll: :last-of-type selector, matching the last of every type of element: #pseudo-nth-p1 :last-of-type 
+PASS Fragment.querySelector: :last-of-type selector, matching the last of every type of element: #pseudo-nth-p1 :last-of-type 
+PASS Fragment.querySelectorAll: :last-of-type selector, matching the last td element in each table row: #pseudo-nth-table1 tr :last-of-type 
+PASS Fragment.querySelector: :last-of-type selector, matching the last td element in each table row: #pseudo-nth-table1 tr :last-of-type 
+PASS Fragment.querySelectorAll: :first-child pseudo-class selector, matching first child div element: #pseudo-first-child div:first-child 
+PASS Fragment.querySelector: :first-child pseudo-class selector, matching first child div element: #pseudo-first-child div:first-child 
+PASS Fragment.querySelectorAll: :first-child pseudo-class selector, doesn't match non-first-child elements: .pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child 
+PASS Fragment.querySelector: :first-child pseudo-class selector, doesn't match non-first-child elements: .pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child 
+PASS Fragment.querySelectorAll: :first-child pseudo-class selector, matching first-child of multiple elements: #pseudo-first-child span:first-child 
+PASS Fragment.querySelector: :first-child pseudo-class selector, matching first-child of multiple elements: #pseudo-first-child span:first-child 
+PASS Fragment.querySelectorAll: :last-child pseudo-class selector, matching last child div element: #pseudo-last-child div:last-child 
+PASS Fragment.querySelector: :last-child pseudo-class selector, matching last child div element: #pseudo-last-child div:last-child 
+PASS Fragment.querySelectorAll: :last-child pseudo-class selector, doesn't match non-last-child elements: .pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child 
+PASS Fragment.querySelector: :last-child pseudo-class selector, doesn't match non-last-child elements: .pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child 
+PASS Fragment.querySelectorAll: :last-child pseudo-class selector, matching first-child of multiple elements: #pseudo-last-child span:last-child 
+PASS Fragment.querySelector: :last-child pseudo-class selector, matching first-child of multiple elements: #pseudo-last-child span:last-child 
+PASS Fragment.querySelectorAll: :pseudo-only-child pseudo-class selector, matching all only-child elements: #pseudo-only :only-child 
+PASS Fragment.querySelector: :pseudo-only-child pseudo-class selector, matching all only-child elements: #pseudo-only :only-child 
+PASS Fragment.querySelectorAll: :pseudo-only-child pseudo-class selector, matching only-child em elements: #pseudo-only em:only-child 
+PASS Fragment.querySelector: :pseudo-only-child pseudo-class selector, matching only-child em elements: #pseudo-only em:only-child 
+PASS Fragment.querySelectorAll: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type: #pseudo-only :only-of-type 
+PASS Fragment.querySelector: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type: #pseudo-only :only-of-type 
+PASS Fragment.querySelectorAll: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type: #pseudo-only em:only-of-type 
+PASS Fragment.querySelector: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type: #pseudo-only em:only-of-type 
+PASS Fragment.querySelectorAll: :empty pseudo-class selector, matching empty p elements: #pseudo-empty p:empty 
+PASS Fragment.querySelector: :empty pseudo-class selector, matching empty p elements: #pseudo-empty p:empty 
+PASS Fragment.querySelectorAll: :empty pseudo-class selector, matching all empty elements: #pseudo-empty :empty 
+PASS Fragment.querySelector: :empty pseudo-class selector, matching all empty elements: #pseudo-empty :empty 
+PASS Fragment.querySelectorAll: :link and :visited pseudo-class selectors, matching a and area elements with href attributes: #pseudo-link :link, #pseudo-link :visited 
+PASS Fragment.querySelector: :link and :visited pseudo-class selectors, matching a and area elements with href attributes: #pseudo-link :link, #pseudo-link :visited 
+PASS Fragment.querySelectorAll: :link and :visited pseudo-class selectors, not matching link elements with href attributes: #head :link, #head :visited 
+PASS Fragment.querySelector: :link and :visited pseudo-class selectors, not matching link elements with href attributes: #head :link, #head :visited 
+PASS Fragment.querySelectorAll: :link and :visited pseudo-class selectors, chained, mutually exclusive pseudo-classes match nothing: :link:visited 
+PASS Fragment.querySelector: :link and :visited pseudo-class selectors, chained, mutually exclusive pseudo-classes match nothing: :link:visited 
+PASS Fragment.querySelectorAll: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target 
+PASS Fragment.querySelector: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target 
+PASS Fragment.querySelectorAll: :lang pseudo-class selector, not matching element with no inherited language: #pseudo-lang-div1:lang(en) 
+PASS Fragment.querySelector: :lang pseudo-class selector, not matching element with no inherited language: #pseudo-lang-div1:lang(en) 
+PASS Fragment.querySelectorAll: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) 
+PASS Fragment.querySelector: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) 
+PASS Fragment.querySelectorAll: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) 
+PASS Fragment.querySelector: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) 
+PASS Fragment.querySelectorAll: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) 
+PASS Fragment.querySelector: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) 
+PASS Fragment.querySelectorAll: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled 
+PASS Fragment.querySelector: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled 
+PASS Fragment.querySelectorAll: :enabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled 
+PASS Fragment.querySelector: :enabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled 
+PASS Fragment.querySelectorAll: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked 
+PASS Fragment.querySelector: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked 
+PASS Fragment.querySelectorAll: :not pseudo-class selector, matching : #not&gt;:not(div) 
+PASS Fragment.querySelector: :not pseudo-class selector, matching : #not&gt;:not(div) 
+PASS Fragment.querySelectorAll: :not pseudo-class selector, matching : #not * :not(:first-child) 
+PASS Fragment.querySelector: :not pseudo-class selector, matching : #not * :not(:first-child) 
+PASS Fragment.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*) 
+PASS Fragment.querySelector: :not pseudo-class selector, matching nothing: :not(*) 
+PASS Fragment.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*|*) 
+PASS Fragment.querySelector: :not pseudo-class selector, matching nothing: :not(*|*) 
+PASS Fragment.querySelectorAll: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line 
+PASS Fragment.querySelector: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line 
+PASS Fragment.querySelectorAll: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line 
+PASS Fragment.querySelector: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line 
+PASS Fragment.querySelectorAll: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter 
+PASS Fragment.querySelector: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter 
+PASS Fragment.querySelectorAll: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter 
+PASS Fragment.querySelector: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter 
+PASS Fragment.querySelectorAll: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before 
+PASS Fragment.querySelector: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before 
+PASS Fragment.querySelectorAll: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before 
+PASS Fragment.querySelector: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before 
+PASS Fragment.querySelectorAll: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after 
+PASS Fragment.querySelector: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after 
+PASS Fragment.querySelectorAll: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after 
+PASS Fragment.querySelector: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after 
+PASS Fragment.querySelectorAll: Class selector, matching element with specified class: .class-p 
+PASS Fragment.querySelector: Class selector, matching element with specified class: .class-p 
+PASS Fragment.querySelectorAll: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana 
+PASS Fragment.querySelector: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana 
+PASS Fragment.querySelectorAll: Class Selector, chained, with type selector: div.apple.banana.orange 
+PASS Fragment.querySelector: Class Selector, chained, with type selector: div.apple.banana.orange 
+PASS Fragment.querySelectorAll: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
+PASS Fragment.querySelector: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
+PASS Fragment.querySelectorAll: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
+PASS Fragment.querySelector: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
+PASS Fragment.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
+PASS Fragment.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
+PASS Fragment.querySelectorAll: Class selector, matching element with class with escaped character: .foo\:bar 
+PASS Fragment.querySelector: Class selector, matching element with class with escaped character: .foo\:bar 
+PASS Fragment.querySelectorAll: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar 
+PASS Fragment.querySelector: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar 
+PASS Fragment.querySelectorAll: ID selector, matching element with specified id: #id #id-div1 
+PASS Fragment.querySelector: ID selector, matching element with specified id: #id #id-div1 
+PASS Fragment.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div1 
+PASS Fragment.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div1 
+PASS Fragment.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div2 
+PASS Fragment.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div2 
+PASS Fragment.querySelectorAll: ID Selector, chained, with type selector: div#id-div1, div#id-div2 
+PASS Fragment.querySelector: ID Selector, chained, with type selector: div#id-div1, div#id-div2 
+PASS Fragment.querySelectorAll: ID selector, not matching non-existent descendant: #id #none 
+PASS Fragment.querySelector: ID selector, not matching non-existent descendant: #id #none 
+PASS Fragment.querySelectorAll: ID selector, not matching non-existent ancestor: #none #id-div1 
+PASS Fragment.querySelector: ID selector, not matching non-existent ancestor: #none #id-div1 
+PASS Fragment.querySelectorAll: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
+PASS Fragment.querySelector: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
+PASS Fragment.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
+PASS Fragment.querySelector: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
+PASS Fragment.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北 
+PASS Fragment.querySelector: ID selector, matching id value using non-ASCII characters: #台北 
+PASS Fragment.querySelectorAll: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
+PASS Fragment.querySelector: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
+PASS Fragment.querySelectorAll: ID selector, matching element with id with escaped character: #\#foo\:bar 
+PASS Fragment.querySelector: ID selector, matching element with id with escaped character: #\#foo\:bar 
+PASS Fragment.querySelectorAll: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar 
+PASS Fragment.querySelector: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar 
+PASS Fragment.querySelectorAll: Namespace selector, matching element with any namespace: #any-namespace *|div 
+PASS Fragment.querySelector: Namespace selector, matching element with any namespace: #any-namespace *|div 
+FAIL Fragment.querySelectorAll: Namespace selector, matching div elements in no namespace only: #no-namespace |div assert_equals: The method should return the expected number of matches. expected 1 but got 4
+FAIL Fragment.querySelector: Namespace selector, matching div elements in no namespace only: #no-namespace |div assert_equals: The method should return the first match. expected &quot;no-namespace-div3&quot; but got &quot;no-namespace-div1&quot;
+FAIL Fragment.querySelectorAll: Namespace selector, matching any elements in no namespace only: #no-namespace |* assert_equals: The method should return the expected number of matches. expected 1 but got 4
+FAIL Fragment.querySelector: Namespace selector, matching any elements in no namespace only: #no-namespace |* assert_equals: The method should return the first match. expected &quot;no-namespace-div3&quot; but got &quot;no-namespace-div1&quot;
+PASS Fragment.querySelectorAll: Descendant combinator, matching element that is a descendant of an element with id: #descendant div 
+PASS Fragment.querySelector: Descendant combinator, matching element that is a descendant of an element with id: #descendant div 
+PASS Fragment.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 
+PASS Fragment.querySelector: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 
+PASS Fragment.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 
+PASS Fragment.querySelector: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 
+PASS Fragment.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 
+PASS Fragment.querySelector: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 
+PASS Fragment.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 
+PASS Fragment.querySelector: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 
+PASS Fragment.querySelectorAll: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 
+PASS Fragment.querySelector: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 
+PASS Fragment.querySelectorAll: Descendant combinator, whitespace characters: #descendant        
+#descendant-div2 
+PASS Fragment.querySelector: Descendant combinator, whitespace characters: #descendant        
+#descendant-div2 
+PASS Fragment.querySelectorAll: Child combinator, matching element that is a child of an element with id: #child&gt;div 
+PASS Fragment.querySelector: Child combinator, matching element that is a child of an element with id: #child&gt;div 
+PASS Fragment.querySelectorAll: Child combinator, matching element with id that is a child of an element: div&gt;#child-div1 
+PASS Fragment.querySelector: Child combinator, matching element with id that is a child of an element: div&gt;#child-div1 
+PASS Fragment.querySelectorAll: Child combinator, matching element with id that is a child of an element with id: #child&gt;#child-div1 
+PASS Fragment.querySelector: Child combinator, matching element with id that is a child of an element with id: #child&gt;#child-div1 
+PASS Fragment.querySelectorAll: Child combinator, matching element with id that is a child of an element with class: #child-div1&gt;.child-div2 
+PASS Fragment.querySelector: Child combinator, matching element with id that is a child of an element with class: #child-div1&gt;.child-div2 
+PASS Fragment.querySelectorAll: Child combinator, matching element with class that is a child of an element with class: .child-div1&gt;.child-div2 
+PASS Fragment.querySelector: Child combinator, matching element with class that is a child of an element with class: .child-div1&gt;.child-div2 
+PASS Fragment.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with id: #child&gt;#child-div3 
+PASS Fragment.querySelector: Child combinator, not matching element with id that is not a child of an element with id: #child&gt;#child-div3 
+PASS Fragment.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with class: #child-div1&gt;.child-div3 
+PASS Fragment.querySelector: Child combinator, not matching element with id that is not a child of an element with class: #child-div1&gt;.child-div3 
+PASS Fragment.querySelectorAll: Child combinator, not matching element with class that is not a child of an element with class: .child-div1&gt;.child-div3 
+PASS Fragment.querySelector: Child combinator, not matching element with class that is not a child of an element with class: .child-div1&gt;.child-div3 
+PASS Fragment.querySelectorAll: Child combinator, surrounded by whitespace: #child-div1        
+&gt;        
+#child-div2 
+PASS Fragment.querySelector: Child combinator, surrounded by whitespace: #child-div1        
+&gt;        
+#child-div2 
+PASS Fragment.querySelectorAll: Child combinator, whitespace after: #child-div1&gt;        
+#child-div2 
+PASS Fragment.querySelector: Child combinator, whitespace after: #child-div1&gt;        
+#child-div2 
+PASS Fragment.querySelectorAll: Child combinator, whitespace before: #child-div1        
+&gt;#child-div2 
+PASS Fragment.querySelector: Child combinator, whitespace before: #child-div1        
+&gt;#child-div2 
+PASS Fragment.querySelectorAll: Child combinator, no whitespace: #child-div1&gt;#child-div2 
+PASS Fragment.querySelector: Child combinator, no whitespace: #child-div1&gt;#child-div2 
+PASS Fragment.querySelectorAll: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div 
+PASS Fragment.querySelector: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div 
+PASS Fragment.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 
+PASS Fragment.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 
+PASS Fragment.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 
+PASS Fragment.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 
+PASS Fragment.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 
+PASS Fragment.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 
+PASS Fragment.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 
+PASS Fragment.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 
+PASS Fragment.querySelectorAll: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p 
+PASS Fragment.querySelector: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p 
+PASS Fragment.querySelectorAll: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 
+PASS Fragment.querySelector: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 
+PASS Fragment.querySelectorAll: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2        
++        
+#adjacent-p3 
+PASS Fragment.querySelector: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2        
++        
+#adjacent-p3 
+PASS Fragment.querySelectorAll: Adjacent sibling combinator, whitespace after: #adjacent-p2+        
+#adjacent-p3 
+PASS Fragment.querySelector: Adjacent sibling combinator, whitespace after: #adjacent-p2+        
+#adjacent-p3 
+PASS Fragment.querySelectorAll: Adjacent sibling combinator, whitespace before: #adjacent-p2        
++#adjacent-p3 
+PASS Fragment.querySelector: Adjacent sibling combinator, whitespace before: #adjacent-p2        
++#adjacent-p3 
+PASS Fragment.querySelectorAll: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 
+PASS Fragment.querySelector: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 
+PASS Fragment.querySelectorAll: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div 
+PASS Fragment.querySelector: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div 
+PASS Fragment.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 
+PASS Fragment.querySelector: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 
+PASS Fragment.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 
+PASS Fragment.querySelector: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 
+PASS Fragment.querySelectorAll: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div 
+PASS Fragment.querySelector: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div 
+PASS Fragment.querySelectorAll: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p 
+PASS Fragment.querySelector: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p 
+PASS Fragment.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling&gt;p~div 
+PASS Fragment.querySelector: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling&gt;p~div 
+PASS Fragment.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 
+PASS Fragment.querySelector: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 
+PASS Fragment.querySelectorAll: General sibling combinator, surrounded by whitespace: #sibling-p2        
+~        
+#sibling-p3 
+PASS Fragment.querySelector: General sibling combinator, surrounded by whitespace: #sibling-p2        
+~        
+#sibling-p3 
+PASS Fragment.querySelectorAll: General sibling combinator, whitespace after: #sibling-p2~        
+#sibling-p3 
+PASS Fragment.querySelector: General sibling combinator, whitespace after: #sibling-p2~        
+#sibling-p3 
+PASS Fragment.querySelectorAll: General sibling combinator, whitespace before: #sibling-p2        
+~#sibling-p3 
+PASS Fragment.querySelector: General sibling combinator, whitespace before: #sibling-p2        
+~#sibling-p3 
+PASS Fragment.querySelectorAll: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 
+PASS Fragment.querySelector: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 
+PASS Fragment.querySelectorAll: Syntax, group of selectors separator, surrounded by whitespace: #group em        

+,        

+#group strong 
+PASS Fragment.querySelector: Syntax, group of selectors separator, surrounded by whitespace: #group em        

+,        

+#group strong 
+PASS Fragment.querySelectorAll: Syntax, group of selectors separator, whitespace after: #group em,        
+#group strong 
+PASS Fragment.querySelector: Syntax, group of selectors separator, whitespace after: #group em,        
+#group strong 
+PASS Fragment.querySelectorAll: Syntax, group of selectors separator, whitespace before: #group em        
+,#group strong 
+PASS Fragment.querySelector: Syntax, group of selectors separator, whitespace before: #group em        
+,#group strong 
+PASS Fragment.querySelectorAll: Syntax, group of selectors separator, no whitespace: #group em,#group strong 
+PASS Fragment.querySelector: Syntax, group of selectors separator, no whitespace: #group em,#group strong 
+PASS In-document Element.querySelectorAll: Type selector, matching html element: html 
+PASS In-document Element.querySelector: Type selector, matching html element: html 
+PASS In-document Element.querySelectorAll: Type selector, matching body element: body 
+PASS In-document Element.querySelector: Type selector, matching body element: body 
+PASS In-document Element.querySelectorAll: Universal selector, matching all children of element with specified ID: #universal&gt;* 
+PASS In-document Element.querySelector: Universal selector, matching all children of element with specified ID: #universal&gt;* 
+PASS In-document Element.querySelectorAll: Universal selector, matching all grandchildren of element with specified ID: #universal&gt;*&gt;* 
+PASS In-document Element.querySelector: Universal selector, matching all grandchildren of element with specified ID: #universal&gt;*&gt;* 
+PASS In-document Element.querySelectorAll: Universal selector, matching all children of empty element with specified ID: #empty&gt;* 
+PASS In-document Element.querySelector: Universal selector, matching all children of empty element with specified ID: #empty&gt;* 
+PASS In-document Element.querySelectorAll: Universal selector, matching all descendants of element with specified ID: #universal * 
+PASS In-document Element.querySelector: Universal selector, matching all descendants of element with specified ID: #universal * 
+PASS In-document Element.querySelectorAll: Attribute presence selector, matching align attribute with value: .attr-presence-div1[align] 
+PASS In-document Element.querySelector: Attribute presence selector, matching align attribute with value: .attr-presence-div1[align] 
+PASS In-document Element.querySelectorAll: Attribute presence selector, matching align attribute with empty value: .attr-presence-div2[align] 
+PASS In-document Element.querySelector: Attribute presence selector, matching align attribute with empty value: .attr-presence-div2[align] 
+PASS In-document Element.querySelectorAll: Attribute presence selector, not matching title attribute, case sensitivity: #attr-presence [TiTlE] 
+PASS In-document Element.querySelector: Attribute presence selector, not matching title attribute, case sensitivity: #attr-presence [TiTlE] 
+PASS In-document Element.querySelectorAll: Attribute presence selector, matching custom data-* attribute: [data-attr-presence] 
+PASS In-document Element.querySelector: Attribute presence selector, matching custom data-* attribute: [data-attr-presence] 
+PASS In-document Element.querySelectorAll: Attribute presence selector, not matching attribute with similar name: .attr-presence-div3[align], .attr-presence-div4[align] 
+PASS In-document Element.querySelector: Attribute presence selector, not matching attribute with similar name: .attr-presence-div3[align], .attr-presence-div4[align] 
+PASS In-document Element.querySelectorAll: Attribute presence selector, matching attribute with non-ASCII characters: ul[data-中文] 
+PASS In-document Element.querySelector: Attribute presence selector, matching attribute with non-ASCII characters: ul[data-中文] 
+PASS In-document Element.querySelectorAll: Attribute presence selector, not matching default option without selected attribute: #attr-presence-select1 option[selected] 
+PASS In-document Element.querySelector: Attribute presence selector, not matching default option without selected attribute: #attr-presence-select1 option[selected] 
+PASS In-document Element.querySelectorAll: Attribute presence selector, matching option with selected attribute: #attr-presence-select2 option[selected] 
+PASS In-document Element.querySelector: Attribute presence selector, matching option with selected attribute: #attr-presence-select2 option[selected] 
+PASS In-document Element.querySelectorAll: Attribute presence selector, matching multiple options with selected attributes: #attr-presence-select3 option[selected] 
+PASS In-document Element.querySelector: Attribute presence selector, matching multiple options with selected attributes: #attr-presence-select3 option[selected] 
+PASS In-document Element.querySelectorAll: Attribute value selector, matching align attribute with value: #attr-value [align=&quot;center&quot;] 
+PASS In-document Element.querySelector: Attribute value selector, matching align attribute with value: #attr-value [align=&quot;center&quot;] 
+PASS In-document Element.querySelectorAll: Attribute value selector, matching align attribute with empty value: #attr-value [align=&quot;&quot;] 
+PASS In-document Element.querySelector: Attribute value selector, matching align attribute with empty value: #attr-value [align=&quot;&quot;] 
+PASS In-document Element.querySelectorAll: Attribute value selector, not matching align attribute with partial value: #attr-value [align=&quot;c&quot;] 
+PASS In-document Element.querySelector: Attribute value selector, not matching align attribute with partial value: #attr-value [align=&quot;c&quot;] 
+PASS In-document Element.querySelectorAll: Attribute value selector, not matching align attribute with incorrect value: #attr-value [align=&quot;centera&quot;] 
+PASS In-document Element.querySelector: Attribute value selector, not matching align attribute with incorrect value: #attr-value [align=&quot;centera&quot;] 
+PASS In-document Element.querySelectorAll: Attribute value selector, matching custom data-* attribute with unicode escaped value: [data-attr-value=&quot;\e9&quot;] 
+PASS In-document Element.querySelector: Attribute value selector, matching custom data-* attribute with unicode escaped value: [data-attr-value=&quot;\e9&quot;] 
+PASS In-document Element.querySelectorAll: Attribute value selector, matching custom data-* attribute with escaped character: [data-attr-value_foo=&quot;\e9&quot;] 
+PASS In-document Element.querySelector: Attribute value selector, matching custom data-* attribute with escaped character: [data-attr-value_foo=&quot;\e9&quot;] 
+PASS In-document Element.querySelectorAll: Attribute value selector with single-quoted value, matching multiple inputs with type attributes: #attr-value input[type='hidden'],#attr-value input[type='radio'] 
+PASS In-document Element.querySelector: Attribute value selector with single-quoted value, matching multiple inputs with type attributes: #attr-value input[type='hidden'],#attr-value input[type='radio'] 
+PASS In-document Element.querySelectorAll: Attribute value selector with double-quoted value, matching multiple inputs with type attributes: #attr-value input[type=&quot;hidden&quot;],#attr-value input[type='radio'] 
+PASS In-document Element.querySelector: Attribute value selector with double-quoted value, matching multiple inputs with type attributes: #attr-value input[type=&quot;hidden&quot;],#attr-value input[type='radio'] 
+PASS In-document Element.querySelectorAll: Attribute value selector with unquoted value, matching multiple inputs with type attributes: #attr-value input[type=hidden],#attr-value input[type=radio] 
+PASS In-document Element.querySelector: Attribute value selector with unquoted value, matching multiple inputs with type attributes: #attr-value input[type=hidden],#attr-value input[type=radio] 
+PASS In-document Element.querySelectorAll: Attribute value selector, matching attribute with value using non-ASCII characters: [data-attr-value=中文] 
+PASS In-document Element.querySelector: Attribute value selector, matching attribute with value using non-ASCII characters: [data-attr-value=中文] 
+PASS In-document Element.querySelectorAll: Attribute whitespace-separated list selector, matching class attribute with value: #attr-whitespace [class~=&quot;div1&quot;] 
+PASS In-document Element.querySelector: Attribute whitespace-separated list selector, matching class attribute with value: #attr-whitespace [class~=&quot;div1&quot;] 
+PASS In-document Element.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=&quot;&quot;] 
+PASS In-document Element.querySelector: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=&quot;&quot;] 
+PASS In-document Element.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with partial value: [data-attr-whitespace~=&quot;div&quot;] 
+PASS In-document Element.querySelector: Attribute whitespace-separated list selector, not matching class attribute with partial value: [data-attr-whitespace~=&quot;div&quot;] 
+PASS In-document Element.querySelectorAll: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value: [data-attr-whitespace~=&quot;\0000e9&quot;] 
+PASS In-document Element.querySelector: Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value: [data-attr-whitespace~=&quot;\0000e9&quot;] 
+PASS In-document Element.querySelectorAll: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character: [data-attr-whitespace_foo~=&quot;\e9&quot;] 
+PASS In-document Element.querySelector: Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character: [data-attr-whitespace_foo~=&quot;\e9&quot;] 
+PASS In-document Element.querySelectorAll: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~='bookmark'],  #attr-whitespace a[rel~='nofollow'] 
+PASS In-document Element.querySelector: Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~='bookmark'],  #attr-whitespace a[rel~='nofollow'] 
+PASS In-document Element.querySelectorAll: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=&quot;bookmark&quot;],#attr-whitespace a[rel~='nofollow'] 
+PASS In-document Element.querySelector: Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=&quot;bookmark&quot;],#attr-whitespace a[rel~='nofollow'] 
+PASS In-document Element.querySelectorAll: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=bookmark],    #attr-whitespace a[rel~=nofollow] 
+PASS In-document Element.querySelector: Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes: #attr-whitespace a[rel~=bookmark],    #attr-whitespace a[rel~=nofollow] 
+PASS In-document Element.querySelectorAll: Attribute whitespace-separated list selector with double-quoted value, not matching value with space: #attr-whitespace a[rel~=&quot;book mark&quot;] 
+PASS In-document Element.querySelector: Attribute whitespace-separated list selector with double-quoted value, not matching value with space: #attr-whitespace a[rel~=&quot;book mark&quot;] 
+PASS In-document Element.querySelectorAll: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters: #attr-whitespace [title~=中文] 
+PASS In-document Element.querySelector: Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters: #attr-whitespace [title~=中文] 
+PASS In-document Element.querySelectorAll: Attribute hyphen-separated list selector, not matching unspecified lang attribute: #attr-hyphen-div1[lang|=&quot;en&quot;] 
+PASS In-document Element.querySelector: Attribute hyphen-separated list selector, not matching unspecified lang attribute: #attr-hyphen-div1[lang|=&quot;en&quot;] 
+PASS In-document Element.querySelectorAll: Attribute hyphen-separated list selector, matching lang attribute with exact value: #attr-hyphen-div2[lang|=&quot;fr&quot;] 
+PASS In-document Element.querySelector: Attribute hyphen-separated list selector, matching lang attribute with exact value: #attr-hyphen-div2[lang|=&quot;fr&quot;] 
+PASS In-document Element.querySelectorAll: Attribute hyphen-separated list selector, matching lang attribute with partial value: #attr-hyphen-div3[lang|=&quot;en&quot;] 
+PASS In-document Element.querySelector: Attribute hyphen-separated list selector, matching lang attribute with partial value: #attr-hyphen-div3[lang|=&quot;en&quot;] 
+PASS In-document Element.querySelectorAll: Attribute hyphen-separated list selector, not matching incorrect value: #attr-hyphen-div4[lang|=&quot;es-AR&quot;] 
+PASS In-document Element.querySelector: Attribute hyphen-separated list selector, not matching incorrect value: #attr-hyphen-div4[lang|=&quot;es-AR&quot;] 
+PASS In-document Element.querySelectorAll: Attribute begins with selector, matching href attributes beginning with specified substring: #attr-begins a[href^=&quot;http://www&quot;] 
+PASS In-document Element.querySelector: Attribute begins with selector, matching href attributes beginning with specified substring: #attr-begins a[href^=&quot;http://www&quot;] 
+PASS In-document Element.querySelectorAll: Attribute begins with selector, matching lang attributes beginning with specified substring, : #attr-begins [lang^=&quot;en-&quot;] 
+PASS In-document Element.querySelector: Attribute begins with selector, matching lang attributes beginning with specified substring, : #attr-begins [lang^=&quot;en-&quot;] 
+PASS In-document Element.querySelectorAll: Attribute begins with selector, not matching class attribute not beginning with specified substring: #attr-begins [class^=apple] 
+PASS In-document Element.querySelector: Attribute begins with selector, not matching class attribute not beginning with specified substring: #attr-begins [class^=apple] 
+PASS In-document Element.querySelectorAll: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=' apple'] 
+PASS In-document Element.querySelector: Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=' apple'] 
+PASS In-document Element.querySelectorAll: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=&quot; apple&quot;] 
+PASS In-document Element.querySelector: Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring: #attr-begins [class^=&quot; apple&quot;] 
+PASS In-document Element.querySelectorAll: Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring: #attr-begins [class^= apple] 
+PASS In-document Element.querySelector: Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring: #attr-begins [class^= apple] 
+PASS In-document Element.querySelectorAll: Attribute ends with selector, matching href attributes ending with specified substring: #attr-ends a[href$=&quot;.org&quot;] 
+PASS In-document Element.querySelector: Attribute ends with selector, matching href attributes ending with specified substring: #attr-ends a[href$=&quot;.org&quot;] 
+PASS In-document Element.querySelectorAll: Attribute ends with selector, matching lang attributes ending with specified substring, : #attr-ends [lang$=&quot;-CH&quot;] 
+PASS In-document Element.querySelector: Attribute ends with selector, matching lang attributes ending with specified substring, : #attr-ends [lang$=&quot;-CH&quot;] 
+PASS In-document Element.querySelectorAll: Attribute ends with selector, not matching class attribute not ending with specified substring: #attr-ends [class$=apple] 
+PASS In-document Element.querySelector: Attribute ends with selector, not matching class attribute not ending with specified substring: #attr-ends [class$=apple] 
+PASS In-document Element.querySelectorAll: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring: #attr-ends [class$='apple '] 
+PASS In-document Element.querySelector: Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring: #attr-ends [class$='apple '] 
+PASS In-document Element.querySelectorAll: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring: #attr-ends [class$=&quot;apple &quot;] 
+PASS In-document Element.querySelector: Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring: #attr-ends [class$=&quot;apple &quot;] 
+PASS In-document Element.querySelectorAll: Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring: #attr-ends [class$=apple ] 
+PASS In-document Element.querySelector: Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring: #attr-ends [class$=apple ] 
+PASS In-document Element.querySelectorAll: Attribute contains selector, matching href attributes beginning with specified substring: #attr-contains a[href*=&quot;http://www&quot;] 
+PASS In-document Element.querySelector: Attribute contains selector, matching href attributes beginning with specified substring: #attr-contains a[href*=&quot;http://www&quot;] 
+PASS In-document Element.querySelectorAll: Attribute contains selector, matching href attributes ending with specified substring: #attr-contains a[href*=&quot;.org&quot;] 
+PASS In-document Element.querySelector: Attribute contains selector, matching href attributes ending with specified substring: #attr-contains a[href*=&quot;.org&quot;] 
+PASS In-document Element.querySelectorAll: Attribute contains selector, matching href attributes containing specified substring: #attr-contains a[href*=&quot;.example.&quot;] 
+PASS In-document Element.querySelector: Attribute contains selector, matching href attributes containing specified substring: #attr-contains a[href*=&quot;.example.&quot;] 
+PASS In-document Element.querySelectorAll: Attribute contains selector, matching lang attributes beginning with specified substring, : #attr-contains [lang*=&quot;en-&quot;] 
+PASS In-document Element.querySelector: Attribute contains selector, matching lang attributes beginning with specified substring, : #attr-contains [lang*=&quot;en-&quot;] 
+PASS In-document Element.querySelectorAll: Attribute contains selector, matching lang attributes ending with specified substring, : #attr-contains [lang*=&quot;-CH&quot;] 
+PASS In-document Element.querySelector: Attribute contains selector, matching lang attributes ending with specified substring, : #attr-contains [lang*=&quot;-CH&quot;] 
+PASS In-document Element.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=' apple'] 
+PASS In-document Element.querySelector: Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=' apple'] 
+PASS In-document Element.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring: #attr-contains [class*='orange '] 
+PASS In-document Element.querySelector: Attribute contains selector with single-quoted value, matching class attribute ending with specified substring: #attr-contains [class*='orange '] 
+PASS In-document Element.querySelectorAll: Attribute contains selector with single-quoted value, matching class attribute containing specified substring: #attr-contains [class*='ple banana ora'] 
+PASS In-document Element.querySelector: Attribute contains selector with single-quoted value, matching class attribute containing specified substring: #attr-contains [class*='ple banana ora'] 
+PASS In-document Element.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=&quot; apple&quot;] 
+PASS In-document Element.querySelector: Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring: #attr-contains [class*=&quot; apple&quot;] 
+PASS In-document Element.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring: #attr-contains [class*=&quot;orange &quot;] 
+PASS In-document Element.querySelector: Attribute contains selector with double-quoted value, matching class attribute ending with specified substring: #attr-contains [class*=&quot;orange &quot;] 
+PASS In-document Element.querySelectorAll: Attribute contains selector with double-quoted value, matching class attribute containing specified substring: #attr-contains [class*=&quot;ple banana ora&quot;] 
+PASS In-document Element.querySelector: Attribute contains selector with double-quoted value, matching class attribute containing specified substring: #attr-contains [class*=&quot;ple banana ora&quot;] 
+PASS In-document Element.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring: #attr-contains [class*= apple] 
+PASS In-document Element.querySelector: Attribute contains selector with unquoted value, matching class attribute beginning with specified substring: #attr-contains [class*= apple] 
+PASS In-document Element.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute ending with specified substring: #attr-contains [class*=orange ] 
+PASS In-document Element.querySelector: Attribute contains selector with unquoted value, matching class attribute ending with specified substring: #attr-contains [class*=orange ] 
+PASS In-document Element.querySelectorAll: Attribute contains selector with unquoted value, matching class attribute containing specified substring: #attr-contains [class*= banana ] 
+PASS In-document Element.querySelector: Attribute contains selector with unquoted value, matching class attribute containing specified substring: #attr-contains [class*= banana ] 
+PASS In-document Element.querySelectorAll: :root pseudo-class selector, not matching document root element: :root 
+PASS In-document Element.querySelector: :root pseudo-class selector, not matching document root element: :root 
+PASS In-document Element.querySelectorAll: :nth-child selector, matching the third child element: #pseudo-nth-table1 :nth-child(3) 
+PASS In-document Element.querySelector: :nth-child selector, matching the third child element: #pseudo-nth-table1 :nth-child(3) 
+PASS In-document Element.querySelectorAll: :nth-child selector, matching every third child element: #pseudo-nth li:nth-child(3n) 
+PASS In-document Element.querySelector: :nth-child selector, matching every third child element: #pseudo-nth li:nth-child(3n) 
+PASS In-document Element.querySelectorAll: :nth-child selector, matching every second child element, starting from the fourth: #pseudo-nth li:nth-child(2n+4) 
+PASS In-document Element.querySelector: :nth-child selector, matching every second child element, starting from the fourth: #pseudo-nth li:nth-child(2n+4) 
+PASS In-document Element.querySelectorAll: :nth-child selector, matching every fourth child element, starting from the third: #pseudo-nth-p1 :nth-child(4n-1) 
+PASS In-document Element.querySelector: :nth-child selector, matching every fourth child element, starting from the third: #pseudo-nth-p1 :nth-child(4n-1) 
+PASS In-document Element.querySelectorAll: :nth-last-child selector, matching the third last child element: #pseudo-nth-table1 :nth-last-child(3) 
+PASS In-document Element.querySelector: :nth-last-child selector, matching the third last child element: #pseudo-nth-table1 :nth-last-child(3) 
+PASS In-document Element.querySelectorAll: :nth-last-child selector, matching every third child element from the end: #pseudo-nth li:nth-last-child(3n) 
+PASS In-document Element.querySelector: :nth-last-child selector, matching every third child element from the end: #pseudo-nth li:nth-last-child(3n) 
+PASS In-document Element.querySelectorAll: :nth-last-child selector, matching every second child element from the end, starting from the fourth last: #pseudo-nth li:nth-last-child(2n+4) 
+PASS In-document Element.querySelector: :nth-last-child selector, matching every second child element from the end, starting from the fourth last: #pseudo-nth li:nth-last-child(2n+4) 
+PASS In-document Element.querySelectorAll: :nth-last-child selector, matching every fourth element from the end, starting from the third last: #pseudo-nth-p1 :nth-last-child(4n-1) 
+PASS In-document Element.querySelector: :nth-last-child selector, matching every fourth element from the end, starting from the third last: #pseudo-nth-p1 :nth-last-child(4n-1) 
+PASS In-document Element.querySelectorAll: :nth-of-type selector, matching the third em element: #pseudo-nth-p1 em:nth-of-type(3) 
+PASS In-document Element.querySelector: :nth-of-type selector, matching the third em element: #pseudo-nth-p1 em:nth-of-type(3) 
+PASS In-document Element.querySelectorAll: :nth-of-type selector, matching every second element of their type: #pseudo-nth-p1 :nth-of-type(2n) 
+PASS In-document Element.querySelector: :nth-of-type selector, matching every second element of their type: #pseudo-nth-p1 :nth-of-type(2n) 
+PASS In-document Element.querySelectorAll: :nth-of-type selector, matching every second elemetn of their type, starting from the first: #pseudo-nth-p1 span:nth-of-type(2n-1) 
+PASS In-document Element.querySelector: :nth-of-type selector, matching every second elemetn of their type, starting from the first: #pseudo-nth-p1 span:nth-of-type(2n-1) 
+PASS In-document Element.querySelectorAll: :nth-last-of-type selector, matching the thrid last em element: #pseudo-nth-p1 em:nth-last-of-type(3) 
+PASS In-document Element.querySelector: :nth-last-of-type selector, matching the thrid last em element: #pseudo-nth-p1 em:nth-last-of-type(3) 
+PASS In-document Element.querySelectorAll: :nth-last-of-type selector, matching every second last element of their type: #pseudo-nth-p1 :nth-last-of-type(2n) 
+PASS In-document Element.querySelector: :nth-last-of-type selector, matching every second last element of their type: #pseudo-nth-p1 :nth-last-of-type(2n) 
+PASS In-document Element.querySelectorAll: :nth-last-of-type selector, matching every second last element of their type, starting from the last: #pseudo-nth-p1 span:nth-last-of-type(2n-1) 
+PASS In-document Element.querySelector: :nth-last-of-type selector, matching every second last element of their type, starting from the last: #pseudo-nth-p1 span:nth-last-of-type(2n-1) 
+PASS In-document Element.querySelectorAll: :first-of-type selector, matching the first em element: #pseudo-nth-p1 em:first-of-type 
+PASS In-document Element.querySelector: :first-of-type selector, matching the first em element: #pseudo-nth-p1 em:first-of-type 
+PASS In-document Element.querySelectorAll: :first-of-type selector, matching the first of every type of element: #pseudo-nth-p1 :first-of-type 
+PASS In-document Element.querySelector: :first-of-type selector, matching the first of every type of element: #pseudo-nth-p1 :first-of-type 
+PASS In-document Element.querySelectorAll: :first-of-type selector, matching the first td element in each table row: #pseudo-nth-table1 tr :first-of-type 
+PASS In-document Element.querySelector: :first-of-type selector, matching the first td element in each table row: #pseudo-nth-table1 tr :first-of-type 
+PASS In-document Element.querySelectorAll: :last-of-type selector, matching the last em elemnet: #pseudo-nth-p1 em:last-of-type 
+PASS In-document Element.querySelector: :last-of-type selector, matching the last em elemnet: #pseudo-nth-p1 em:last-of-type 
+PASS In-document Element.querySelectorAll: :last-of-type selector, matching the last of every type of element: #pseudo-nth-p1 :last-of-type 
+PASS In-document Element.querySelector: :last-of-type selector, matching the last of every type of element: #pseudo-nth-p1 :last-of-type 
+PASS In-document Element.querySelectorAll: :last-of-type selector, matching the last td element in each table row: #pseudo-nth-table1 tr :last-of-type 
+PASS In-document Element.querySelector: :last-of-type selector, matching the last td element in each table row: #pseudo-nth-table1 tr :last-of-type 
+PASS In-document Element.querySelectorAll: :first-child pseudo-class selector, matching first child div element: #pseudo-first-child div:first-child 
+PASS In-document Element.querySelector: :first-child pseudo-class selector, matching first child div element: #pseudo-first-child div:first-child 
+PASS In-document Element.querySelectorAll: :first-child pseudo-class selector, doesn't match non-first-child elements: .pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child 
+PASS In-document Element.querySelector: :first-child pseudo-class selector, doesn't match non-first-child elements: .pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child 
+PASS In-document Element.querySelectorAll: :first-child pseudo-class selector, matching first-child of multiple elements: #pseudo-first-child span:first-child 
+PASS In-document Element.querySelector: :first-child pseudo-class selector, matching first-child of multiple elements: #pseudo-first-child span:first-child 
+PASS In-document Element.querySelectorAll: :last-child pseudo-class selector, matching last child div element: #pseudo-last-child div:last-child 
+PASS In-document Element.querySelector: :last-child pseudo-class selector, matching last child div element: #pseudo-last-child div:last-child 
+PASS In-document Element.querySelectorAll: :last-child pseudo-class selector, doesn't match non-last-child elements: .pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child 
+PASS In-document Element.querySelector: :last-child pseudo-class selector, doesn't match non-last-child elements: .pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child 
+PASS In-document Element.querySelectorAll: :last-child pseudo-class selector, matching first-child of multiple elements: #pseudo-last-child span:last-child 
+PASS In-document Element.querySelector: :last-child pseudo-class selector, matching first-child of multiple elements: #pseudo-last-child span:last-child 
+PASS In-document Element.querySelectorAll: :pseudo-only-child pseudo-class selector, matching all only-child elements: #pseudo-only :only-child 
+PASS In-document Element.querySelector: :pseudo-only-child pseudo-class selector, matching all only-child elements: #pseudo-only :only-child 
+PASS In-document Element.querySelectorAll: :pseudo-only-child pseudo-class selector, matching only-child em elements: #pseudo-only em:only-child 
+PASS In-document Element.querySelector: :pseudo-only-child pseudo-class selector, matching only-child em elements: #pseudo-only em:only-child 
+PASS In-document Element.querySelectorAll: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type: #pseudo-only :only-of-type 
+PASS In-document Element.querySelector: :pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type: #pseudo-only :only-of-type 
+PASS In-document Element.querySelectorAll: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type: #pseudo-only em:only-of-type 
+PASS In-document Element.querySelector: :pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type: #pseudo-only em:only-of-type 
+PASS In-document Element.querySelectorAll: :empty pseudo-class selector, matching empty p elements: #pseudo-empty p:empty 
+PASS In-document Element.querySelector: :empty pseudo-class selector, matching empty p elements: #pseudo-empty p:empty 
+PASS In-document Element.querySelectorAll: :empty pseudo-class selector, matching all empty elements: #pseudo-empty :empty 
+PASS In-document Element.querySelector: :empty pseudo-class selector, matching all empty elements: #pseudo-empty :empty 
+PASS In-document Element.querySelectorAll: :link and :visited pseudo-class selectors, matching a and area elements with href attributes: #pseudo-link :link, #pseudo-link :visited 
+PASS In-document Element.querySelector: :link and :visited pseudo-class selectors, matching a and area elements with href attributes: #pseudo-link :link, #pseudo-link :visited 
+PASS In-document Element.querySelectorAll: :link and :visited pseudo-class selectors, not matching link elements with href attributes: #head :link, #head :visited 
+PASS In-document Element.querySelector: :link and :visited pseudo-class selectors, not matching link elements with href attributes: #head :link, #head :visited 
+PASS In-document Element.querySelectorAll: :link and :visited pseudo-class selectors, chained, mutually exclusive pseudo-classes match nothing: :link:visited 
+PASS In-document Element.querySelector: :link and :visited pseudo-class selectors, chained, mutually exclusive pseudo-classes match nothing: :link:visited 
+PASS In-document Element.querySelectorAll: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target 
+PASS In-document Element.querySelector: :target pseudo-class selector, matching the element referenced by the URL fragment identifier: :target 
+PASS In-document Element.querySelectorAll: :lang pseudo-class selector, matching inherited language: #pseudo-lang-div1:lang(en) 
+PASS In-document Element.querySelector: :lang pseudo-class selector, matching inherited language: #pseudo-lang-div1:lang(en) 
+PASS In-document Element.querySelectorAll: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) 
+PASS In-document Element.querySelector: :lang pseudo-class selector, matching specified language with exact value: #pseudo-lang-div2:lang(fr) 
+PASS In-document Element.querySelectorAll: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) 
+PASS In-document Element.querySelector: :lang pseudo-class selector, matching specified language with partial value: #pseudo-lang-div3:lang(en) 
+PASS In-document Element.querySelectorAll: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) 
+PASS In-document Element.querySelector: :lang pseudo-class selector, not matching incorrect language: #pseudo-lang-div4:lang(es-AR) 
+PASS In-document Element.querySelectorAll: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled 
+PASS In-document Element.querySelector: :enabled pseudo-class selector, matching all enabled form controls: #pseudo-ui :enabled 
+PASS In-document Element.querySelectorAll: :enabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled 
+PASS In-document Element.querySelector: :enabled pseudo-class selector, matching all disabled form controls: #pseudo-ui :disabled 
+PASS In-document Element.querySelectorAll: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked 
+PASS In-document Element.querySelector: :checked pseudo-class selector, matching checked radio buttons and checkboxes: #pseudo-ui :checked 
+PASS In-document Element.querySelectorAll: :not pseudo-class selector, matching : #not&gt;:not(div) 
+PASS In-document Element.querySelector: :not pseudo-class selector, matching : #not&gt;:not(div) 
+PASS In-document Element.querySelectorAll: :not pseudo-class selector, matching : #not * :not(:first-child) 
+PASS In-document Element.querySelector: :not pseudo-class selector, matching : #not * :not(:first-child) 
+PASS In-document Element.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*) 
+PASS In-document Element.querySelector: :not pseudo-class selector, matching nothing: :not(*) 
+PASS In-document Element.querySelectorAll: :not pseudo-class selector, matching nothing: :not(*|*) 
+PASS In-document Element.querySelector: :not pseudo-class selector, matching nothing: :not(*|*) 
+PASS In-document Element.querySelectorAll: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line 
+PASS In-document Element.querySelector: :first-line pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-line 
+PASS In-document Element.querySelectorAll: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line 
+PASS In-document Element.querySelector: ::first-line pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-line 
+PASS In-document Element.querySelectorAll: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter 
+PASS In-document Element.querySelector: :first-letter pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:first-letter 
+PASS In-document Element.querySelectorAll: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter 
+PASS In-document Element.querySelector: ::first-letter pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::first-letter 
+PASS In-document Element.querySelectorAll: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before 
+PASS In-document Element.querySelector: :before pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:before 
+PASS In-document Element.querySelectorAll: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before 
+PASS In-document Element.querySelector: ::before pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::before 
+PASS In-document Element.querySelectorAll: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after 
+PASS In-document Element.querySelector: :after pseudo-element (one-colon syntax) selector, not matching any elements: #pseudo-element:after 
+PASS In-document Element.querySelectorAll: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after 
+PASS In-document Element.querySelector: ::after pseudo-element (two-colon syntax) selector, not matching any elements: #pseudo-element::after 
+PASS In-document Element.querySelectorAll: Class selector, matching element with specified class: .class-p 
+PASS In-document Element.querySelector: Class selector, matching element with specified class: .class-p 
+PASS In-document Element.querySelectorAll: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana 
+PASS In-document Element.querySelector: Class selector, chained, matching only elements with all specified classes: #class .apple.orange.banana 
+PASS In-document Element.querySelectorAll: Class Selector, chained, with type selector: div.apple.banana.orange 
+PASS In-document Element.querySelector: Class Selector, chained, with type selector: div.apple.banana.orange 
+PASS In-document Element.querySelectorAll: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
+PASS In-document Element.querySelector: Class selector, matching element with class value using non-ASCII characters: .台北Táiběi 
+PASS In-document Element.querySelectorAll: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
+PASS In-document Element.querySelector: Class selector, matching multiple elements with class value using non-ASCII characters: .台北 
+PASS In-document Element.querySelectorAll: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
+PASS In-document Element.querySelector: Class selector, chained, matching element with multiple class values using non-ASCII characters: .台北Táiběi.台北 
+PASS In-document Element.querySelectorAll: Class selector, matching element with class with escaped character: .foo\:bar 
+PASS In-document Element.querySelector: Class selector, matching element with class with escaped character: .foo\:bar 
+PASS In-document Element.querySelectorAll: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar 
+PASS In-document Element.querySelector: Class selector, matching element with class with escaped character: .test\.foo\[5\]bar 
+PASS In-document Element.querySelectorAll: ID selector, matching element with specified id: #id #id-div1 
+PASS In-document Element.querySelector: ID selector, matching element with specified id: #id #id-div1 
+PASS In-document Element.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div1 
+PASS In-document Element.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div1 
+PASS In-document Element.querySelectorAll: ID selector, chained, matching element with specified id: #id-div1, #id-div2 
+PASS In-document Element.querySelector: ID selector, chained, matching element with specified id: #id-div1, #id-div2 
+PASS In-document Element.querySelectorAll: ID Selector, chained, with type selector: div#id-div1, div#id-div2 
+PASS In-document Element.querySelector: ID Selector, chained, with type selector: div#id-div1, div#id-div2 
+PASS In-document Element.querySelectorAll: ID selector, not matching non-existent descendant: #id #none 
+PASS In-document Element.querySelector: ID selector, not matching non-existent descendant: #id #none 
+PASS In-document Element.querySelectorAll: ID selector, not matching non-existent ancestor: #none #id-div1 
+PASS In-document Element.querySelector: ID selector, not matching non-existent ancestor: #none #id-div1 
+PASS In-document Element.querySelectorAll: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
+PASS In-document Element.querySelector: ID selector, matching multiple elements with duplicate id: #id-li-duplicate 
+PASS In-document Element.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
+PASS In-document Element.querySelector: ID selector, matching id value using non-ASCII characters: #台北Táiběi 
+PASS In-document Element.querySelectorAll: ID selector, matching id value using non-ASCII characters: #台北 
+PASS In-document Element.querySelector: ID selector, matching id value using non-ASCII characters: #台北 
+PASS In-document Element.querySelectorAll: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
+PASS In-document Element.querySelector: ID selector, matching id values using non-ASCII characters: #台北Táiběi, #台北 
+PASS In-document Element.querySelectorAll: ID selector, matching element with id with escaped character: #\#foo\:bar 
+PASS In-document Element.querySelector: ID selector, matching element with id with escaped character: #\#foo\:bar 
+PASS In-document Element.querySelectorAll: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar 
+PASS In-document Element.querySelector: ID selector, matching element with id with escaped character: #test\.foo\[5\]bar 
+PASS In-document Element.querySelectorAll: Namespace selector, matching element with any namespace: #any-namespace *|div 
+PASS In-document Element.querySelector: Namespace selector, matching element with any namespace: #any-namespace *|div 
+FAIL In-document Element.querySelectorAll: Namespace selector, matching div elements in no namespace only: #no-namespace |div assert_equals: The method should return the expected number of matches. expected 1 but got 4
+FAIL In-document Element.querySelector: Namespace selector, matching div elements in no namespace only: #no-namespace |div assert_equals: The method should return the first match. expected &quot;no-namespace-div3&quot; but got &quot;no-namespace-div1&quot;
+FAIL In-document Element.querySelectorAll: Namespace selector, matching any elements in no namespace only: #no-namespace |* assert_equals: The method should return the expected number of matches. expected 1 but got 4
+FAIL In-document Element.querySelector: Namespace selector, matching any elements in no namespace only: #no-namespace |* assert_equals: The method should return the first match. expected &quot;no-namespace-div3&quot; but got &quot;no-namespace-div1&quot;
+PASS In-document Element.querySelectorAll: Descendant combinator, matching element that is a descendant of an element with id: #descendant div 
+PASS In-document Element.querySelector: Descendant combinator, matching element that is a descendant of an element with id: #descendant div 
+PASS In-document Element.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: body #descendant-div1 
+PASS In-document Element.querySelector: Descendant combinator, matching element with id that is a descendant of an element: body #descendant-div1 
+PASS In-document Element.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 
+PASS In-document Element.querySelector: Descendant combinator, matching element with id that is a descendant of an element: div #descendant-div1 
+PASS In-document Element.querySelectorAll: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 
+PASS In-document Element.querySelector: Descendant combinator, matching element with id that is a descendant of an element with id: #descendant #descendant-div2 
+PASS In-document Element.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 
+PASS In-document Element.querySelector: Descendant combinator, matching element with class that is a descendant of an element with id: #descendant .descendant-div2 
+PASS In-document Element.querySelectorAll: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 
+PASS In-document Element.querySelector: Descendant combinator, matching element with class that is a descendant of an element with class: .descendant-div1 .descendant-div3 
+PASS In-document Element.querySelectorAll: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 
+PASS In-document Element.querySelector: Descendant combinator, not matching element with id that is not a descendant of an element with id: #descendant-div1 #descendant-div4 
+PASS In-document Element.querySelectorAll: Descendant combinator, whitespace characters: #descendant        
+#descendant-div2 
+PASS In-document Element.querySelector: Descendant combinator, whitespace characters: #descendant        
+#descendant-div2 
+PASS In-document Element.querySelectorAll: Child combinator, matching element that is a child of an element with id: #child&gt;div 
+PASS In-document Element.querySelector: Child combinator, matching element that is a child of an element with id: #child&gt;div 
+PASS In-document Element.querySelectorAll: Child combinator, matching element with id that is a child of an element: div&gt;#child-div1 
+PASS In-document Element.querySelector: Child combinator, matching element with id that is a child of an element: div&gt;#child-div1 
+PASS In-document Element.querySelectorAll: Child combinator, matching element with id that is a child of an element with id: #child&gt;#child-div1 
+PASS In-document Element.querySelector: Child combinator, matching element with id that is a child of an element with id: #child&gt;#child-div1 
+PASS In-document Element.querySelectorAll: Child combinator, matching element with id that is a child of an element with class: #child-div1&gt;.child-div2 
+PASS In-document Element.querySelector: Child combinator, matching element with id that is a child of an element with class: #child-div1&gt;.child-div2 
+PASS In-document Element.querySelectorAll: Child combinator, matching element with class that is a child of an element with class: .child-div1&gt;.child-div2 
+PASS In-document Element.querySelector: Child combinator, matching element with class that is a child of an element with class: .child-div1&gt;.child-div2 
+PASS In-document Element.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with id: #child&gt;#child-div3 
+PASS In-document Element.querySelector: Child combinator, not matching element with id that is not a child of an element with id: #child&gt;#child-div3 
+PASS In-document Element.querySelectorAll: Child combinator, not matching element with id that is not a child of an element with class: #child-div1&gt;.child-div3 
+PASS In-document Element.querySelector: Child combinator, not matching element with id that is not a child of an element with class: #child-div1&gt;.child-div3 
+PASS In-document Element.querySelectorAll: Child combinator, not matching element with class that is not a child of an element with class: .child-div1&gt;.child-div3 
+PASS In-document Element.querySelector: Child combinator, not matching element with class that is not a child of an element with class: .child-div1&gt;.child-div3 
+PASS In-document Element.querySelectorAll: Child combinator, surrounded by whitespace: #child-div1        
+&gt;        
+#child-div2 
+PASS In-document Element.querySelector: Child combinator, surrounded by whitespace: #child-div1        
+&gt;        
+#child-div2 
+PASS In-document Element.querySelectorAll: Child combinator, whitespace after: #child-div1&gt;        
+#child-div2 
+PASS In-document Element.querySelector: Child combinator, whitespace after: #child-div1&gt;        
+#child-div2 
+PASS In-document Element.querySelectorAll: Child combinator, whitespace before: #child-div1        
+&gt;#child-div2 
+PASS In-document Element.querySelector: Child combinator, whitespace before: #child-div1        
+&gt;#child-div2 
+PASS In-document Element.querySelectorAll: Child combinator, no whitespace: #child-div1&gt;#child-div2 
+PASS In-document Element.querySelector: Child combinator, no whitespace: #child-div1&gt;#child-div2 
+PASS In-document Element.querySelectorAll: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div 
+PASS In-document Element.querySelector: Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id: #adjacent-div2+div 
+PASS In-document Element.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 
+PASS In-document Element.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element: div+#adjacent-div4 
+PASS In-document Element.querySelectorAll: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 
+PASS In-document Element.querySelector: Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id: #adjacent-div2+#adjacent-div4 
+PASS In-document Element.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 
+PASS In-document Element.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id: #adjacent-div2+.adjacent-div4 
+PASS In-document Element.querySelectorAll: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 
+PASS In-document Element.querySelector: Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class: .adjacent-div2+.adjacent-div4 
+PASS In-document Element.querySelectorAll: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p 
+PASS In-document Element.querySelector: Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element: #adjacent div+p 
+PASS In-document Element.querySelectorAll: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 
+PASS In-document Element.querySelector: Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id: #adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1 
+PASS In-document Element.querySelectorAll: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2        
++        
+#adjacent-p3 
+PASS In-document Element.querySelector: Adjacent sibling combinator, surrounded by whitespace: #adjacent-p2        
++        
+#adjacent-p3 
+PASS In-document Element.querySelectorAll: Adjacent sibling combinator, whitespace after: #adjacent-p2+        
+#adjacent-p3 
+PASS In-document Element.querySelector: Adjacent sibling combinator, whitespace after: #adjacent-p2+        
+#adjacent-p3 
+PASS In-document Element.querySelectorAll: Adjacent sibling combinator, whitespace before: #adjacent-p2        
++#adjacent-p3 
+PASS In-document Element.querySelector: Adjacent sibling combinator, whitespace before: #adjacent-p2        
++#adjacent-p3 
+PASS In-document Element.querySelectorAll: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 
+PASS In-document Element.querySelector: Adjacent sibling combinator, no whitespace: #adjacent-p2+#adjacent-p3 
+PASS In-document Element.querySelectorAll: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div 
+PASS In-document Element.querySelector: General sibling combinator, matching element that is a sibling of an element with id: #sibling-div2~div 
+PASS In-document Element.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 
+PASS In-document Element.querySelector: General sibling combinator, matching element with id that is a sibling of an element: div~#sibling-div4 
+PASS In-document Element.querySelectorAll: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 
+PASS In-document Element.querySelector: General sibling combinator, matching element with id that is a sibling of an element with id: #sibling-div2~#sibling-div4 
+PASS In-document Element.querySelectorAll: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div 
+PASS In-document Element.querySelector: General sibling combinator, matching element with class that is a sibling of an element with id: #sibling-div2~.sibling-div 
+PASS In-document Element.querySelectorAll: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p 
+PASS In-document Element.querySelector: General sibling combinator, matching p element that is a sibling of a div element: #sibling div~p 
+PASS In-document Element.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling&gt;p~div 
+PASS In-document Element.querySelector: General sibling combinator, not matching element with id that is not a sibling after a p element: #sibling&gt;p~div 
+PASS In-document Element.querySelectorAll: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 
+PASS In-document Element.querySelector: General sibling combinator, not matching element with id that is not a sibling after an element with id: #sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1 
+PASS In-document Element.querySelectorAll: General sibling combinator, surrounded by whitespace: #sibling-p2        
+~        
+#sibling-p3 
+PASS In-document Element.querySelector: General sibling combinator, surrounded by whitespace: #sibling-p2        
+~        
+#sibling-p3 
+PASS In-document Element.querySelectorAll: General sibling combinator, whitespace after: #sibling-p2~        
+#sibling-p3 
+PASS In-document Element.querySelector: General sibling combinator, whitespace after: #sibling-p2~        
+#sibling-p3 
+PASS In-document Element.querySelectorAll: General sibling combinator, whitespace before: #sibling-p2        
+~#sibling-p3 
+PASS In-document Element.querySelector: General sibling combinator, whitespace before: #sibling-p2        
+~#sibling-p3 
+PASS In-document Element.querySelectorAll: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 
+PASS In-document Element.querySelector: General sibling combinator, no whitespace: #sibling-p2~#sibling-p3 
+PASS In-document Element.querySelectorAll: Syntax, group of selectors separator, surrounded by whitespace: #group em        

+,        

+#group strong 
+PASS In-document Element.querySelector: Syntax, group of selectors separator, surrounded by whitespace: #group em        

+,        

+#group strong 
+PASS In-document Element.querySelectorAll: Syntax, group of selectors separator, whitespace after: #group em,        
+#group strong 
+PASS In-document Element.querySelector: Syntax, group of selectors separator, whitespace after: #group em,        
+#group strong 
+PASS In-document Element.querySelectorAll: Syntax, group of selectors separator, whitespace before: #group em        
+,#group strong 
+PASS In-document Element.querySelector: Syntax, group of selectors separator, whitespace before: #group em        
+,#group strong 
+PASS In-document Element.querySelectorAll: Syntax, group of selectors separator, no whitespace: #group em,#group strong 
+PASS In-document Element.querySelector: Syntax, group of selectors separator, no whitespace: #group em,#group strong 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesParentNodequerySelectorAllxhtmlxhtfromrev189470trunkLayoutTestshttptestsw3cdomnodesParentNodequerySelectorAllxhtmlxhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-xhtml.xht (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/ParentNode-querySelector-All-xhtml.xhtml) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-xhtml.xht                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-xhtml.xht        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,114 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html id=&quot;html&quot; lang=&quot;en&quot; xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+&lt;head id=&quot;head&quot;&gt;
+&lt;title&gt;Selectors-API Test Suite: XHTML&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;selectors.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;ParentNode-querySelector-All.js&quot;&gt;&lt;/script&gt;
+&lt;style&gt;iframe { visibility: hidden; position: absolute; }&lt;/style&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id=&quot;log&quot;&gt;This test requires JavaScript.&lt;/div&gt;
+
+&lt;script&gt;&lt;![CDATA[
+async_test(function() {
+  var frame = document.createElement(&quot;iframe&quot;);
+  frame.onload = this.step_func_done(init);
+  frame.src = &quot;resources/ParentNode-querySelector-All-content.xht#target&quot;;
+  document.body.appendChild(frame);
+})
+
+function init(e) {
+  /*
+   * This test suite tests Selectors API methods in 4 different contexts:
+   * 1. Document node
+   * 2. In-document Element node
+   * 3. Detached Element node (an element with no parent, not in the document)
+   * 4. Document Fragment node
+   *
+   * For each context, the following tests are run:
+   *
+   * The interface check tests ensure that each type of node exposes the Selectors API methods
+   *
+   * The special selector tests verify the result of passing special values for the selector parameter,
+   * to ensure that the correct WebIDL processing is performed, such as stringification of null and
+   * undefined and missing parameter. The universal selector is also tested here, rather than with the
+   * rest of ordinary selectors for practical reasons.
+   *
+   * The static list verification tests ensure that the node lists returned by the method remain unchanged
+   * due to subsequent document modication, and that a new list is generated each time the method is
+   * invoked based on the current state of the document.
+   *
+   * The invalid selector tests ensure that SyntaxError is thrown for invalid forms of selectors
+   *
+   * The valid selector tests check the result from querying many different types of selectors, with a
+   * list of expected elements. This checks that querySelector() always returns the first result from
+   * querySelectorAll(), and that all matching elements are correctly returned in tree-order. The tests
+   * can be limited by specifying the test types to run, using the testType variable. The constants for this
+   * can be found in selectors.js.
+   *
+   * All the selectors tested for both the valid and invalid selector tests are found in selectors.js.
+   * See comments in that file for documentation of the format used.
+   *
+   * The ParentNode-querySelector-All.js file contains all the common test functions for running each of the aforementioned tests
+   */
+
+  var testType = TEST_QSA;
+  var docType  = &quot;xhtml&quot;; // Only run tests suitable for XHTML
+
+  // Prepare the nodes for testing
+  var doc = e.target.contentDocument;                 // Document Node tests
+
+  var element = doc.getElementById(&quot;root&quot;);   // In-document Element Node tests
+
+  //Setup the namespace tests
+  setupSpecialElements(doc, element);
+
+  var outOfScope = element.cloneNode(true);   // Append this to the body before running the in-document
+                                               // Element tests, but after running the Document tests. This
+                                               // tests that no elements that are not descendants of element
+                                               // are selected.
+
+  traverse(outOfScope, function(elem) {        // Annotate each element as being a clone; used for verifying
+    elem.setAttribute(&quot;data-clone&quot;, &quot;&quot;);     // that none of these elements ever match.
+  });
+
+
+  var detached = element.cloneNode(true);     // Detached Element Node tests
+
+  var fragment = doc.createDocumentFragment(); // Fragment Node tests
+  fragment.appendChild(element.cloneNode(true));
+
+  // Setup Tests
+  interfaceCheck(&quot;Document&quot;, doc);
+  interfaceCheck(&quot;Detached Element&quot;, detached);
+  interfaceCheck(&quot;Fragment&quot;, fragment);
+  interfaceCheck(&quot;In-document Element&quot;, element);
+
+  runSpecialSelectorTests(&quot;Document&quot;, doc);
+  runSpecialSelectorTests(&quot;Detached Element&quot;, detached);
+  runSpecialSelectorTests(&quot;Fragment&quot;, fragment);
+  runSpecialSelectorTests(&quot;In-document Element&quot;, element);
+
+  verifyStaticList(&quot;Document&quot;, doc, doc);
+  verifyStaticList(&quot;Detached Element&quot;, doc, detached);
+  verifyStaticList(&quot;Fragment&quot;, doc, fragment);
+  verifyStaticList(&quot;In-document Element&quot;, doc, element);
+
+  runInvalidSelectorTest(&quot;Document&quot;, doc, invalidSelectors);
+  runInvalidSelectorTest(&quot;Detached Element&quot;, detached, invalidSelectors);
+  runInvalidSelectorTest(&quot;Fragment&quot;, fragment, invalidSelectors);
+  runInvalidSelectorTest(&quot;In-document Element&quot;, element, invalidSelectors);
+
+  runValidSelectorTest(&quot;Document&quot;, doc, validSelectors, testType, docType);
+  runValidSelectorTest(&quot;Detached Element&quot;, detached, validSelectors, testType, docType);
+  runValidSelectorTest(&quot;Fragment&quot;, fragment, validSelectors, testType, docType);
+
+  doc.body.appendChild(outOfScope); // Append before in-document Element tests.
+                                    // None of these elements should match
+  runValidSelectorTest(&quot;In-document Element&quot;, element, validSelectors, testType, docType);
+}
+]]&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesParentNodequerySelectorAllhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesParentNodequerySelectorAllhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/ParentNode-querySelector-All.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,110 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=&quot;UTF-8&quot;&gt;
+&lt;title&gt;Selectors-API Test Suite: HTML&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;selectors.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;ParentNode-querySelector-All.js&quot;&gt;&lt;/script&gt;
+&lt;style&gt;iframe { visibility: hidden; position: absolute; }&lt;/style&gt;
+
+&lt;div id=&quot;log&quot;&gt;This test requires JavaScript.&lt;/div&gt;
+
+&lt;script&gt;
+async_test(function() {
+  var frame = document.createElement(&quot;iframe&quot;);
+  frame.onload = this.step_func_done(init);
+  frame.src = &quot;resources/ParentNode-querySelector-All-content.html#target&quot;;
+  document.body.appendChild(frame);
+});
+
+function init(e) {
+  /*
+   * This test suite tests Selectors API methods in 4 different contexts:
+   * 1. Document node
+   * 2. In-document Element node
+   * 3. Detached Element node (an element with no parent, not in the document)
+   * 4. Document Fragment node
+   *
+   * For each context, the following tests are run:
+   *
+   * The interface check tests ensure that each type of node exposes the Selectors API methods
+   *
+   * The special selector tests verify the result of passing special values for the selector parameter,
+   * to ensure that the correct WebIDL processing is performed, such as stringification of null and
+   * undefined and missing parameter. The universal selector is also tested here, rather than with the
+   * rest of ordinary selectors for practical reasons.
+   *
+   * The static list verification tests ensure that the node lists returned by the method remain unchanged
+   * due to subsequent document modication, and that a new list is generated each time the method is
+   * invoked based on the current state of the document.
+   *
+   * The invalid selector tests ensure that SyntaxError is thrown for invalid forms of selectors
+   *
+   * The valid selector tests check the result from querying many different types of selectors, with a
+   * list of expected elements. This checks that querySelector() always returns the first result from
+   * querySelectorAll(), and that all matching elements are correctly returned in tree-order. The tests
+   * can be limited by specifying the test types to run, using the testType variable. The constants for this
+   * can be found in selectors.js.
+   *
+   * All the selectors tested for both the valid and invalid selector tests are found in selectors.js.
+   * See comments in that file for documentation of the format used.
+   *
+   * The ParentNode-querySelector-All.js file contains all the common test functions for running each of the aforementioned tests
+   */
+
+  var testType = TEST_QSA;
+  var docType  = &quot;html&quot;; // Only run tests suitable for HTML
+
+  // Prepare the nodes for testing
+  var doc = e.target.contentDocument;                 // Document Node tests
+
+  var element = doc.getElementById(&quot;root&quot;);   // In-document Element Node tests
+
+  //Setup the namespace tests
+  setupSpecialElements(doc, element);
+
+  var outOfScope = element.cloneNode(true);   // Append this to the body before running the in-document
+                                               // Element tests, but after running the Document tests. This
+                                               // tests that no elements that are not descendants of element
+                                               // are selected.
+
+  traverse(outOfScope, function(elem) {        // Annotate each element as being a clone; used for verifying
+    elem.setAttribute(&quot;data-clone&quot;, &quot;&quot;);     // that none of these elements ever match.
+  });
+
+
+  var detached = element.cloneNode(true);     // Detached Element Node tests
+
+  var fragment = doc.createDocumentFragment(); // Fragment Node tests
+  fragment.appendChild(element.cloneNode(true));
+
+  // Setup Tests
+  interfaceCheck(&quot;Document&quot;, doc);
+  interfaceCheck(&quot;Detached Element&quot;, detached);
+  interfaceCheck(&quot;Fragment&quot;, fragment);
+  interfaceCheck(&quot;In-document Element&quot;, element);
+
+  runSpecialSelectorTests(&quot;Document&quot;, doc);
+  runSpecialSelectorTests(&quot;Detached Element&quot;, detached);
+  runSpecialSelectorTests(&quot;Fragment&quot;, fragment);
+  runSpecialSelectorTests(&quot;In-document Element&quot;, element);
+
+  verifyStaticList(&quot;Document&quot;, doc, doc);
+  verifyStaticList(&quot;Detached Element&quot;, doc, detached);
+  verifyStaticList(&quot;Fragment&quot;, doc, fragment);
+  verifyStaticList(&quot;In-document Element&quot;, doc, element);
+
+  runInvalidSelectorTest(&quot;Document&quot;, doc, invalidSelectors);
+  runInvalidSelectorTest(&quot;Detached Element&quot;, detached, invalidSelectors);
+  runInvalidSelectorTest(&quot;Fragment&quot;, fragment, invalidSelectors);
+  runInvalidSelectorTest(&quot;In-document Element&quot;, element, invalidSelectors);
+
+  runValidSelectorTest(&quot;Document&quot;, doc, validSelectors, testType, docType);
+  runValidSelectorTest(&quot;Detached Element&quot;, detached, validSelectors, testType, docType);
+  runValidSelectorTest(&quot;Fragment&quot;, fragment, validSelectors, testType, docType);
+
+  doc.body.appendChild(outOfScope); // Append before in-document Element tests.
+                                    // None of these elements should match
+  runValidSelectorTest(&quot;In-document Element&quot;, element, validSelectors, testType, docType);
+}
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesParentNodequerySelectorAlljsfromrev189470trunkLayoutTestshttptestsw3cdomnodesParentNodequerySelectorAlljs"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All.js (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/ParentNode-querySelector-All.js) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All.js        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,252 @@
</span><ins>+// Require selectors.js to be included before this.
+
+/*
+ * Create and append special elements that cannot be created correctly with HTML markup alone.
+ */
+function setupSpecialElements(doc, parent) {
+  // Setup null and undefined tests
+  parent.appendChild(doc.createElement(&quot;null&quot;));
+  parent.appendChild(doc.createElement(&quot;undefined&quot;));
+
+  // Setup namespace tests
+  var anyNS = doc.createElement(&quot;div&quot;);
+  var noNS = doc.createElement(&quot;div&quot;);
+  anyNS.id = &quot;any-namespace&quot;;
+  noNS.id = &quot;no-namespace&quot;;
+
+  var divs;
+  div = [doc.createElement(&quot;div&quot;),
+         doc.createElementNS(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;div&quot;),
+         doc.createElementNS(&quot;&quot;, &quot;div&quot;),
+         doc.createElementNS(&quot;http://www.example.org/ns&quot;, &quot;div&quot;)];
+
+  div[0].id = &quot;any-namespace-div1&quot;;
+  div[1].id = &quot;any-namespace-div2&quot;;
+  div[2].setAttribute(&quot;id&quot;, &quot;any-namespace-div3&quot;); // Non-HTML elements can't use .id property
+  div[3].setAttribute(&quot;id&quot;, &quot;any-namespace-div4&quot;);
+
+  for (var i = 0; i &lt; div.length; i++) {
+    anyNS.appendChild(div[i])
+  }
+
+  div = [doc.createElement(&quot;div&quot;),
+         doc.createElementNS(&quot;http://www.w3.org/1999/xhtml&quot;, &quot;div&quot;),
+         doc.createElementNS(&quot;&quot;, &quot;div&quot;),
+         doc.createElementNS(&quot;http://www.example.org/ns&quot;, &quot;div&quot;)];
+
+  div[0].id = &quot;no-namespace-div1&quot;;
+  div[1].id = &quot;no-namespace-div2&quot;;
+  div[2].setAttribute(&quot;id&quot;, &quot;no-namespace-div3&quot;); // Non-HTML elements can't use .id property
+  div[3].setAttribute(&quot;id&quot;, &quot;no-namespace-div4&quot;);
+
+  for (i = 0; i &lt; div.length; i++) {
+    noNS.appendChild(div[i])
+  }
+
+  parent.appendChild(anyNS);
+  parent.appendChild(noNS);
+}
+
+/*
+ * Check that the querySelector and querySelectorAll methods exist on the given Node
+ */
+function interfaceCheck(type, obj) {
+  test(function() {
+    var q = typeof obj.querySelector === &quot;function&quot;;
+    assert_true(q, type + &quot; supports querySelector.&quot;);
+  }, type + &quot; supports querySelector&quot;)
+
+  test(function() {
+    var qa = typeof obj.querySelectorAll === &quot;function&quot;;
+    assert_true( qa, type + &quot; supports querySelectorAll.&quot;);
+  }, type + &quot; supports querySelectorAll&quot;)
+
+  test(function() {
+    var list = obj.querySelectorAll(&quot;div&quot;);
+    if (obj.ownerDocument) { // The object is not a Document
+      assert_true(list instanceof obj.ownerDocument.defaultView.NodeList, &quot;The result should be an instance of a NodeList&quot;)
+    } else { // The object is a Document
+      assert_true(list instanceof obj.defaultView.NodeList, &quot;The result should be an instance of a NodeList&quot;)
+    }
+  }, type + &quot;.querySelectorAll returns NodeList instance&quot;)
+}
+
+/*
+ * Verify that the NodeList returned by querySelectorAll is static and and that a new list is created after
+ * each call. A static list should not be affected by subsequent changes to the DOM.
+ */
+function verifyStaticList(type, doc, root) {
+  var pre, post, preLength;
+
+  test(function() {
+    pre = root.querySelectorAll(&quot;div&quot;);
+    preLength = pre.length;
+
+    var div = doc.createElement(&quot;div&quot;);
+    (root.body || root).appendChild(div);
+
+    assert_equals(pre.length, preLength, &quot;The length of the NodeList should not change.&quot;)
+  }, type + &quot;: static NodeList&quot;)
+
+  test(function() {
+    post = root.querySelectorAll(&quot;div&quot;),
+    assert_equals(post.length, preLength + 1, &quot;The length of the new NodeList should be 1 more than the previous list.&quot;)
+  }, type + &quot;: new NodeList&quot;)
+}
+
+/*
+ * Verify handling of special values for the selector parameter, including stringification of
+ * null and undefined, and the handling of the empty string.
+ */
+function runSpecialSelectorTests(type, root) {
+  test(function() { // 1
+    assert_equals(root.querySelectorAll(null).length, 1, &quot;This should find one element with the tag name 'NULL'.&quot;);
+  }, type + &quot;.querySelectorAll null&quot;)
+
+  test(function() { // 2
+    assert_equals(root.querySelectorAll(undefined).length, 1, &quot;This should find one element with the tag name 'UNDEFINED'.&quot;);
+  }, type + &quot;.querySelectorAll undefined&quot;)
+
+  test(function() { // 3
+    assert_throws(TypeError(), function() {
+      root.querySelectorAll();
+    }, &quot;This should throw a TypeError.&quot;)
+  }, type + &quot;.querySelectorAll no parameter&quot;)
+
+  test(function() { // 4
+    var elm = root.querySelector(null)
+    assert_not_equals(elm, null, &quot;This should find an element.&quot;);
+    assert_equals(elm.tagName.toUpperCase(), &quot;NULL&quot;, &quot;The tag name should be 'NULL'.&quot;)
+  }, type + &quot;.querySelector null&quot;)
+
+  test(function() { // 5
+    var elm = root.querySelector(undefined)
+    assert_not_equals(elm, undefined, &quot;This should find an element.&quot;);
+    assert_equals(elm.tagName.toUpperCase(), &quot;UNDEFINED&quot;, &quot;The tag name should be 'UNDEFINED'.&quot;)
+  }, type + &quot;.querySelector undefined&quot;)
+
+  test(function() { // 6
+    assert_throws(TypeError(), function() {
+      root.querySelector();
+    }, &quot;This should throw a TypeError.&quot;)
+  }, type + &quot;.querySelector no parameter&quot;)
+
+  test(function() { // 7
+    result = root.querySelectorAll(&quot;*&quot;);
+    var i = 0;
+    traverse(root, function(elem) {
+      if (elem !== root) {
+        assert_equals(elem, result[i], &quot;The result in index &quot; + i + &quot; should be in tree order.&quot;);
+        i++;
+      }
+    })
+  }, type + &quot;.querySelectorAll tree order&quot;);
+}
+
+/*
+ * Execute queries with the specified valid selectors for both querySelector() and querySelectorAll()
+ * Only run these tests when results are expected. Don't run for syntax error tests.
+ */
+function runValidSelectorTest(type, root, selectors, testType, docType) {
+  var nodeType = &quot;&quot;;
+  switch (root.nodeType) {
+    case Node.DOCUMENT_NODE:
+      nodeType = &quot;document&quot;;
+      break;
+    case Node.ELEMENT_NODE:
+      nodeType = root.parentNode ? &quot;element&quot; : &quot;detached&quot;;
+      break;
+    case Node.DOCUMENT_FRAGMENT_NODE:
+      nodeType = &quot;fragment&quot;;
+      break;
+    default:
+      assert_unreached();
+      nodeType = &quot;unknown&quot;; // This should never happen.
+  }
+
+  for (var i = 0; i &lt; selectors.length; i++) {
+    var s = selectors[i];
+    var n = s[&quot;name&quot;];
+    var q = s[&quot;selector&quot;];
+    var e = s[&quot;expect&quot;];
+
+    if ((!s[&quot;exclude&quot;] || (s[&quot;exclude&quot;].indexOf(nodeType) === -1 &amp;&amp; s[&quot;exclude&quot;].indexOf(docType) === -1))
+     &amp;&amp; (s[&quot;testType&quot;] &amp; testType) ) {
+      var foundall, found;
+
+      test(function() {
+        foundall = root.querySelectorAll(q);
+        assert_not_equals(foundall, null, &quot;The method should not return null.&quot;)
+        assert_equals(foundall.length, e.length, &quot;The method should return the expected number of matches.&quot;)
+
+        for (var i = 0; i &lt; e.length; i++) {
+          assert_not_equals(foundall[i], null, &quot;The item in index &quot; + i + &quot; should not be null.&quot;)
+          assert_equals(foundall[i].getAttribute(&quot;id&quot;), e[i], &quot;The item in index &quot; + i + &quot; should have the expected ID.&quot;);
+          assert_false(foundall[i].hasAttribute(&quot;data-clone&quot;), &quot;This should not be a cloned element.&quot;);
+        }
+      }, type + &quot;.querySelectorAll: &quot; + n + &quot;: &quot; + q);
+
+      test(function() {
+        found = root.querySelector(q);
+
+        if (e.length &gt; 0) {
+          assert_not_equals(found, null, &quot;The method should return a match.&quot;)
+          assert_equals(found.getAttribute(&quot;id&quot;), e[0], &quot;The method should return the first match.&quot;);
+          assert_equals(found, foundall[0], &quot;The result should match the first item from querySelectorAll.&quot;);
+          assert_false(found.hasAttribute(&quot;data-clone&quot;), &quot;This should not be annotated as a cloned element.&quot;);
+        } else {
+          assert_equals(found, null, &quot;The method should not match anything.&quot;);
+        }
+      }, type + &quot;.querySelector: &quot; + n + &quot;: &quot; + q);
+    }
+  }
+}
+
+/*
+ * Execute queries with the specified invalid selectors for both querySelector() and querySelectorAll()
+ * Only run these tests when errors are expected. Don't run for valid selector tests.
+ */
+function runInvalidSelectorTest(type, root, selectors) {
+  for (var i = 0; i &lt; selectors.length; i++) {
+    var s = selectors[i];
+    var n = s[&quot;name&quot;];
+    var q = s[&quot;selector&quot;];
+
+    test(function() {
+      assert_throws(&quot;SyntaxError&quot;, function() {
+        root.querySelector(q)
+      })
+    }, type + &quot;.querySelector: &quot; + n + &quot;: &quot; + q);
+
+    test(function() {
+      assert_throws(&quot;SyntaxError&quot;, function() {
+        root.querySelectorAll(q)
+      })
+    }, type + &quot;.querySelectorAll: &quot; + n + &quot;: &quot; + q);
+  }
+}
+
+function traverse(elem, fn) {
+  if (elem.nodeType === elem.ELEMENT_NODE) {
+    fn(elem);
+  }
+  elem = elem.firstChild;
+  while (elem) {
+    traverse(elem, fn);
+    elem = elem.nextSibling;
+  }
+}
+
+function getNodeType(node) {
+  switch (node.nodeType) {
+    case Node.DOCUMENT_NODE:
+      return &quot;document&quot;;
+    case Node.ELEMENT_NODE:
+      return node.parentNode ? &quot;element&quot; : &quot;detached&quot;;
+    case Node.DOCUMENT_FRAGMENT_NODE:
+      return &quot;fragment&quot;;
+    default:
+      assert_unreached();
+      return &quot;unknown&quot;; // This should never happen.
+  }
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesProcessingInstructionliteral1expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesProcessingInstructionliteral1expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ProcessingInstruction-literal-1-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/ProcessingInstruction-literal-1-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ProcessingInstruction-literal-1-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ProcessingInstruction-literal-1-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS &lt;?xml?&gt; is not a ProcessingInstruction 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesProcessingInstructionliteral1xhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesProcessingInstructionliteral1xhtmlxhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ProcessingInstruction-literal-1.xhtml (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/ProcessingInstruction-literal-1-xhtml.xhtml) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ProcessingInstruction-literal-1.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ProcessingInstruction-literal-1.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+&lt;head&gt;
+&lt;title&gt;&amp;lt;?xml?&gt; is not a ProcessingInstruction&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id=&quot;log&quot;/&gt;
+&lt;script&gt;
+test(function() {
+  assert_equals(document.firstChild, document.documentElement)
+})
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesProcessingInstructionliteral2expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesProcessingInstructionliteral2expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ProcessingInstruction-literal-2-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/ProcessingInstruction-literal-2-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ProcessingInstruction-literal-2-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ProcessingInstruction-literal-2-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS ProcessingInstruction literals 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesProcessingInstructionliteral2xhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesProcessingInstructionliteral2xhtmlxhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ProcessingInstruction-literal-2.xhtml (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/ProcessingInstruction-literal-2-xhtml.xhtml) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ProcessingInstruction-literal-2.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ProcessingInstruction-literal-2.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+&lt;?xml-stylesheet href=&quot;support/style.css&quot; type=&quot;text/css&quot;?&gt;
+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+&lt;head&gt;
+&lt;title&gt;ProcessingInstruction literals&lt;/title&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#dom-processinginstruction-target&quot;/&gt;
+&lt;link rel=&quot;help&quot; href=&quot;https://dom.spec.whatwg.org/#dom-characterdata-data&quot;/&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id=&quot;log&quot;/&gt;
+&lt;script&gt;
+test(function() {
+  var pienc = document.firstChild;
+  assert_true(pienc instanceof ProcessingInstruction)
+  assert_equals(pienc.target, &quot;xml-stylesheet&quot;)
+  assert_equals(pienc.data, 'href=&quot;support/style.css&quot; type=&quot;text/css&quot;')
+})
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesTextconstructorexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesTextconstructorexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Text-constructor-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Text-constructor-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Text-constructor-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Text-constructor-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+
+
+PASS new Text(): prototype chain 
+PASS new Text(): instanceof 
+PASS new Text(): no arguments 
+FAIL new Text(): undefined assert_equals: expected &quot;&quot; but got &quot;undefined&quot;
+PASS new Text(): null 
+PASS new Text(): 42 
+PASS new Text(): &quot;&quot; 
+PASS new Text(): &quot;-&quot; 
+PASS new Text(): &quot;--&quot; 
+PASS new Text(): &quot;--&gt;&quot; 
+PASS new Text(): &quot;&lt;!--&quot; 
+PASS new Text(): &quot;\0&quot; 
+PASS new Text(): &quot;\0test&quot; 
+PASS new Text(): &quot;&amp;amp;&quot; 
+PASS new Text(): two arguments 
+PASS new Text() should get the correct ownerDocument across globals 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesTextconstructorhtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesTextconstructorhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Text-constructor.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Text-constructor.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Text-constructor.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Text-constructor.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Text constructor&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-text&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;Comment-Text-constructor.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+test_constructor(&quot;Text&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesTextsplitTextexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesTextsplitTextexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Text-splitText-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Text-splitText-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Text-splitText-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Text-splitText-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+
+PASS Split text after end of data 
+PASS Split empty text 
+PASS Split text at beginning 
+PASS Split text at end 
+PASS Split root 
+PASS Split child 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesTextsplitTexthtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesTextsplitTexthtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Text-splitText.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/Text-splitText.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Text-splitText.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Text-splitText.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,53 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Text.splitText()&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-text-splittextoffset&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  var text = document.createTextNode(&quot;camembert&quot;);
+  assert_throws(&quot;INDEX_SIZE_ERR&quot;, function () { text.splitText(10) });
+}, &quot;Split text after end of data&quot;);
+
+test(function() {
+  var text = document.createTextNode(&quot;&quot;);
+  var new_text = text.splitText(0);
+  assert_equals(text.data, &quot;&quot;);
+  assert_equals(new_text.data, &quot;&quot;);
+}, &quot;Split empty text&quot;);
+
+test(function() {
+  var text = document.createTextNode(&quot;comté&quot;);
+  var new_text = text.splitText(0);
+  assert_equals(text.data, &quot;&quot;);
+  assert_equals(new_text.data, &quot;comté&quot;);
+}, &quot;Split text at beginning&quot;);
+
+test(function() {
+  var text = document.createTextNode(&quot;comté&quot;);
+  var new_text = text.splitText(5);
+  assert_equals(text.data, &quot;comté&quot;);
+  assert_equals(new_text.data, &quot;&quot;);
+}, &quot;Split text at end&quot;);
+
+test(function() {
+  var text = document.createTextNode(&quot;comté&quot;);
+  var new_text = text.splitText(3);
+  assert_equals(text.data, &quot;com&quot;);
+  assert_equals(new_text.data, &quot;té&quot;);
+  assert_equals(new_text.parentNode, null);
+}, &quot;Split root&quot;);
+
+test(function() {
+  var parent = document.createElement('div');
+  var text = document.createTextNode(&quot;bleu&quot;);
+  parent.appendChild(text);
+  var new_text = text.splitText(2);
+  assert_equals(text.data, &quot;bl&quot;);
+  assert_equals(new_text.data, &quot;eu&quot;);
+  assert_equals(text.nextSibling, new_text);
+  assert_equals(new_text.parentNode, parent);
+}, &quot;Split child&quot;);
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesappendonDocumentexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesappendonDocumentexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/append-on-Document-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/append-on-Document-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/append-on-Document-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/append-on-Document-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+
+PASS Document.append() without any argument, on a Document having no child. 
+PASS Document.append() with only one element as an argument, on a Document having no child. 
+PASS Document.append() with only one element as an argument, on a Document having one child. 
+PASS Document.append() with text as an argument, on a Document having no child. 
+FAIL Document.append() with two elements as the argument, on a Document having no child. assert_throws: function &quot;function () { parent.append(x, y); }&quot; did not throw
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesappendonDocumenthtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesappendonDocumenthtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/append-on-Document.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/append-on-Document.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/append-on-Document.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/append-on-Document.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,53 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;DocumentType.append&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-parentnode-append&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+function test_append_on_Document() {
+
+    var node = document.implementation.createDocument(null, null);
+    test(function() {
+        var parent = node.cloneNode();
+        parent.append();
+        assert_array_equals(parent.childNodes, []);
+    }, 'Document.append() without any argument, on a Document having no child.');
+
+    test(function() {
+        var parent = node.cloneNode();
+        var x = document.createElement('x');
+        parent.append(x);
+        assert_array_equals(parent.childNodes, [x]);
+    }, 'Document.append() with only one element as an argument, on a Document having no child.');
+
+    test(function() {
+        var parent = node.cloneNode();
+        var x = document.createElement('x');
+        var y = document.createElement('y');
+        parent.appendChild(x);
+        assert_throws('HierarchyRequestError', function() { parent.append(y); });
+        assert_array_equals(parent.childNodes, [x]);
+    }, 'Document.append() with only one element as an argument, on a Document having one child.');
+
+    test(function() {
+        var parent = node.cloneNode();
+        assert_throws('HierarchyRequestError', function() { parent.append('text'); });
+        assert_array_equals(parent.childNodes, []);
+    }, 'Document.append() with text as an argument, on a Document having no child.');
+
+    test(function() {
+        var parent = node.cloneNode();
+        var x = document.createElement('x');
+        var y = document.createElement('y');
+        assert_throws('HierarchyRequestError', function() { parent.append(x, y); });
+        assert_array_equals(parent.childNodes, []);
+    }, 'Document.append() with two elements as the argument, on a Document having no child.');
+
+}
+
+test_append_on_Document();
+
+&lt;/script&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesattributesexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesattributesexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/attributes-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/attributes-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/attributes-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/attributes-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,39 @@
</span><ins>+
+FAIL AttrExodus assert_false: expected false got true
+PASS When qualifiedName does not match the Name production, an INVALID_CHARACTER_ERR exception is to be thrown. (setAttribute) 
+FAIL setAttribute should lowercase its name argument (upper case attribute) assert_equals: expected (object) null but got (string) &quot;&quot;
+FAIL setAttribute should lowercase its name argument (mixed case attribute) assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS setAttribute should not throw even when qualifiedName starts with 'xmlns' 
+PASS Basic functionality should be intact. 
+PASS setAttribute should not change the order of previously set attributes. 
+PASS setAttribute should set the first attribute with the given name 
+PASS setAttribute should set the attribute with the given qualified name 
+PASS When qualifiedName does not match the Name production, an INVALID_CHARACTER_ERR exception is to be thrown. (setAttributeNS) 
+PASS When qualifiedName does not match the QName production, an NAMESPACE_ERR exception is to be thrown. 
+PASS null and the empty string should result in a null namespace. 
+PASS A namespace is required to use a prefix. 
+PASS The xml prefix should not be allowed for arbitrary namespaces 
+PASS XML-namespaced attributes don't need an xml prefix 
+PASS The xmlns prefix should not be allowed for arbitrary namespaces 
+PASS The xmlns qualified name should not be allowed for arbitrary namespaces 
+PASS xmlns should be allowed as local name 
+PASS The XMLNS namespace should require xmlns as prefix or qualified name 
+PASS xmlns should be allowed as prefix in the XMLNS namespace 
+PASS xmlns should be allowed as qualified name in the XMLNS namespace 
+PASS Setting the same attribute with another prefix should not change the prefix 
+PASS setAttribute should not throw even if a load is not allowed 
+PASS Attributes should work in document fragments. 
+PASS Attribute values should not be parsed. 
+PASS Specified attributes should be accessible. 
+PASS Entities in attributes should have been expanded while parsing. 
+FAIL Unset attributes return null assert_equals: expected (object) null but got (string) &quot;&quot;
+FAIL First set attribute is returned by getAttribute assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS Style attributes are not normalized 
+FAIL Only lowercase attributes are returned on HTML elements (upper case attribute) assert_equals: expected (object) null but got (string) &quot;&quot;
+FAIL Only lowercase attributes are returned on HTML elements (mixed case attribute) assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS First set attribute is returned with mapped attribute set first 
+PASS First set attribute is returned with mapped attribute set later 
+FAIL Non-HTML element with upper-case attribute assert_equals: el.hasAttributeNS(undefined) expected true but got false
+PASS Attribute with prefix in local name 
+PASS Attribute loses its owner when removed 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesattributeshtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesattributeshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/attributes.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/attributes.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/attributes.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/attributes.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,397 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Attributes tests&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#attr&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-element-setattribute&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-element-setattributens&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;attributes.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;productions.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;span id=&quot;test1&quot;&gt;&lt;/span&gt;
+&lt;span class=&quot;&amp;amp;&amp;lt;&amp;gt;foo&quot;&gt;&lt;/span&gt;
+&lt;script&gt;
+var XML = &quot;http://www.w3.org/XML/1998/namespace&quot;
+var XMLNS = &quot;http://www.w3.org/2000/xmlns/&quot;
+
+// AttrExodus
+test(function() {
+  document.body.setAttribute(&quot;abc&quot;, &quot;pass&quot;)
+  var attr = document.body.attributes[0]
+  assert_true(attr instanceof Attr)
+  assert_false(attr instanceof Node)
+  assert_throws(new TypeError(), function() { attr.appendChild(document.createTextNode(&quot;fail&quot;)) })
+  assert_throws(new TypeError(), function() { attr.appendChild(null) })
+  assert_equals(attr.value, &quot;pass&quot;)
+  assert_false(&quot;childNodes&quot; in attr, &quot;Should not have childNodes&quot;)
+}, &quot;AttrExodus&quot;)
+
+// setAttribute exhaustive tests
+// Step 1
+test(function() {
+  var el = document.createElement(&quot;foo&quot;)
+  for (var i = 0; i &lt; invalid_names.length; i++) {
+    assert_throws(&quot;INVALID_CHARACTER_ERR&quot;, function() { el.setAttribute(invalid_names[i], &quot;test&quot;) })
+  }
+}, &quot;When qualifiedName does not match the Name production, an &quot; +
+   &quot;INVALID_CHARACTER_ERR exception is to be thrown. (setAttribute)&quot;)
+
+// Step 2
+test(function() {
+  var el = document.createElement(&quot;div&quot;)
+  el.setAttribute(&quot;ALIGN&quot;, &quot;left&quot;)
+  assert_equals(el.getAttributeNS(&quot;&quot;, &quot;ALIGN&quot;), null)
+  assert_equals(el.getAttributeNS(&quot;&quot;, &quot;align&quot;), &quot;left&quot;)
+  assert_equals(el.getAttribute(&quot;align&quot;), &quot;left&quot;)
+}, &quot;setAttribute should lowercase its name argument (upper case attribute)&quot;)
+test(function() {
+  var el = document.createElement(&quot;div&quot;)
+  el.setAttribute(&quot;CHEEseCaKe&quot;, &quot;tasty&quot;)
+  assert_equals(el.getAttributeNS(&quot;&quot;, &quot;CHEEseCaKe&quot;), null)
+  assert_equals(el.getAttributeNS(&quot;&quot;, &quot;cheesecake&quot;), &quot;tasty&quot;)
+  assert_equals(el.getAttribute(&quot;cheesecake&quot;), &quot;tasty&quot;)
+}, &quot;setAttribute should lowercase its name argument (mixed case attribute)&quot;)
+
+// Step 3
+test(function() {
+  var el = document.createElement(&quot;foo&quot;)
+  var tests = [&quot;xmlns&quot;, &quot;xmlns:a&quot;, &quot;xmlnsx&quot;, &quot;xmlns0&quot;]
+  for (var i = 0; i &lt; tests.length; i++) {
+    el.setAttribute(tests[i], &quot;success&quot;);
+  }
+}, &quot;setAttribute should not throw even when qualifiedName starts with 'xmlns'&quot;)
+
+// Step 4
+test(function() {
+  var el = document.createElement(&quot;foo&quot;)
+  for (var i = 0; i &lt; valid_names.length; i++) {
+    el.setAttribute(valid_names[i], &quot;test&quot;)
+    assert_equals(el.getAttribute(valid_names[i]), &quot;test&quot;)
+  }
+}, &quot;Basic functionality should be intact.&quot;)
+
+// Step 5
+test(function() {
+  var el = document.createElement(&quot;foo&quot;)
+  el.setAttribute(&quot;a&quot;, &quot;1&quot;)
+  el.setAttribute(&quot;b&quot;, &quot;2&quot;)
+  el.setAttribute(&quot;a&quot;, &quot;3&quot;)
+  el.setAttribute(&quot;c&quot;, &quot;4&quot;)
+  attributes_are(el, [[&quot;a&quot;, &quot;3&quot;],
+                      [&quot;b&quot;, &quot;2&quot;],
+                      [&quot;c&quot;, &quot;4&quot;]])
+}, &quot;setAttribute should not change the order of previously set attributes.&quot;)
+test(function() {
+  var el = document.createElement(&quot;baz&quot;)
+  el.setAttributeNS(&quot;ab&quot;, &quot;attr&quot;, &quot;fail&quot;)
+  el.setAttributeNS(&quot;kl&quot;, &quot;attr&quot;, &quot;pass&quot;)
+  el.setAttribute(&quot;attr&quot;, &quot;pass&quot;)
+  attributes_are(el, [[&quot;attr&quot;, &quot;pass&quot;, &quot;ab&quot;],
+                      [&quot;attr&quot;, &quot;pass&quot;, &quot;kl&quot;]])
+}, &quot;setAttribute should set the first attribute with the given name&quot;)
+test(function() {
+  // Based on a test by David Flanagan.
+  var el = document.createElement(&quot;baz&quot;)
+  el.setAttributeNS(&quot;foo&quot;, &quot;foo:bar&quot;, &quot;1&quot;);
+  assert_equals(el.getAttribute(&quot;foo:bar&quot;), &quot;1&quot;)
+  attr_is(el.attributes[0], &quot;1&quot;, &quot;bar&quot;, &quot;foo&quot;, &quot;foo&quot;, &quot;foo:bar&quot;)
+  el.setAttribute(&quot;foo:bar&quot;, &quot;2&quot;);
+  assert_equals(el.getAttribute(&quot;foo:bar&quot;), &quot;2&quot;)
+  attr_is(el.attributes[0], &quot;2&quot;, &quot;bar&quot;, &quot;foo&quot;, &quot;foo&quot;, &quot;foo:bar&quot;)
+}, &quot;setAttribute should set the attribute with the given qualified name&quot;)
+
+// setAttributeNS exhaustive tests
+// Step 1
+test(function() {
+  var el = document.createElement(&quot;foo&quot;)
+  for (var i = 0, il = invalid_names.length; i &lt; il; ++i) {
+    assert_throws(&quot;INVALID_CHARACTER_ERR&quot;,
+                  function() { el.setAttributeNS(&quot;a&quot;, invalid_names[i], &quot;fail&quot;) })
+  }
+}, &quot;When qualifiedName does not match the Name production, an &quot; +
+   &quot;INVALID_CHARACTER_ERR exception is to be thrown. (setAttributeNS)&quot;)
+
+// Step 2
+test(function() {
+  var el = document.createElement(&quot;foo&quot;)
+  for (var i = 0, il = invalid_qnames.length; i &lt; il; ++i) {
+    assert_throws(&quot;NAMESPACE_ERR&quot;,
+                  function() { el.setAttributeNS(&quot;a&quot;, invalid_qnames[i], &quot;fail&quot;) },
+                  &quot;Expected exception for &quot; + invalid_qnames[i] + &quot;.&quot;)
+  }
+}, &quot;When qualifiedName does not match the QName production, an &quot; +
+   &quot;NAMESPACE_ERR exception is to be thrown.&quot;)
+
+// Step 3
+test(function() {
+  var el = document.createElement(&quot;foo&quot;)
+  el.setAttributeNS(null, &quot;aa&quot;, &quot;bb&quot;)
+  el.setAttributeNS(&quot;&quot;, &quot;xx&quot;, &quot;bb&quot;)
+  attributes_are(el, [[&quot;aa&quot;, &quot;bb&quot;],
+                      [&quot;xx&quot;, &quot;bb&quot;]])
+}, &quot;null and the empty string should result in a null namespace.&quot;)
+
+// Step 4
+test(function() {
+  var el = document.createElement(&quot;foo&quot;)
+  assert_throws(&quot;NAMESPACE_ERR&quot;,
+                function() { el.setAttributeNS(&quot;&quot;, &quot;aa:bb&quot;, &quot;fail&quot;) })
+  assert_throws(&quot;NAMESPACE_ERR&quot;,
+                function() { el.setAttributeNS(null, &quot;aa:bb&quot;, &quot;fail&quot;) })
+}, &quot;A namespace is required to use a prefix.&quot;)
+
+// Step 5
+test(function() {
+  var el = document.createElement(&quot;foo&quot;)
+  assert_throws(&quot;NAMESPACE_ERR&quot;,
+                function() { el.setAttributeNS(&quot;a&quot;, &quot;xml:bb&quot;, &quot;fail&quot;) })
+}, &quot;The xml prefix should not be allowed for arbitrary namespaces&quot;)
+test(function() {
+  var el = document.createElement(&quot;foo&quot;)
+  el.setAttributeNS(XML, &quot;a:bb&quot;, &quot;pass&quot;)
+  assert_equals(el.attributes.length, 1)
+  attr_is(el.attributes[0], &quot;pass&quot;, &quot;bb&quot;, XML, &quot;a&quot;, &quot;a:bb&quot;)
+}, &quot;XML-namespaced attributes don't need an xml prefix&quot;)
+
+// Step 6
+test(function() {
+  var el = document.createElement(&quot;foo&quot;)
+  assert_throws(&quot;NAMESPACE_ERR&quot;,
+                function() { el.setAttributeNS(&quot;a&quot;, &quot;xmlns:bb&quot;, &quot;fail&quot;) })
+}, &quot;The xmlns prefix should not be allowed for arbitrary namespaces&quot;)
+test(function() {
+  var el = document.createElement(&quot;foo&quot;)
+  assert_throws(&quot;NAMESPACE_ERR&quot;,
+                function() { el.setAttributeNS(&quot;a&quot;, &quot;xmlns&quot;, &quot;fail&quot;) })
+}, &quot;The xmlns qualified name should not be allowed for arbitrary namespaces&quot;)
+test(function() {
+  var el = document.createElement(&quot;foo&quot;)
+  el.setAttributeNS(&quot;ns&quot;, &quot;a:xmlns&quot;, &quot;pass&quot;)
+  assert_equals(el.attributes.length, 1)
+  attr_is(el.attributes[0], &quot;pass&quot;, &quot;xmlns&quot;, &quot;ns&quot;, &quot;a&quot;, &quot;a:xmlns&quot;)
+}, &quot;xmlns should be allowed as local name&quot;)
+
+// Step 7
+test(function() {
+  var el = document.createElement(&quot;foo&quot;)
+  assert_throws(&quot;NAMESPACE_ERR&quot;,
+                function() { el.setAttributeNS(XMLNS, &quot;a:xmlns&quot;, &quot;fail&quot;) })
+  assert_throws(&quot;NAMESPACE_ERR&quot;,
+                function() { el.setAttributeNS(XMLNS, &quot;b:foo&quot;, &quot;fail&quot;) })
+}, &quot;The XMLNS namespace should require xmlns as prefix or qualified name&quot;)
+test(function() {
+  var el = document.createElement(&quot;foo&quot;)
+  el.setAttributeNS(XMLNS, &quot;xmlns:a&quot;, &quot;pass&quot;)
+  assert_equals(el.attributes.length, 1)
+  attr_is(el.attributes[0], &quot;pass&quot;, &quot;a&quot;, XMLNS, &quot;xmlns&quot;, &quot;xmlns:a&quot;)
+}, &quot;xmlns should be allowed as prefix in the XMLNS namespace&quot;)
+test(function() {
+  var el = document.createElement(&quot;foo&quot;)
+  el.setAttributeNS(XMLNS, &quot;xmlns&quot;, &quot;pass&quot;)
+  assert_equals(el.attributes.length, 1)
+  attr_is(el.attributes[0], &quot;pass&quot;, &quot;xmlns&quot;, XMLNS, null, &quot;xmlns&quot;)
+}, &quot;xmlns should be allowed as qualified name in the XMLNS namespace&quot;)
+
+// Step 8-9
+test(function() {
+  var el = document.createElement(&quot;foo&quot;)
+  el.setAttributeNS(&quot;a&quot;, &quot;foo:bar&quot;, &quot;X&quot;)
+  assert_equals(el.attributes.length, 1)
+  attr_is(el.attributes[0], &quot;X&quot;, &quot;bar&quot;, &quot;a&quot;, &quot;foo&quot;, &quot;foo:bar&quot;)
+
+  el.setAttributeNS(&quot;a&quot;, &quot;quux:bar&quot;, &quot;Y&quot;)
+  assert_equals(el.attributes.length, 1)
+  attr_is(el.attributes[0], &quot;Y&quot;, &quot;bar&quot;, &quot;a&quot;, &quot;foo&quot;, &quot;foo:bar&quot;)
+  el.removeAttributeNS(&quot;a&quot;, &quot;bar&quot;)
+}, &quot;Setting the same attribute with another prefix should not change the prefix&quot;)
+
+// Miscellaneous tests
+test(function() {
+  var el = document.createElement(&quot;iframe&quot;)
+  el.setAttribute(&quot;src&quot;, &quot;file:///home&quot;)
+  assert_equals(el.getAttribute(&quot;src&quot;), &quot;file:///home&quot;)
+}, &quot;setAttribute should not throw even if a load is not allowed&quot;)
+test(function() {
+  var docFragment = document.createDocumentFragment()
+  var newOne = document.createElement(&quot;newElement&quot;)
+  newOne.setAttribute(&quot;newdomestic&quot;, &quot;Yes&quot;)
+  docFragment.appendChild(newOne)
+  var domesticNode = docFragment.firstChild
+  var attr = domesticNode.attributes.item(0)
+  attr_is(attr, &quot;Yes&quot;, &quot;newdomestic&quot;, null, null, &quot;newdomestic&quot;)
+}, &quot;Attributes should work in document fragments.&quot;)
+test(function() {
+  var el = document.createElement(&quot;foo&quot;)
+  el.setAttribute(&quot;x&quot;, &quot;y&quot;)
+  var attr = el.attributes[0]
+  attr.value = &quot;Y&amp;lt;&quot;
+  attr_is(attr, &quot;Y&amp;lt;&quot;, &quot;x&quot;, null, null, &quot;x&quot;)
+  assert_equals(el.getAttribute(&quot;x&quot;), &quot;Y&amp;lt;&quot;)
+}, &quot;Attribute values should not be parsed.&quot;)
+test(function() {
+  var el = document.getElementsByTagName(&quot;span&quot;)[0]
+  attr_is(el.attributes[0], &quot;test1&quot;, &quot;id&quot;, null, null, &quot;id&quot;)
+}, &quot;Specified attributes should be accessible.&quot;)
+test(function() {
+  var el = document.getElementsByTagName(&quot;span&quot;)[1]
+  attr_is(el.attributes[0], &quot;&amp;&lt;&gt;foo&quot;, &quot;class&quot;, null, null, &quot;class&quot;)
+}, &quot;Entities in attributes should have been expanded while parsing.&quot;)
+
+test(function() {
+  var el = document.createElement(&quot;div&quot;)
+  assert_equals(el.hasAttribute(&quot;bar&quot;), false)
+  assert_equals(el.hasAttributeNS(null, &quot;bar&quot;), false)
+  assert_equals(el.hasAttributeNS(&quot;&quot;, &quot;bar&quot;), false)
+  assert_equals(el.getAttribute(&quot;bar&quot;), null)
+  assert_equals(el.getAttributeNS(null, &quot;bar&quot;), null)
+  assert_equals(el.getAttributeNS(&quot;&quot;, &quot;bar&quot;), null)
+}, &quot;Unset attributes return null&quot;)
+test(function() {
+  var el = document.createElement(&quot;div&quot;)
+  el.setAttributeNS(&quot;ab&quot;, &quot;attr&quot;, &quot;t1&quot;)
+  el.setAttributeNS(&quot;kl&quot;, &quot;attr&quot;, &quot;t2&quot;)
+  assert_equals(el.hasAttribute(&quot;attr&quot;), true)
+  assert_equals(el.hasAttributeNS(&quot;ab&quot;, &quot;attr&quot;), true)
+  assert_equals(el.hasAttributeNS(&quot;kl&quot;, &quot;attr&quot;), true)
+  assert_equals(el.getAttribute(&quot;attr&quot;), &quot;t1&quot;)
+  assert_equals(el.getAttributeNS(&quot;ab&quot;, &quot;attr&quot;), &quot;t1&quot;)
+  assert_equals(el.getAttributeNS(&quot;kl&quot;, &quot;attr&quot;), &quot;t2&quot;)
+  assert_equals(el.getAttributeNS(null, &quot;attr&quot;), null)
+  assert_equals(el.getAttributeNS(&quot;&quot;, &quot;attr&quot;), null)
+}, &quot;First set attribute is returned by getAttribute&quot;)
+test(function() {
+  var el = document.createElement(&quot;div&quot;)
+  el.setAttribute(&quot;style&quot;, &quot;color:#fff;&quot;)
+  assert_equals(el.hasAttribute(&quot;style&quot;), true)
+  assert_equals(el.hasAttributeNS(null, &quot;style&quot;), true)
+  assert_equals(el.hasAttributeNS(&quot;&quot;, &quot;style&quot;), true)
+  assert_equals(el.getAttribute(&quot;style&quot;), &quot;color:#fff;&quot;)
+  assert_equals(el.getAttributeNS(null, &quot;style&quot;), &quot;color:#fff;&quot;)
+  assert_equals(el.getAttributeNS(&quot;&quot;, &quot;style&quot;), &quot;color:#fff;&quot;)
+}, &quot;Style attributes are not normalized&quot;)
+test(function() {
+  var el = document.createElement(&quot;div&quot;)
+  el.setAttributeNS(&quot;&quot;, &quot;ALIGN&quot;, &quot;left&quot;)
+  assert_equals(el.hasAttribute(&quot;ALIGN&quot;), false)
+  assert_equals(el.hasAttribute(&quot;align&quot;), false)
+  assert_equals(el.hasAttributeNS(null, &quot;ALIGN&quot;), true)
+  assert_equals(el.hasAttributeNS(null, &quot;align&quot;), false)
+  assert_equals(el.hasAttributeNS(&quot;&quot;, &quot;ALIGN&quot;), true)
+  assert_equals(el.hasAttributeNS(&quot;&quot;, &quot;align&quot;), false)
+  assert_equals(el.getAttribute(&quot;ALIGN&quot;), null)
+  assert_equals(el.getAttribute(&quot;align&quot;), null)
+  assert_equals(el.getAttributeNS(null, &quot;ALIGN&quot;), &quot;left&quot;)
+  assert_equals(el.getAttributeNS(&quot;&quot;, &quot;ALIGN&quot;), &quot;left&quot;)
+  assert_equals(el.getAttributeNS(null, &quot;align&quot;), null)
+  assert_equals(el.getAttributeNS(&quot;&quot;, &quot;align&quot;), null)
+  el.removeAttributeNS(&quot;&quot;, &quot;ALIGN&quot;)
+}, &quot;Only lowercase attributes are returned on HTML elements (upper case attribute)&quot;)
+test(function() {
+  var el = document.createElement(&quot;div&quot;)
+  el.setAttributeNS(&quot;&quot;, &quot;CHEEseCaKe&quot;, &quot;tasty&quot;)
+  assert_equals(el.hasAttribute(&quot;CHEESECAKE&quot;), false)
+  assert_equals(el.hasAttribute(&quot;CHEEseCaKe&quot;), false)
+  assert_equals(el.hasAttribute(&quot;cheesecake&quot;), false)
+  assert_equals(el.hasAttributeNS(&quot;&quot;, &quot;CHEESECAKE&quot;), false)
+  assert_equals(el.hasAttributeNS(&quot;&quot;, &quot;CHEEseCaKe&quot;), true)
+  assert_equals(el.hasAttributeNS(&quot;&quot;, &quot;cheesecake&quot;), false)
+  assert_equals(el.hasAttributeNS(null, &quot;CHEESECAKE&quot;), false)
+  assert_equals(el.hasAttributeNS(null, &quot;CHEEseCaKe&quot;), true)
+  assert_equals(el.hasAttributeNS(null, &quot;cheesecake&quot;), false)
+  assert_equals(el.getAttribute(&quot;CHEESECAKE&quot;), null)
+  assert_equals(el.getAttribute(&quot;CHEEseCaKe&quot;), null)
+  assert_equals(el.getAttribute(&quot;cheesecake&quot;), null)
+  assert_equals(el.getAttributeNS(null, &quot;CHEESECAKE&quot;), null)
+  assert_equals(el.getAttributeNS(&quot;&quot;, &quot;CHEESECAKE&quot;), null)
+  assert_equals(el.getAttributeNS(null, &quot;CHEEseCaKe&quot;), &quot;tasty&quot;)
+  assert_equals(el.getAttributeNS(&quot;&quot;, &quot;CHEEseCaKe&quot;), &quot;tasty&quot;)
+  assert_equals(el.getAttributeNS(null, &quot;cheesecake&quot;), null)
+  assert_equals(el.getAttributeNS(&quot;&quot;, &quot;cheesecake&quot;), null)
+  el.removeAttributeNS(&quot;&quot;, &quot;CHEEseCaKe&quot;)
+}, &quot;Only lowercase attributes are returned on HTML elements (mixed case attribute)&quot;)
+test(function() {
+  var el = document.createElement(&quot;div&quot;)
+  document.body.appendChild(el)
+  el.setAttributeNS(&quot;&quot;, &quot;align&quot;, &quot;left&quot;)
+  el.setAttributeNS(&quot;xx&quot;, &quot;align&quot;, &quot;right&quot;)
+  el.setAttributeNS(&quot;&quot;, &quot;foo&quot;, &quot;left&quot;)
+  el.setAttributeNS(&quot;xx&quot;, &quot;foo&quot;, &quot;right&quot;)
+  assert_equals(el.hasAttribute(&quot;align&quot;), true)
+  assert_equals(el.hasAttribute(&quot;foo&quot;), true)
+  assert_equals(el.hasAttributeNS(&quot;xx&quot;, &quot;align&quot;), true)
+  assert_equals(el.hasAttributeNS(null, &quot;foo&quot;), true)
+  assert_equals(el.getAttribute(&quot;align&quot;), &quot;left&quot;)
+  assert_equals(el.getAttribute(&quot;foo&quot;), &quot;left&quot;)
+  assert_equals(el.getAttributeNS(&quot;xx&quot;, &quot;align&quot;), &quot;right&quot;)
+  assert_equals(el.getAttributeNS(null, &quot;foo&quot;), &quot;left&quot;)
+  assert_equals(el.getAttributeNS(&quot;&quot;, &quot;foo&quot;), &quot;left&quot;)
+  el.removeAttributeNS(&quot;&quot;, &quot;align&quot;)
+  el.removeAttributeNS(&quot;xx&quot;, &quot;align&quot;)
+  el.removeAttributeNS(&quot;&quot;, &quot;foo&quot;)
+  el.removeAttributeNS(&quot;xx&quot;, &quot;foo&quot;)
+  document.body.removeChild(el)
+}, &quot;First set attribute is returned with mapped attribute set first&quot;)
+test(function() {
+  var el = document.createElement(&quot;div&quot;)
+  el.setAttributeNS(&quot;xx&quot;, &quot;align&quot;, &quot;right&quot;)
+  el.setAttributeNS(&quot;&quot;, &quot;align&quot;, &quot;left&quot;)
+  el.setAttributeNS(&quot;xx&quot;, &quot;foo&quot;, &quot;right&quot;)
+  el.setAttributeNS(&quot;&quot;, &quot;foo&quot;, &quot;left&quot;)
+  assert_equals(el.hasAttribute(&quot;align&quot;), true)
+  assert_equals(el.hasAttribute(&quot;foo&quot;), true)
+  assert_equals(el.hasAttributeNS(&quot;xx&quot;, &quot;align&quot;), true)
+  assert_equals(el.hasAttributeNS(null, &quot;foo&quot;), true)
+  assert_equals(el.getAttribute(&quot;align&quot;), &quot;right&quot;)
+  assert_equals(el.getAttribute(&quot;foo&quot;), &quot;right&quot;)
+  assert_equals(el.getAttributeNS(&quot;xx&quot;, &quot;align&quot;), &quot;right&quot;)
+  assert_equals(el.getAttributeNS(null, &quot;foo&quot;), &quot;left&quot;)
+  assert_equals(el.getAttributeNS(&quot;&quot;, &quot;foo&quot;), &quot;left&quot;)
+  el.removeAttributeNS(&quot;&quot;, &quot;align&quot;)
+  el.removeAttributeNS(&quot;xx&quot;, &quot;align&quot;)
+  el.removeAttributeNS(&quot;&quot;, &quot;foo&quot;)
+  el.removeAttributeNS(&quot;xx&quot;, &quot;foo&quot;)
+}, &quot;First set attribute is returned with mapped attribute set later&quot;)
+
+test(function() {
+  var el = document.createElementNS(&quot;http://www.example.com&quot;, &quot;foo&quot;)
+  el.setAttribute(&quot;A&quot;, &quot;test&quot;)
+  assert_equals(el.hasAttribute(&quot;A&quot;), true, &quot;hasAttribute()&quot;)
+  assert_equals(el.hasAttributeNS(&quot;&quot;, &quot;A&quot;), true, &quot;el.hasAttributeNS(\&quot;\&quot;)&quot;)
+  assert_equals(el.hasAttributeNS(null, &quot;A&quot;), true, &quot;el.hasAttributeNS(null)&quot;)
+  assert_equals(el.hasAttributeNS(undefined, &quot;A&quot;), true, &quot;el.hasAttributeNS(undefined)&quot;)
+  assert_equals(el.hasAttributeNS(&quot;foo&quot;, &quot;A&quot;), false, &quot;el.hasAttributeNS(\&quot;foo\&quot;)&quot;)
+
+  assert_equals(el.getAttribute(&quot;A&quot;), &quot;test&quot;, &quot;getAttribute()&quot;)
+  assert_equals(el.getAttributeNS(&quot;&quot;, &quot;A&quot;), &quot;test&quot;, &quot;el.getAttributeNS(\&quot;\&quot;)&quot;)
+  assert_equals(el.getAttributeNS(null, &quot;A&quot;), &quot;test&quot;, &quot;el.getAttributeNS(null)&quot;)
+  assert_equals(el.getAttributeNS(undefined, &quot;A&quot;), &quot;test&quot;, &quot;el.getAttributeNS(undefined)&quot;)
+  assert_equals(el.getAttributeNS(&quot;foo&quot;, &quot;A&quot;), null, &quot;el.getAttributeNS(\&quot;foo\&quot;)&quot;)
+}, &quot;Non-HTML element with upper-case attribute&quot;)
+
+test(function() {
+  var el = document.createElement(&quot;div&quot;)
+  el.setAttribute(&quot;pre:fix&quot;, &quot;value 1&quot;)
+  el.setAttribute(&quot;fix&quot;, &quot;value 2&quot;)
+
+  var prefixed = el.attributes[0]
+  assert_equals(prefixed.localName, &quot;pre:fix&quot;, &quot;prefixed local name&quot;)
+  assert_equals(prefixed.namespaceURI, null, &quot;prefixed namespace&quot;)
+
+  var unprefixed = el.attributes[1]
+  assert_equals(unprefixed.localName, &quot;fix&quot;, &quot;unprefixed local name&quot;)
+  assert_equals(unprefixed.namespaceURI, null, &quot;unprefixed namespace&quot;)
+
+  el.removeAttributeNS(null, &quot;pre:fix&quot;)
+  assert_equals(el.attributes[0], unprefixed)
+}, &quot;Attribute with prefix in local name&quot;)
+
+test(function() {
+  var el = document.createElement(&quot;div&quot;)
+  el.setAttribute(&quot;foo&quot;, &quot;bar&quot;)
+  var attr = el.attributes[0]
+  assert_equals(attr.ownerElement, el)
+  el.removeAttribute(&quot;foo&quot;)
+  assert_equals(attr.ownerElement, null)
+}, &quot;Attribute loses its owner when removed&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesattributesjsfromrev189470trunkLayoutTestshttptestsw3cdomnodesattributesjs"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/attributes.js (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/attributes.js) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/attributes.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/attributes.js        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+function attr_is(attr, v, ln, ns, p, n) {
+  assert_equals(attr.value, v)
+  assert_equals(attr.nodeValue, v)
+  assert_equals(attr.textContent, v)
+  assert_equals(attr.localName, ln)
+  assert_equals(attr.namespaceURI, ns)
+  assert_equals(attr.prefix, p)
+  assert_equals(attr.name, n)
+  assert_equals(attr.specified, true)
+}
+
+function attributes_are(el, l) {
+  for (var i = 0, il = l.length; i &lt; il; i++) {
+    attr_is(el.attributes[i], l[i][1], l[i][0], (l[i].length &lt; 3) ? null : l[i][2], null, l[i][0])
+    assert_equals(el.attributes[i].ownerElement, el)
+  }
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodescaseexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodescaseexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/case-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/case-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/case-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/case-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,287 @@
</span><ins>+
+PASS createElement abc 
+PASS setAttribute abc 
+PASS getAttribute abc 
+PASS getElementsByTagName a:abc 
+PASS getElementsByTagName abc 
+PASS createElement Abc 
+PASS setAttribute Abc 
+PASS getAttribute Abc 
+PASS getElementsByTagName a:Abc 
+PASS getElementsByTagName Abc 
+PASS createElement ABC 
+PASS setAttribute ABC 
+PASS getAttribute ABC 
+PASS getElementsByTagName a:ABC 
+PASS getElementsByTagName ABC 
+PASS createElement ä 
+PASS setAttribute ä 
+PASS getAttribute ä 
+PASS getElementsByTagName a:ä 
+PASS getElementsByTagName ä 
+FAIL createElement Ä assert_equals: expected &quot;Ä&quot; but got &quot;ä&quot;
+PASS setAttribute Ä 
+PASS getAttribute Ä 
+PASS getElementsByTagName a:Ä 
+PASS getElementsByTagName Ä 
+PASS createElementNS http://www.w3.org/1999/xhtml,abc,abc 
+PASS setAttributeNS http://www.w3.org/1999/xhtml,abc,abc 
+PASS getAttributeNS http://www.w3.org/1999/xhtml,abc,abc 
+PASS createElementNS http://www.w3.org/1999/xhtml,abc,Abc 
+PASS setAttributeNS http://www.w3.org/1999/xhtml,abc,Abc 
+FAIL getAttributeNS http://www.w3.org/1999/xhtml,abc,Abc assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://www.w3.org/1999/xhtml,abc,ABC 
+PASS setAttributeNS http://www.w3.org/1999/xhtml,abc,ABC 
+FAIL getAttributeNS http://www.w3.org/1999/xhtml,abc,ABC assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://www.w3.org/1999/xhtml,abc,ä 
+PASS setAttributeNS http://www.w3.org/1999/xhtml,abc,ä 
+PASS getAttributeNS http://www.w3.org/1999/xhtml,abc,ä 
+PASS createElementNS http://www.w3.org/1999/xhtml,abc,Ä 
+PASS setAttributeNS http://www.w3.org/1999/xhtml,abc,Ä 
+PASS getAttributeNS http://www.w3.org/1999/xhtml,abc,Ä 
+PASS createElementNS http://www.w3.org/1999/xhtml,Abc,abc 
+PASS setAttributeNS http://www.w3.org/1999/xhtml,Abc,abc 
+PASS getAttributeNS http://www.w3.org/1999/xhtml,Abc,abc 
+PASS createElementNS http://www.w3.org/1999/xhtml,Abc,Abc 
+PASS setAttributeNS http://www.w3.org/1999/xhtml,Abc,Abc 
+FAIL getAttributeNS http://www.w3.org/1999/xhtml,Abc,Abc assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://www.w3.org/1999/xhtml,Abc,ABC 
+PASS setAttributeNS http://www.w3.org/1999/xhtml,Abc,ABC 
+FAIL getAttributeNS http://www.w3.org/1999/xhtml,Abc,ABC assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://www.w3.org/1999/xhtml,Abc,ä 
+PASS setAttributeNS http://www.w3.org/1999/xhtml,Abc,ä 
+PASS getAttributeNS http://www.w3.org/1999/xhtml,Abc,ä 
+PASS createElementNS http://www.w3.org/1999/xhtml,Abc,Ä 
+PASS setAttributeNS http://www.w3.org/1999/xhtml,Abc,Ä 
+PASS getAttributeNS http://www.w3.org/1999/xhtml,Abc,Ä 
+PASS createElementNS http://www.w3.org/1999/xhtml,ABC,abc 
+PASS setAttributeNS http://www.w3.org/1999/xhtml,ABC,abc 
+PASS getAttributeNS http://www.w3.org/1999/xhtml,ABC,abc 
+PASS createElementNS http://www.w3.org/1999/xhtml,ABC,Abc 
+PASS setAttributeNS http://www.w3.org/1999/xhtml,ABC,Abc 
+FAIL getAttributeNS http://www.w3.org/1999/xhtml,ABC,Abc assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://www.w3.org/1999/xhtml,ABC,ABC 
+PASS setAttributeNS http://www.w3.org/1999/xhtml,ABC,ABC 
+FAIL getAttributeNS http://www.w3.org/1999/xhtml,ABC,ABC assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://www.w3.org/1999/xhtml,ABC,ä 
+PASS setAttributeNS http://www.w3.org/1999/xhtml,ABC,ä 
+PASS getAttributeNS http://www.w3.org/1999/xhtml,ABC,ä 
+PASS createElementNS http://www.w3.org/1999/xhtml,ABC,Ä 
+PASS setAttributeNS http://www.w3.org/1999/xhtml,ABC,Ä 
+PASS getAttributeNS http://www.w3.org/1999/xhtml,ABC,Ä 
+PASS createElementNS http://www.w3.org/1999/xhtml,ä,abc 
+PASS setAttributeNS http://www.w3.org/1999/xhtml,ä,abc 
+PASS getAttributeNS http://www.w3.org/1999/xhtml,ä,abc 
+PASS createElementNS http://www.w3.org/1999/xhtml,ä,Abc 
+PASS setAttributeNS http://www.w3.org/1999/xhtml,ä,Abc 
+FAIL getAttributeNS http://www.w3.org/1999/xhtml,ä,Abc assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://www.w3.org/1999/xhtml,ä,ABC 
+PASS setAttributeNS http://www.w3.org/1999/xhtml,ä,ABC 
+FAIL getAttributeNS http://www.w3.org/1999/xhtml,ä,ABC assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://www.w3.org/1999/xhtml,ä,ä 
+PASS setAttributeNS http://www.w3.org/1999/xhtml,ä,ä 
+PASS getAttributeNS http://www.w3.org/1999/xhtml,ä,ä 
+PASS createElementNS http://www.w3.org/1999/xhtml,ä,Ä 
+PASS setAttributeNS http://www.w3.org/1999/xhtml,ä,Ä 
+PASS getAttributeNS http://www.w3.org/1999/xhtml,ä,Ä 
+PASS createElementNS http://www.w3.org/1999/xhtml,Ä,abc 
+PASS setAttributeNS http://www.w3.org/1999/xhtml,Ä,abc 
+PASS getAttributeNS http://www.w3.org/1999/xhtml,Ä,abc 
+PASS createElementNS http://www.w3.org/1999/xhtml,Ä,Abc 
+PASS setAttributeNS http://www.w3.org/1999/xhtml,Ä,Abc 
+FAIL getAttributeNS http://www.w3.org/1999/xhtml,Ä,Abc assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://www.w3.org/1999/xhtml,Ä,ABC 
+PASS setAttributeNS http://www.w3.org/1999/xhtml,Ä,ABC 
+FAIL getAttributeNS http://www.w3.org/1999/xhtml,Ä,ABC assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://www.w3.org/1999/xhtml,Ä,ä 
+PASS setAttributeNS http://www.w3.org/1999/xhtml,Ä,ä 
+PASS getAttributeNS http://www.w3.org/1999/xhtml,Ä,ä 
+PASS createElementNS http://www.w3.org/1999/xhtml,Ä,Ä 
+PASS setAttributeNS http://www.w3.org/1999/xhtml,Ä,Ä 
+PASS getAttributeNS http://www.w3.org/1999/xhtml,Ä,Ä 
+PASS createElementNS http://www.w3.org/2000/svg,abc,abc 
+PASS setAttributeNS http://www.w3.org/2000/svg,abc,abc 
+PASS getAttributeNS http://www.w3.org/2000/svg,abc,abc 
+PASS createElementNS http://www.w3.org/2000/svg,abc,Abc 
+PASS setAttributeNS http://www.w3.org/2000/svg,abc,Abc 
+FAIL getAttributeNS http://www.w3.org/2000/svg,abc,Abc assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://www.w3.org/2000/svg,abc,ABC 
+PASS setAttributeNS http://www.w3.org/2000/svg,abc,ABC 
+FAIL getAttributeNS http://www.w3.org/2000/svg,abc,ABC assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://www.w3.org/2000/svg,abc,ä 
+PASS setAttributeNS http://www.w3.org/2000/svg,abc,ä 
+PASS getAttributeNS http://www.w3.org/2000/svg,abc,ä 
+PASS createElementNS http://www.w3.org/2000/svg,abc,Ä 
+PASS setAttributeNS http://www.w3.org/2000/svg,abc,Ä 
+PASS getAttributeNS http://www.w3.org/2000/svg,abc,Ä 
+PASS createElementNS http://www.w3.org/2000/svg,Abc,abc 
+PASS setAttributeNS http://www.w3.org/2000/svg,Abc,abc 
+PASS getAttributeNS http://www.w3.org/2000/svg,Abc,abc 
+PASS createElementNS http://www.w3.org/2000/svg,Abc,Abc 
+PASS setAttributeNS http://www.w3.org/2000/svg,Abc,Abc 
+FAIL getAttributeNS http://www.w3.org/2000/svg,Abc,Abc assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://www.w3.org/2000/svg,Abc,ABC 
+PASS setAttributeNS http://www.w3.org/2000/svg,Abc,ABC 
+FAIL getAttributeNS http://www.w3.org/2000/svg,Abc,ABC assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://www.w3.org/2000/svg,Abc,ä 
+PASS setAttributeNS http://www.w3.org/2000/svg,Abc,ä 
+PASS getAttributeNS http://www.w3.org/2000/svg,Abc,ä 
+PASS createElementNS http://www.w3.org/2000/svg,Abc,Ä 
+PASS setAttributeNS http://www.w3.org/2000/svg,Abc,Ä 
+PASS getAttributeNS http://www.w3.org/2000/svg,Abc,Ä 
+PASS createElementNS http://www.w3.org/2000/svg,ABC,abc 
+PASS setAttributeNS http://www.w3.org/2000/svg,ABC,abc 
+PASS getAttributeNS http://www.w3.org/2000/svg,ABC,abc 
+PASS createElementNS http://www.w3.org/2000/svg,ABC,Abc 
+PASS setAttributeNS http://www.w3.org/2000/svg,ABC,Abc 
+FAIL getAttributeNS http://www.w3.org/2000/svg,ABC,Abc assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://www.w3.org/2000/svg,ABC,ABC 
+PASS setAttributeNS http://www.w3.org/2000/svg,ABC,ABC 
+FAIL getAttributeNS http://www.w3.org/2000/svg,ABC,ABC assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://www.w3.org/2000/svg,ABC,ä 
+PASS setAttributeNS http://www.w3.org/2000/svg,ABC,ä 
+PASS getAttributeNS http://www.w3.org/2000/svg,ABC,ä 
+PASS createElementNS http://www.w3.org/2000/svg,ABC,Ä 
+PASS setAttributeNS http://www.w3.org/2000/svg,ABC,Ä 
+PASS getAttributeNS http://www.w3.org/2000/svg,ABC,Ä 
+PASS createElementNS http://www.w3.org/2000/svg,ä,abc 
+PASS setAttributeNS http://www.w3.org/2000/svg,ä,abc 
+PASS getAttributeNS http://www.w3.org/2000/svg,ä,abc 
+PASS createElementNS http://www.w3.org/2000/svg,ä,Abc 
+PASS setAttributeNS http://www.w3.org/2000/svg,ä,Abc 
+FAIL getAttributeNS http://www.w3.org/2000/svg,ä,Abc assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://www.w3.org/2000/svg,ä,ABC 
+PASS setAttributeNS http://www.w3.org/2000/svg,ä,ABC 
+FAIL getAttributeNS http://www.w3.org/2000/svg,ä,ABC assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://www.w3.org/2000/svg,ä,ä 
+PASS setAttributeNS http://www.w3.org/2000/svg,ä,ä 
+PASS getAttributeNS http://www.w3.org/2000/svg,ä,ä 
+PASS createElementNS http://www.w3.org/2000/svg,ä,Ä 
+PASS setAttributeNS http://www.w3.org/2000/svg,ä,Ä 
+PASS getAttributeNS http://www.w3.org/2000/svg,ä,Ä 
+PASS createElementNS http://www.w3.org/2000/svg,Ä,abc 
+PASS setAttributeNS http://www.w3.org/2000/svg,Ä,abc 
+PASS getAttributeNS http://www.w3.org/2000/svg,Ä,abc 
+PASS createElementNS http://www.w3.org/2000/svg,Ä,Abc 
+PASS setAttributeNS http://www.w3.org/2000/svg,Ä,Abc 
+FAIL getAttributeNS http://www.w3.org/2000/svg,Ä,Abc assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://www.w3.org/2000/svg,Ä,ABC 
+PASS setAttributeNS http://www.w3.org/2000/svg,Ä,ABC 
+FAIL getAttributeNS http://www.w3.org/2000/svg,Ä,ABC assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://www.w3.org/2000/svg,Ä,ä 
+PASS setAttributeNS http://www.w3.org/2000/svg,Ä,ä 
+PASS getAttributeNS http://www.w3.org/2000/svg,Ä,ä 
+PASS createElementNS http://www.w3.org/2000/svg,Ä,Ä 
+PASS setAttributeNS http://www.w3.org/2000/svg,Ä,Ä 
+PASS getAttributeNS http://www.w3.org/2000/svg,Ä,Ä 
+PASS createElementNS http://FOO,abc,abc 
+PASS setAttributeNS http://FOO,abc,abc 
+PASS getAttributeNS http://FOO,abc,abc 
+PASS createElementNS http://FOO,abc,Abc 
+PASS setAttributeNS http://FOO,abc,Abc 
+FAIL getAttributeNS http://FOO,abc,Abc assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://FOO,abc,ABC 
+PASS setAttributeNS http://FOO,abc,ABC 
+FAIL getAttributeNS http://FOO,abc,ABC assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://FOO,abc,ä 
+PASS setAttributeNS http://FOO,abc,ä 
+PASS getAttributeNS http://FOO,abc,ä 
+PASS createElementNS http://FOO,abc,Ä 
+PASS setAttributeNS http://FOO,abc,Ä 
+PASS getAttributeNS http://FOO,abc,Ä 
+PASS createElementNS http://FOO,Abc,abc 
+PASS setAttributeNS http://FOO,Abc,abc 
+PASS getAttributeNS http://FOO,Abc,abc 
+PASS createElementNS http://FOO,Abc,Abc 
+PASS setAttributeNS http://FOO,Abc,Abc 
+FAIL getAttributeNS http://FOO,Abc,Abc assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://FOO,Abc,ABC 
+PASS setAttributeNS http://FOO,Abc,ABC 
+FAIL getAttributeNS http://FOO,Abc,ABC assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://FOO,Abc,ä 
+PASS setAttributeNS http://FOO,Abc,ä 
+PASS getAttributeNS http://FOO,Abc,ä 
+PASS createElementNS http://FOO,Abc,Ä 
+PASS setAttributeNS http://FOO,Abc,Ä 
+PASS getAttributeNS http://FOO,Abc,Ä 
+PASS createElementNS http://FOO,ABC,abc 
+PASS setAttributeNS http://FOO,ABC,abc 
+PASS getAttributeNS http://FOO,ABC,abc 
+PASS createElementNS http://FOO,ABC,Abc 
+PASS setAttributeNS http://FOO,ABC,Abc 
+FAIL getAttributeNS http://FOO,ABC,Abc assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://FOO,ABC,ABC 
+PASS setAttributeNS http://FOO,ABC,ABC 
+FAIL getAttributeNS http://FOO,ABC,ABC assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://FOO,ABC,ä 
+PASS setAttributeNS http://FOO,ABC,ä 
+PASS getAttributeNS http://FOO,ABC,ä 
+PASS createElementNS http://FOO,ABC,Ä 
+PASS setAttributeNS http://FOO,ABC,Ä 
+PASS getAttributeNS http://FOO,ABC,Ä 
+PASS createElementNS http://FOO,ä,abc 
+PASS setAttributeNS http://FOO,ä,abc 
+PASS getAttributeNS http://FOO,ä,abc 
+PASS createElementNS http://FOO,ä,Abc 
+PASS setAttributeNS http://FOO,ä,Abc 
+FAIL getAttributeNS http://FOO,ä,Abc assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://FOO,ä,ABC 
+PASS setAttributeNS http://FOO,ä,ABC 
+FAIL getAttributeNS http://FOO,ä,ABC assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://FOO,ä,ä 
+PASS setAttributeNS http://FOO,ä,ä 
+PASS getAttributeNS http://FOO,ä,ä 
+PASS createElementNS http://FOO,ä,Ä 
+PASS setAttributeNS http://FOO,ä,Ä 
+PASS getAttributeNS http://FOO,ä,Ä 
+PASS createElementNS http://FOO,Ä,abc 
+PASS setAttributeNS http://FOO,Ä,abc 
+PASS getAttributeNS http://FOO,Ä,abc 
+PASS createElementNS http://FOO,Ä,Abc 
+PASS setAttributeNS http://FOO,Ä,Abc 
+FAIL getAttributeNS http://FOO,Ä,Abc assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://FOO,Ä,ABC 
+PASS setAttributeNS http://FOO,Ä,ABC 
+FAIL getAttributeNS http://FOO,Ä,ABC assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS http://FOO,Ä,ä 
+PASS setAttributeNS http://FOO,Ä,ä 
+PASS getAttributeNS http://FOO,Ä,ä 
+PASS createElementNS http://FOO,Ä,Ä 
+PASS setAttributeNS http://FOO,Ä,Ä 
+PASS getAttributeNS http://FOO,Ä,Ä 
+PASS getElementsByTagNameNS ,abc 
+PASS getElementsByTagNameNS ,Abc 
+PASS getElementsByTagNameNS ,ABC 
+PASS getElementsByTagNameNS ,ä 
+PASS getElementsByTagNameNS ,Ä 
+PASS getElementsByTagNameNS http://www.w3.org/1999/xhtml,abc 
+PASS getElementsByTagNameNS http://www.w3.org/1999/xhtml,Abc 
+PASS getElementsByTagNameNS http://www.w3.org/1999/xhtml,ABC 
+PASS getElementsByTagNameNS http://www.w3.org/1999/xhtml,ä 
+PASS getElementsByTagNameNS http://www.w3.org/1999/xhtml,Ä 
+PASS getElementsByTagNameNS http://www.w3.org/2000/svg,abc 
+PASS getElementsByTagNameNS http://www.w3.org/2000/svg,Abc 
+PASS getElementsByTagNameNS http://www.w3.org/2000/svg,ABC 
+PASS getElementsByTagNameNS http://www.w3.org/2000/svg,ä 
+PASS getElementsByTagNameNS http://www.w3.org/2000/svg,Ä 
+PASS getElementsByTagNameNS http://FOO,abc 
+PASS getElementsByTagNameNS http://FOO,Abc 
+PASS getElementsByTagNameNS http://FOO,ABC 
+PASS getElementsByTagNameNS http://FOO,ä 
+PASS getElementsByTagNameNS http://FOO,Ä 
+PASS createElementNS abc 
+PASS setAttributeNS abc 
+PASS getAttributeNS abc 
+PASS createElementNS Abc 
+PASS setAttributeNS Abc 
+FAIL getAttributeNS Abc assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS ABC 
+PASS setAttributeNS ABC 
+FAIL getAttributeNS ABC assert_equals: expected (object) null but got (string) &quot;&quot;
+PASS createElementNS ä 
+PASS setAttributeNS ä 
+PASS getAttributeNS ä 
+PASS createElementNS Ä 
+PASS setAttributeNS Ä 
+PASS getAttributeNS Ä 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodescasehtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodescasehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/case.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/case.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/case.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/case.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Tests for case-sensitivity in APIs&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-document-createelement&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-document-createelementns&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-document-getelementsbytagname&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-document-getelementsbytagnamens&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-element-setattribute&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-element-setattributens&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-element-hasattribute&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-element-hasattributens&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-element-getelementsbytagname&quot;&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-element-getelementsbytagnamens&quot;&gt;
+&lt;script&gt;var is_html = true;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;case.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodescasejsfromrev189470trunkLayoutTestshttptestsw3cdomnodescasejs"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/case.js (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/case.js) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/case.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/case.js        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,179 @@
</span><ins>+/*
+ * document.createElement(NS)
+ *
+ * document.getElementsByTagName(NS)
+ *
+ * Element.setAttribute(NS)
+ *
+ * Element.getAttribute(NS)
+ * Element.hasAttribute(NS)
+ * Element.getElementsByTagName(NS)
+ */
+
+var tests = [];
+setup(function() {
+        var name_inputs = [&quot;abc&quot;, &quot;Abc&quot;, &quot;ABC&quot;, &quot;ä&quot;, &quot;Ä&quot;];
+        var namespaces = [&quot;http://www.w3.org/1999/xhtml&quot;, &quot;http://www.w3.org/2000/svg&quot;, &quot;http://FOO&quot;];
+        name_inputs.forEach(function(x) {
+                              tests.push([&quot;createElement &quot; + x, test_create_element, [x]]);
+                              tests.push([&quot;setAttribute &quot; +x, test_set_attribute, [x]]);
+                              tests.push([&quot;getAttribute &quot; +x, test_get_attribute, [x]]);
+                              tests.push([&quot;getElementsByTagName a:&quot; +x, test_get_elements_tag_name,
+                                          [outer_product(namespaces, [&quot;a&quot;], name_inputs),
+                                           x]]);
+                              tests.push([&quot;getElementsByTagName &quot; +x, test_get_elements_tag_name,
+                                          [outer_product(namespaces, [null], name_inputs),
+                                           x]]);
+                            });
+        outer_product(namespaces, name_inputs, name_inputs).forEach(function(x) {
+                                                                      tests.push([&quot;createElementNS &quot; + x, test_create_element_ns, x]);
+                                                                      tests.push([&quot;setAttributeNS &quot; + x, test_set_attribute_ns, x]);
+                                                                      tests.push([&quot;getAttributeNS &quot; + x, test_get_attribute_ns, x]);
+                                                                    });
+        outer_product([null].concat(namespaces), name_inputs).forEach(function(x) {
+                                                                        tests.push([&quot;getElementsByTagNameNS &quot; + x, test_get_elements_tag_name_ns,
+                                                                        outer_product(namespaces, name_inputs), x]);
+                                                                      });
+        name_inputs.forEach(function(x) {
+                              tests.push([&quot;createElementNS &quot; + x, test_create_element_ns, [null, null, x]]);
+                              tests.push([&quot;setAttributeNS &quot; + x, test_set_attribute_ns, [null, null, x]]);
+                              tests.push([&quot;getAttributeNS &quot; + x, test_get_attribute_ns, [null, null, x]]);
+                            });
+
+      });
+function outer_product() {
+  var rv = [];
+  function compute_outer_product() {
+    var args = Array.prototype.slice.call(arguments);
+    var index = args[0];
+    if (index &lt; args.length) {
+      args[index].forEach(function(x) {
+                           compute_outer_product.apply(this, [index+1].concat(args.slice(1, index), x, args.slice(index+1)));
+                          });
+    } else {
+      rv.push(args.slice(1));
+    }
+  }
+  compute_outer_product.apply(this, [1].concat(Array.prototype.slice.call(arguments)));
+  return rv;
+}
+
+function expected_case(input) {
+  //is_html gets set by a global on the page loading the tests
+  if (is_html) {
+    return ascii_lowercase(input);
+  } else {
+    return input;
+  }
+}
+
+function ascii_lowercase(input) {
+  return input.replace(/[A-Z]/g, function(x) {
+                         return x.toLowerCase();
+                       });
+}
+
+function test_create_element(name) {
+  var node = document.createElement(name);
+  assert_equals(node.localName, expected_case(name));
+}
+
+function test_create_element_ns(namespace, prefix, local_name) {
+  var qualified_name = prefix ? prefix + &quot;:&quot; + local_name : local_name;
+  var node = document.createElementNS(namespace, qualified_name);
+  assert_equals(node.prefix, prefix, &quot;prefix&quot;);
+  assert_equals(node.localName, local_name, &quot;localName&quot;);
+}
+
+function test_set_attribute(name) {
+  var node = document.createElement(&quot;div&quot;);
+  node.setAttribute(name, &quot;test&quot;);
+  assert_equals(node.attributes[0].localName, expected_case(name));
+}
+
+function test_set_attribute_ns(namespace, prefix, local_name) {
+  var qualified_name = prefix ? prefix + &quot;:&quot; + local_name : local_name;
+  var node = document.createElement(&quot;div&quot;);
+  node.setAttributeNS(namespace, qualified_name, &quot;test&quot;);
+  var attr = node.attributes[0];
+  assert_equals(attr.prefix, prefix, &quot;prefix&quot;);
+  assert_equals(attr.localName, local_name, &quot;localName&quot;);
+}
+
+function test_get_attribute(name) {
+  var node = document.createElement(&quot;div&quot;);
+  node.setAttribute(name, &quot;test&quot;);
+  var expected_name = expected_case(name);
+  assert_equals(node.getAttribute(expected_name), &quot;test&quot;);
+  if (expected_name != name) {
+    assert_equals(node.getAttribute(expected_name), &quot;test&quot;);
+  } else if (name !== ascii_lowercase(name)) {
+    assert_equals(node.getAttribute(ascii_lowercase(name)), null);
+  }
+}
+
+function test_get_attribute_ns(namespace, prefix, local_name) {
+  var qualified_name = prefix ? prefix + &quot;:&quot; + local_name : local_name;
+  var node = document.createElement(&quot;div&quot;);
+  node.setAttributeNS(namespace, qualified_name, &quot;test&quot;);
+  var expected_name = local_name;
+  assert_equals(node.getAttributeNS(namespace, expected_name), &quot;test&quot;);
+  if (local_name !== ascii_lowercase(local_name)) {
+    assert_equals(node.getAttributeNS(namespace, ascii_lowercase(local_name)), null);
+  }
+}
+
+function test_get_elements_tag_name(elements_to_create, search_string) {
+  var container = document.createElement(&quot;div&quot;);
+  elements_to_create.forEach(function(x) {
+                               var qualified_name = x[1] ? x[1] + &quot;:&quot; + x[2] : x[2];
+                               var element = document.createElementNS(x[0], qualified_name);
+                               container.appendChild(element);
+                             });
+  var expected = Array.prototype.filter.call(container.childNodes,
+                                            function(node) {
+                                              if (is_html &amp;&amp; node.namespaceURI === &quot;http://www.w3.org/1999/xhtml&quot;) {
+                                                return node.localName === expected_case(search_string);
+                                              } else {
+                                                return node.localName === search_string;
+                                              }
+                                            });
+  document.documentElement.appendChild(container);
+  try {
+    assert_array_equals(document.getElementsByTagName(search_string), expected);
+  } finally {
+    document.documentElement.removeChild(container);
+  }
+}
+
+function test_get_elements_tag_name_ns(elements_to_create, search_input) {
+  var search_uri = search_input[0];
+  var search_name = search_input[1];
+  var container = document.createElement(&quot;div&quot;);
+  elements_to_create.forEach(function(x) {
+                               var qualified_name = x[1] ? x[1] + &quot;:&quot; + x[2] : x[2];
+                               var element = document.createElementNS(x[0], qualified_name);
+                               container.appendChild(element);
+                             });
+  var expected = Array.prototype.filter.call(container.childNodes,
+                                            function(node) {
+                                              return node.namespaceURI === search_uri;
+                                              return node.localName === search_name;
+                                            });
+  document.documentElement.appendChild(container);
+  try {
+    assert_array_equals(document.getElementsByTagNameNS(search_uri, search_name), expected);
+  } catch(e) {
+    throw e;
+  } finally {
+    document.documentElement.removeChild(container);
+  }
+}
+
+function test_func() {
+  var func = arguments[0];
+  var rest = arguments[1];
+  func.apply(this, rest);
+}
+
+generate_tests(test_func, tests);
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodescreatorsjsfromrev189470trunkLayoutTestshttptestsw3cdomnodescreatorsjs"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/creators.js (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/creators.js) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/creators.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/creators.js        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+var creators = {
+  &quot;element&quot;: &quot;createElement&quot;,
+  &quot;text&quot;: &quot;createTextNode&quot;,
+  &quot;comment&quot;: &quot;createComment&quot;
+};
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesencodingpyfromrev189470trunkLayoutTestshttptestsw3cdomnodesencodingpy"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/encoding.py (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/encoding.py) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/encoding.py                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/encoding.py        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+from cgi import escape
+
+def main(request, response):
+    label = request.GET.first('label')
+    return &quot;&quot;&quot;&lt;!doctype html&gt;&lt;meta charset=&quot;%s&quot;&gt;&quot;&quot;&quot; % escape(label)
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName01expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName01expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-01-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-01-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-01-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-01-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS document.getElementsByClassName(): simple 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName01htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName01htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-01.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-01.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-01.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-01.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html class=&quot;a&quot;&gt;
+ &lt;head&gt;
+  &lt;title&gt;document.getElementsByClassName(): simple&lt;/title&gt;
+  &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+  &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body class=&quot;a&quot;&gt;
+  &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+  &lt;script&gt; test(function() {assert_array_equals(document.getElementsByClassName(&quot;\ta\n&quot;),
+                                                [document.documentElement, document.body])}) &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName02expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName02expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-02-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-02-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-02-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-02-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS document.getElementsByClassName(): also simple 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName02htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName02htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-02.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-02.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-02.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-02.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html class=&quot;a
+b&quot;&gt;
+ &lt;head&gt;
+  &lt;title&gt;document.getElementsByClassName(): also simple&lt;/title&gt;
+  &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+  &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body class=&quot;a
+&quot;&gt;
+  &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+  &lt;script&gt; test(function() {assert_array_equals(document.getElementsByClassName(&quot;a\n&quot;), [document.documentElement, document.body])}) &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName03expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName03expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-03-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-03-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-03-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-03-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS document.getElementsByClassName(): changing classes 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName03htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName03htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-03.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-03.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-03.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-03.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html class=&quot;a&quot;&gt;
+ &lt;head&gt;
+  &lt;title&gt;document.getElementsByClassName(): changing classes&lt;/title&gt;
+  &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+  &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body class=&quot;a&quot;&gt;
+  &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+  &lt;script&gt;
+   test(function() {
+          var collection = document.getElementsByClassName(&quot;a&quot;)
+          document.body.className = &quot;b&quot;
+          assert_array_equals(collection, [document.documentElement])
+        })
+  &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName04expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName04expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-04-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-04-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-04-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-04-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS document.getElementsByClassName(): changing classes 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName04htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName04htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-04.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-04.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-04.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-04.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html class=&quot;a&quot;&gt;
+ &lt;head&gt;
+  &lt;title&gt;document.getElementsByClassName(): changing classes&lt;/title&gt;
+  &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+  &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body class=&quot;a&quot;&gt;
+  &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+  &lt;script&gt;
+   test(function() {
+          var collection = document.getElementsByClassName(&quot;a&quot;);
+          document.body.className += &quot;\tb&quot;;
+          assert_array_equals(collection, [document.documentElement, document.body]);
+        })
+  &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName05expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName05expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-05-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-05-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-05-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-05-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS document.getElementsByClassName(): changing classes 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName05htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName05htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-05.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-05.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-05.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-05.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html class=&quot;a&quot;&gt;
+ &lt;head&gt;
+  &lt;title&gt;document.getElementsByClassName(): changing classes&lt;/title&gt;
+  &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+  &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body class=&quot;a&quot;&gt;
+  &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+  &lt;script&gt;
+   test(function() {
+          var collection = document.getElementsByClassName(&quot;a&quot;);
+          document.body.removeAttribute(&quot;class&quot;);
+          assert_array_equals(collection, [document.documentElement]);
+        })
+  &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName06expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName06expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-06-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-06-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-06-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-06-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS document.getElementsByClassName(): adding element with class 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName06htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName06htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-06.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-06.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-06.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-06.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+ &lt;head&gt;
+  &lt;title&gt;document.getElementsByClassName(): adding element with class&lt;/title&gt;
+  &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+  &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body class=&quot;a&quot;&gt;
+  &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+  &lt;script&gt;
+   test(function() {
+          var collection = document.getElementsByClassName(&quot;a&quot;);
+          var ele = document.createElement(&quot;foo&quot;);
+          ele.setAttribute(&quot;class&quot;, &quot;a&quot;);
+          document.body.appendChild(ele);
+          assert_array_equals(collection, [document.body, ele]);
+        })
+  &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName07expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName07expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-07-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-07-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-07-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-07-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS document.getElementsByClassName(): multiple classes 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName07htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName07htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-07.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-07.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-07.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-07.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+ &lt;head&gt;
+  &lt;title&gt;document.getElementsByClassName(): multiple classes&lt;/title&gt;
+  &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+  &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body class=&quot;a b&quot;&gt;
+  &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+  &lt;script&gt; test(function() {
+                  assert_array_equals(document.getElementsByClassName(&quot;b\t\f\n\na\rb&quot;), [document.body]);
+               })
+  &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName08expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName08expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-08-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-08-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-08-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-08-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS document.getElementsByClassName(): multiple classes 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName08htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName08htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-08.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-08.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-08.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-08.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+ &lt;head&gt;
+  &lt;title&gt;document.getElementsByClassName(): multiple classes&lt;/title&gt;
+  &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+  &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body class=&quot;a&quot;&gt;
+  &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+  &lt;script&gt; test(function() {
+                  document.getElementsByClassName(&quot;a\fa&quot;), [document.body]
+                })
+  &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName09expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName09expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-09-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-09-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-09-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-09-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS document.getElementsByClassName(): case sensitive 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName09htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName09htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-09.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-09.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-09.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-09.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html class=&quot;a A&quot;&gt;
+ &lt;head&gt;
+  &lt;title&gt;document.getElementsByClassName(): case sensitive&lt;/title&gt;
+  &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+  &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body class=&quot;a a&quot;&gt;
+  &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+  &lt;script&gt;test(function() {
+                 assert_array_equals(document.getElementsByClassName(&quot;A a&quot;), [document.documentElement])
+               })
+  &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName10expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-10-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-10-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-10-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName10xmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName10xhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-10.xml (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-10.xhtml) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-10.xml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-10.xml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xmlns:g=&quot;http://www.w3.org/2000/svg&quot;&gt;
+ &lt;head&gt;
+  &lt;title&gt;document.getElementsByClassName(): compound&lt;/title&gt;
+  &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+  &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+  &lt;div id=&quot;log&quot;/&gt;
+  &lt;x class=&quot;a&quot;/&gt;
+  &lt;g:x class=&quot;a&quot;/&gt;
+  &lt;script&gt;test(function() {
+                 assert_array_equals(document.getElementsByClassName(&quot;a&quot;),
+                                     document.getElementsByTagName(&quot;x&quot;));
+               })
+  &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName11expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-11-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-11-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-11-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName11xmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName11xhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-11.xml (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-11.xhtml) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-11.xml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-11.xml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; xmlns:g=&quot;http://www.w3.org/2000/svg&quot; xmlns:h=&quot;http://www.w3.org/1999/xhtml&quot; xmlns:t=&quot;http://tc.labs.opera.com/#test&quot;&gt;
+ &lt;head&gt;
+  &lt;title&gt;document.getElementsByClassName(): &quot;tricky&quot; compound&lt;/title&gt;
+  &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+  &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+  &lt;div id=&quot;log&quot; /&gt;
+  &lt;x class=&quot;a&quot;/&gt;
+  &lt;g:x class=&quot;a&quot;/&gt;
+  &lt;x t:class=&quot;a&quot; h:class=&quot;a&quot; g:class=&quot;a&quot;/&gt;
+  &lt;g:x t:class=&quot;a&quot; h:class=&quot;a&quot; g:class=&quot;a&quot;/&gt;
+  &lt;t:x class=&quot;a&quot; t:class=&quot;a&quot; h:class=&quot;a&quot; g:class=&quot;a&quot;/&gt;
+  &lt;script&gt;
+   test(function() {
+          var collection = document.getElementsByClassName(&quot;a&quot;);
+          var test = document.getElementsByTagName(&quot;x&quot;);
+          assert_array_equals(collection, [test[0], test[1]]);
+         })
+  &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName12expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName12expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-12-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-12-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-12-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-12-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS element.getElementsByClassName(): simple 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName12htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName12htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-12.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-12.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-12.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-12.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html class=&quot;a&quot;&gt;
+ &lt;head&gt;
+  &lt;title&gt;element.getElementsByClassName(): simple&lt;/title&gt;
+  &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+  &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body class=&quot;a&quot;&gt;
+  &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+  &lt;script&gt;test(function() {
+                 assert_array_equals(document.body.getElementsByClassName(&quot;a&quot;), [])
+               })
+  &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName13expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName13expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-13-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-13-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-13-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-13-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS element.getElementsByClassName(): adding an element 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName13htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName13htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-13.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-13.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-13.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-13.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,19 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html class=&quot;a&quot;&gt;
+ &lt;head&gt;
+  &lt;title&gt;element.getElementsByClassName(): adding an element&lt;/title&gt;
+  &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+  &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body class=&quot;a&quot;&gt;
+  &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+  &lt;script&gt;test(function() {
+                 var collection = document.body.getElementsByClassName(&quot;a&quot;);
+                 var ele = document.createElement(&quot;x-y-z&quot;);
+                 ele.className = &quot;a&quot;;
+                 document.body.appendChild(ele);
+                 assert_array_equals(collection, [ele]);
+               })
+  &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName14expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName14expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-14-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-14-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-14-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-14-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS document.getElementsByClassName(): case-insensitive (quirks mode) 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName14htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName14htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-14.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-14.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-14.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-14.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+&lt;!-- quirks mode --&gt;
+&lt;html class=&quot;a A&quot;&gt;
+ &lt;head&gt;
+  &lt;title&gt;document.getElementsByClassName(): case-insensitive (quirks mode)&lt;/title&gt;
+  &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+  &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body class=&quot;a a&quot;&gt;
+  &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+  &lt;script&gt;test(function() {
+             assert_array_equals(document.getElementsByClassName(&quot;A a&quot;),
+                                 [document.documentElement, document.body]);
+          })
+  &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName15expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName15expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-15-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-15-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-15-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-15-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS document.getElementsByClassName(array): &quot;a\n&quot; 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName15htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName15htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-15.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-15.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-15.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-15.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,18 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html class=&quot;a
+b&quot;&gt;
+ &lt;head&gt;
+  &lt;title&gt;document.getElementsByClassName(array): &quot;a\n&quot;&lt;/title&gt;
+  &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+  &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body class=&quot;a
+&quot;&gt;
+  &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+  &lt;script&gt;test(function () {
+                 assert_array_equals(document.getElementsByClassName([&quot;a\n&quot;]),
+                                    [document.documentElement, document.body]);
+          })
+ &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName16expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName16expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-16-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-16-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-16-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-16-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS document.getElementsByClassName(array): &quot;b&quot;,&quot;a&quot; 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName16htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName16htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-16.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-16.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-16.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-16.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html class=&quot;a
+b&quot;&gt;
+ &lt;head&gt;
+  &lt;title&gt;document.getElementsByClassName(array): &quot;b&quot;,&quot;a&quot;&lt;/title&gt;
+  &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+  &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body class=&quot;b,a&quot;&gt;
+  &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+  &lt;script&gt;test(function() {
+                 assert_array_equals(document.getElementsByClassName([&quot;b&quot;, &quot;a&quot;]), [document.body]);
+               })
+  &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName17expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName17expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-17-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-17-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-17-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-17-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS document.getElementsByClassName(array): &quot;b a&quot; 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName17htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName17htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-17.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-17.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-17.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-17.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html&gt;
+ &lt;head&gt;
+  &lt;title&gt;document.getElementsByClassName(array): &quot;b a&quot;&lt;/title&gt;
+  &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+  &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body class=&quot;a b&quot;&gt;
+  &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+  &lt;script&gt;test(function() {
+                 assert_array_equals(document.getElementsByClassName([&quot;b a&quot;]), [document.body]);
+          })
+ &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName18expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName18expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-18-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-18-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-18-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-18-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS element.getElementsByClassName(array): &quot;a&quot;, &quot;b&quot; 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName18htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName18htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-18.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-18.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-18.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-18.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;html class=&quot;a,b&quot;&gt;
+ &lt;head&gt;
+  &lt;title&gt;element.getElementsByClassName(array): &quot;a&quot;, &quot;b&quot;&lt;/title&gt;
+  &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+  &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body class=&quot;a,b x&quot;&gt;
+  &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+  &lt;p id=&quot;r&quot; class=&quot;a,bx&quot;&gt;&lt;/p&gt;
+  &lt;script class=&quot;xa,b&quot;&gt;test(function() {
+                             assert_array_equals(document.documentElement.getElementsByClassName([&quot;\fa&quot;,&quot;b\n&quot;]),
+                                                 [document.body])
+                            })
+  &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName19expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName19expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-19-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-19-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-19-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-19-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+test link #foo
+text
+text caption
+TEXT head
+td text1
+td text
+td te xt
+TEXT foot
+xt te
+
+PASS get elements in document 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName19htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName19htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-19.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-19.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-19.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-19.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,54 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;&lt;head&gt;
+    &lt;title&gt;getElementsByClassName&lt;/title&gt;
+    &lt;meta content=&quot;get elements in document&quot; name=&quot;description&quot;&gt;
+    &lt;link href=&quot;https://dom.spec.whatwg.org/#dom-document-getelementsbyclassname&quot; rel=&quot;help&quot;&gt;
+    &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+    &lt;body&gt;
+       &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+        &lt;div&gt;
+            &lt;div&gt;
+                &lt;a class=&quot;text link&quot; href=&quot;#foo&quot;&gt;test link #foo&lt;/a&gt;
+            &lt;/div&gt;
+            &lt;b class=&quot;text&quot;&gt;text&lt;/b&gt;
+        &lt;/div&gt;
+        &lt;table&gt;
+            &lt;caption class=&quot;text caption&quot;&gt;text caption&lt;/caption&gt;
+            &lt;thead&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;TEXT head&quot;&gt;TEXT head&lt;/td&gt;
+                &lt;/tr&gt;
+            &lt;/thead&gt;
+            &lt;tbody&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;td text1&quot;&gt;td text1&lt;/td&gt;
+                &lt;/tr&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;td text&quot;&gt;td text&lt;/td&gt;
+                &lt;/tr&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;td te xt&quot;&gt;td te xt&lt;/td&gt;
+                &lt;/tr&gt;
+            &lt;/tbody&gt;
+            &lt;tfoot&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;TEXT foot&quot;&gt;TEXT foot&lt;/td&gt;
+                &lt;/tr&gt;
+            &lt;/tfoot&gt;
+        &lt;/table&gt;
+        &lt;div class=&quot;xt te&quot;&gt;xt te&lt;/div&gt;
+
+        &lt;script type=&quot;text/javascript&quot;&gt;
+    test(function ()
+          {
+           var collection = document.getElementsByClassName(&quot;text&quot;);
+           assert_equals(collection.length, 4);
+           assert_equals(collection[0].parentNode.nodeName, &quot;DIV&quot;);
+           assert_equals(collection[1].parentNode.nodeName, &quot;DIV&quot;);
+           assert_equals(collection[2].parentNode.nodeName, &quot;TABLE&quot;);
+           assert_equals(collection[3].parentNode.nodeName, &quot;TR&quot;);
+          }, &quot;get elements in document&quot;);
+        &lt;/script&gt;
+&lt;/body&gt;&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName20expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName20expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-20-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-20-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-20-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-20-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+test link #foo
+text
+text caption
+TEXT head
+td text1
+text newDiv
+td text
+td te xt
+TEXT foot
+xt te
+
+PASS get elements in document then add element to collection 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName20htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName20htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-20.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-20.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-20.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-20.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,61 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;&lt;head&gt;
+        &lt;title&gt;getElementsByClassName&lt;/title&gt;
+        &lt;meta content=&quot;get elements in document then add element to collection&quot; name=&quot;description&quot;&gt;
+    &lt;link href=&quot;https://dom.spec.whatwg.org/#dom-document-getelementsbyclassname&quot; rel=&quot;help&quot;&gt;
+    &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+    &lt;body&gt;
+        &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+        &lt;div&gt;
+            &lt;div&gt;
+                &lt;a class=&quot;text link&quot; href=&quot;#foo&quot;&gt;test link #foo&lt;/a&gt;
+            &lt;/div&gt;
+            &lt;b class=&quot;text&quot;&gt;text&lt;/b&gt;
+        &lt;/div&gt;
+        &lt;table&gt;
+            &lt;caption class=&quot;text caption&quot;&gt;text caption&lt;/caption&gt;
+            &lt;thead&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;TEXT head&quot;&gt;TEXT head&lt;/td&gt;
+                &lt;/tr&gt;
+            &lt;/thead&gt;
+            &lt;tbody&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;td text1&quot;&gt;td text1&lt;/td&gt;
+                &lt;/tr&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;td text&quot;&gt;td text&lt;/td&gt;
+                &lt;/tr&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;td te xt&quot;&gt;td te xt&lt;/td&gt;
+                &lt;/tr&gt;
+            &lt;/tbody&gt;
+            &lt;tfoot&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;TEXT foot&quot;&gt;TEXT foot&lt;/td&gt;
+                &lt;/tr&gt;
+            &lt;/tfoot&gt;
+        &lt;/table&gt;
+        &lt;div class=&quot;xt te&quot;&gt;xt te&lt;/div&gt;
+
+        &lt;script type=&quot;text/javascript&quot;&gt;
+            test(function()
+            {
+                var collection = document.getElementsByClassName(&quot;text&quot;);
+                assert_equals(collection.length, 4);
+                var newDiv = document.createElement(&quot;div&quot;);
+                newDiv.setAttribute(&quot;class&quot;, &quot;text&quot;);
+                newDiv.innerHTML = &quot;text newDiv&quot;;
+                document.getElementsByTagName(&quot;table&quot;)[0].tBodies[0].rows[0].cells[0].appendChild(newDiv);
+
+                assert_equals(collection.length, 5);
+                assert_equals(collection[0].parentNode.nodeName, &quot;DIV&quot;);
+                assert_equals(collection[1].parentNode.nodeName, &quot;DIV&quot;);
+                assert_equals(collection[2].parentNode.nodeName, &quot;TABLE&quot;);
+                assert_equals(collection[3].parentNode.nodeName, &quot;TD&quot;);
+                assert_equals(collection[4].parentNode.nodeName, &quot;TR&quot;);
+            }, &quot;get elements in document then add element to collection&quot;);
+        &lt;/script&gt;
+&lt;/body&gt;&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName21expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName21expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-21-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-21-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-21-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-21-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+test link #foo
+text
+text caption
+TEXT head
+td text
+td te xt
+TEXT foot
+xt te
+
+PASS delete element from collection 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName21htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName21htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-21.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-21.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-21.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-21.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,52 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;&lt;head&gt;
+        &lt;title&gt;getElementsByClassName&lt;/title&gt;
+        &lt;meta content=&quot;delete element from collection&quot; name=&quot;description&quot;&gt;
+    &lt;link href=&quot;https://dom.spec.whatwg.org/#dom-document-getelementsbyclassname&quot; rel=&quot;help&quot;&gt;
+    &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+    &lt;body&gt;
+        &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+        &lt;div&gt;
+            &lt;div&gt;
+                &lt;a class=&quot;text link&quot; href=&quot;#foo&quot;&gt;test link #foo&lt;/a&gt;
+            &lt;/div&gt;
+            &lt;b class=&quot;text&quot;&gt;text&lt;/b&gt;
+        &lt;/div&gt;
+        &lt;table&gt;
+            &lt;caption class=&quot;text caption&quot;&gt;text caption&lt;/caption&gt;
+            &lt;thead&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;TEXT head&quot;&gt;TEXT head&lt;/td&gt;
+                &lt;/tr&gt;
+            &lt;/thead&gt;
+            &lt;tbody&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;td text1&quot;&gt;td text1&lt;/td&gt;
+                &lt;/tr&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;td text&quot;&gt;td text&lt;/td&gt;
+                &lt;/tr&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;td te xt&quot;&gt;td te xt&lt;/td&gt;
+                &lt;/tr&gt;
+            &lt;/tbody&gt;
+            &lt;tfoot&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;TEXT foot&quot;&gt;TEXT foot&lt;/td&gt;
+                &lt;/tr&gt;
+            &lt;/tfoot&gt;
+        &lt;/table&gt;
+        &lt;div class=&quot;xt te&quot;&gt;xt te&lt;/div&gt;
+
+        &lt;script type=&quot;text/javascript&quot;&gt;
+            test(function()
+            {
+                var collection = document.getElementsByClassName(&quot;text1&quot;);
+                assert_equals(collection.length, 1)
+                document.getElementsByTagName(&quot;table&quot;)[0].deleteRow(1);
+                assert_equals(collection.length, 0);
+            }, &quot;delete element from collection&quot;);
+        &lt;/script&gt;
+&lt;/body&gt;&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName22expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName22expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-22-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-22-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-22-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-22-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+test link #foo
+text caption
+TEXT head
+td text1text
+td text
+td te xt
+TEXT foot
+xt te
+
+PASS move item in collection order 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName22htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName22htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-22.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-22.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-22.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-22.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,58 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;&lt;head&gt;
+        &lt;title&gt;getElementsByClassName&lt;/title&gt;
+        &lt;meta content=&quot;move item in collection order&quot; name=&quot;description&quot;&gt;
+    &lt;link href=&quot;https://dom.spec.whatwg.org/#dom-document-getelementsbyclassname&quot; rel=&quot;help&quot;&gt;
+    &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+    &lt;body&gt;
+        &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+        &lt;div&gt;
+            &lt;div&gt;
+                &lt;a class=&quot;text link&quot; href=&quot;#foo&quot;&gt;test link #foo&lt;/a&gt;
+            &lt;/div&gt;
+            &lt;b class=&quot;text&quot;&gt;text&lt;/b&gt;
+        &lt;/div&gt;
+        &lt;table&gt;
+            &lt;caption class=&quot;text caption&quot;&gt;text caption&lt;/caption&gt;
+            &lt;thead&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;TEXT head&quot;&gt;TEXT head&lt;/td&gt;
+                &lt;/tr&gt;
+            &lt;/thead&gt;
+            &lt;tbody&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;td text1&quot;&gt;td text1&lt;/td&gt;
+                &lt;/tr&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;td text&quot;&gt;td text&lt;/td&gt;
+                &lt;/tr&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;td te xt&quot;&gt;td te xt&lt;/td&gt;
+                &lt;/tr&gt;
+            &lt;/tbody&gt;
+            &lt;tfoot&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;TEXT foot&quot;&gt;TEXT foot&lt;/td&gt;
+                &lt;/tr&gt;
+            &lt;/tfoot&gt;
+        &lt;/table&gt;
+        &lt;div class=&quot;xt te&quot;&gt;xt te&lt;/div&gt;
+
+        &lt;script type=&quot;text/javascript&quot;&gt;
+            test(function()
+            {
+                var collection = document.getElementsByClassName(&quot;text&quot;);
+                assert_equals(collection.length, 4);
+                var boldText = document.getElementsByTagName(&quot;b&quot;)[0];
+                document.getElementsByTagName(&quot;table&quot;)[0].tBodies[0].rows[0].cells[0].appendChild(boldText);
+
+                assert_equals(collection.length, 4);
+                assert_equals(collection[0].parentNode.nodeName, &quot;DIV&quot;);
+                assert_equals(collection[1].parentNode.nodeName, &quot;TABLE&quot;);
+                assert_equals(collection[2].parentNode.nodeName, &quot;TD&quot;);
+                assert_equals(collection[3].parentNode.nodeName, &quot;TR&quot;);
+            }, &quot;move item in collection order&quot;);
+        &lt;/script&gt;
+&lt;/body&gt;&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName23expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName23expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-23-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-23-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-23-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-23-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+test link #foo
+text
+text caption
+TEXT head
+td text1
+td text
+td te xt
+TEXT foot
+xt te
+
+PASS multiple defined classes 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName23htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName23htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-23.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-23.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-23.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-23.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,52 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;&lt;head&gt;
+        &lt;title&gt;getElementsByClassName&lt;/title&gt;
+        &lt;meta content=&quot;multiple defined classes&quot; name=&quot;description&quot;&gt;
+    &lt;link href=&quot;https://dom.spec.whatwg.org/#dom-document-getelementsbyclassname&quot; rel=&quot;help&quot;&gt;
+    &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+    &lt;body&gt;
+        &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+        &lt;div&gt;
+            &lt;div&gt;
+                &lt;a class=&quot;text link&quot; href=&quot;#foo&quot;&gt;test link #foo&lt;/a&gt;
+            &lt;/div&gt;
+            &lt;b class=&quot;text&quot;&gt;text&lt;/b&gt;
+        &lt;/div&gt;
+        &lt;table&gt;
+            &lt;caption class=&quot;text caption&quot;&gt;text caption&lt;/caption&gt;
+            &lt;thead&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;TEXT head&quot;&gt;TEXT head&lt;/td&gt;
+                &lt;/tr&gt;
+            &lt;/thead&gt;
+            &lt;tbody&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;td text1&quot;&gt;td text1&lt;/td&gt;
+                &lt;/tr&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;td text&quot;&gt;td text&lt;/td&gt;
+                &lt;/tr&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;td te xt&quot;&gt;td te xt&lt;/td&gt;
+                &lt;/tr&gt;
+            &lt;/tbody&gt;
+            &lt;tfoot&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;TEXT foot&quot;&gt;TEXT foot&lt;/td&gt;
+                &lt;/tr&gt;
+            &lt;/tfoot&gt;
+        &lt;/table&gt;
+        &lt;div class=&quot;xt te&quot;&gt;xt te&lt;/div&gt;
+
+        &lt;script type=&quot;text/javascript&quot;&gt;
+            test(function()
+            {
+                var collection = document.getElementsByClassName(&quot;te xt&quot;);
+                assert_equals(collection.length, 2);
+                assert_equals(collection[0].parentNode.nodeName, &quot;TR&quot;);
+                assert_equals(collection[1].parentNode.nodeName, &quot;BODY&quot;);
+            }, &quot;multiple defined classes&quot;);
+        &lt;/script&gt;
+&lt;/body&gt;&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName24expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName24expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-24-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-24-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-24-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-24-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+ΔЙあ叶葉 말 link
+text
+ΔЙあ叶葉 קم
+
+PASS handle unicode chars 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName24htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName24htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-24.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-24.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-24.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-24.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;&lt;head&gt;
+        &lt;meta charset='utf-8'&gt;
+        &lt;title&gt;getElementsByClassName&lt;/title&gt;
+        &lt;meta content=&quot;handle unicode chars&quot; name=&quot;description&quot;&gt;
+    &lt;link href=&quot;https://dom.spec.whatwg.org/#dom-document-getelementsbyclassname&quot; rel=&quot;help&quot;&gt;
+    &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+    &lt;body&gt;
+        &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+        &lt;div&gt;
+            &lt;div&gt;
+                &lt;a class=&quot;ΔЙあ叶葉 말 link&quot; href=&quot;#foo&quot;&gt;ΔЙあ叶葉 말 link&lt;/a&gt;
+            &lt;/div&gt;
+            &lt;b class=&quot;text&quot;&gt;text&lt;/b&gt;
+        &lt;/div&gt;
+        &lt;div class=&quot;ΔЙあ叶葉 קم&quot;&gt;ΔЙあ叶葉 קم&lt;/div&gt;
+
+        &lt;script type=&quot;text/javascript&quot;&gt;
+            test(function()
+            {
+                var collection = document.getElementsByClassName(&quot;ΔЙあ叶葉&quot;);
+                assert_equals(collection.length, 2);
+                assert_equals(collection[0].parentNode.nodeName, &quot;DIV&quot;);
+                assert_equals(collection[1].parentNode.nodeName, &quot;BODY&quot;);
+            }, &quot;handle unicode chars&quot;);
+        &lt;/script&gt;
+
+&lt;/body&gt;&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName25expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName25expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-25-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-25-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-25-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-25-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,11 @@
</span><ins>+test link #foo
+text caption
+TEXT head
+td text1text
+td text
+td te xt
+TEXT foot
+xt te
+
+PASS verify spacing is handled correctly 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName25htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName25htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-25.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-25.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-25.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-25.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,57 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;&lt;head&gt;
+        &lt;title&gt;getElementsByClassName&lt;/title&gt;
+        &lt;meta content=&quot;verify spacing is handled correctly&quot; name=&quot;description&quot;&gt;
+    &lt;link href=&quot;https://dom.spec.whatwg.org/#dom-document-getelementsbyclassname&quot; rel=&quot;help&quot;&gt;
+    &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+    &lt;body&gt;
+        &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+         &lt;div&gt;
+            &lt;div&gt;
+                &lt;a class=&quot;text link&quot; href=&quot;#foo&quot;&gt;test link #foo&lt;/a&gt;
+            &lt;/div&gt;
+            &lt;b class=&quot;text&quot;&gt;text&lt;/b&gt;
+        &lt;/div&gt;
+        &lt;table&gt;
+            &lt;caption class=&quot;text caption&quot;&gt;text caption&lt;/caption&gt;
+            &lt;thead&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;TEXT head&quot;&gt;TEXT head&lt;/td&gt;
+                &lt;/tr&gt;
+            &lt;/thead&gt;
+            &lt;tbody&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;td text1&quot;&gt;td text1&lt;/td&gt;
+                &lt;/tr&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;td text&quot;&gt;td text&lt;/td&gt;
+                &lt;/tr&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;td te xt&quot;&gt;td te xt&lt;/td&gt;
+                &lt;/tr&gt;
+            &lt;/tbody&gt;
+            &lt;tfoot&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;TEXT foot&quot;&gt;TEXT foot&lt;/td&gt;
+                &lt;/tr&gt;
+            &lt;/tfoot&gt;
+        &lt;/table&gt;
+        &lt;div class=&quot;xt te&quot;&gt;xt te&lt;/div&gt;
+
+        &lt;script type=&quot;text/javascript&quot;&gt;
+          test(function()
+          {
+            var collection = document.getElementsByClassName(&quot;text &quot;);
+            assert_equals(collection.length, 4);
+            var boldText = document.getElementsByTagName(&quot;b&quot;)[0];
+            document.getElementsByTagName(&quot;table&quot;)[0].tBodies[0].rows[0].cells[0].appendChild(boldText);
+            assert_equals(collection.length, 4);
+            assert_equals(collection[0].parentNode.nodeName, &quot;DIV&quot;);
+            assert_equals(collection[1].parentNode.nodeName, &quot;TABLE&quot;);
+            assert_equals(collection[2].parentNode.nodeName, &quot;TD&quot;);
+            assert_equals(collection[3].parentNode.nodeName, &quot;TR&quot;);
+          }, &quot;verify spacing is handled correctly&quot;);
+        &lt;/script&gt;
+&lt;/body&gt;&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName26expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName26expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-26-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-26-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-26-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-26-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+te xt
+te; xt test link #foo
+text
+xt te
+
+PASS multiple class attributes 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName26htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName26htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-26.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-26.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-26.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-26.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,30 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;&lt;head&gt;
+        &lt;title&gt;getElementsByClassName&lt;/title&gt;
+        &lt;meta content=&quot;multiple class attributes&quot; name=&quot;description&quot;&gt;
+    &lt;link href=&quot;https://dom.spec.whatwg.org/#dom-document-getelementsbyclassname&quot; rel=&quot;help&quot;&gt;
+    &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+    &lt;body&gt;
+       &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+         &lt;div class=&quot;te xt&quot;&gt;
+            te xt
+            &lt;div class=&quot;te&quot;&gt;
+                te; xt
+                &lt;a class=&quot;text link&quot; href=&quot;#foo&quot;&gt;test link #foo&lt;/a&gt;
+            &lt;/div&gt;
+            &lt;b class=&quot;text&quot;&gt;text&lt;/b&gt;
+        &lt;/div&gt;
+        &lt;div class=&quot;xt te&quot;&gt;xt te&lt;/div&gt;
+         &lt;script type=&quot;text/javascript&quot;&gt;
+            test(function()
+            {
+                var collection = document.getElementsByClassName(&quot;te xt&quot;);
+
+                assert_equals(collection.length, 2);
+                assert_equals(collection[0].parentNode.nodeName, &quot;BODY&quot;);
+                assert_equals(collection[1].parentNode.nodeName, &quot;BODY&quot;);
+            }, &quot;multiple class attributes&quot;);
+        &lt;/script&gt;
+&lt;/body&gt;&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName27expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName27expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-27-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-27-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-27-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-27-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+te xt
+te; xt test link #foo dummy tag
+text
+xt te
+
+PASS generic element listed 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName27htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName27htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-27.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-27.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-27.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-27.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;&lt;head&gt;
+        &lt;title&gt;getElementsByClassName&lt;/title&gt;
+        &lt;meta content=&quot;generic element listed&quot; name=&quot;description&quot;&gt;
+    &lt;link href=&quot;https://dom.spec.whatwg.org/#dom-document-getelementsbyclassname&quot; rel=&quot;help&quot;&gt;
+    &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+    &lt;body&gt;
+      &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+         &lt;div class=&quot;te xt&quot;&gt;
+            te xt
+            &lt;div class=&quot;te&quot;&gt;
+                te; xt
+                &lt;a class=&quot;text link&quot; href=&quot;#foo&quot;&gt;test link #foo&lt;/a&gt;
+                &lt;foo class=&quot;te xt&quot;&gt;dummy tag&lt;/foo&gt;
+            &lt;/div&gt;
+            &lt;b class=&quot;text&quot;&gt;text&lt;/b&gt;
+        &lt;/div&gt;
+        &lt;div class=&quot;xt te&quot;&gt;xt te&lt;/div&gt;
+        &lt;script type=&quot;text/javascript&quot;&gt;
+            test(function()
+            {
+                var collection = document.getElementsByClassName(&quot;te xt&quot;);
+
+                assert_equals(collection.length, 3);
+                assert_equals(collection[0].parentNode.nodeName, &quot;BODY&quot;);
+                assert_equals(collection[1].parentNode.nodeName, &quot;DIV&quot;);
+                assert_equals(collection[2].parentNode.nodeName, &quot;BODY&quot;);
+            }, &quot;generic element listed&quot;);
+        &lt;/script&gt;
+&lt;/body&gt;&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName28expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName28expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-28-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-28-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-28-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-28-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+te xt
+te; xt test link #foo te xt namespace
+text
+xt te
+
+PASS generic element listed 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName28htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName28htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-28.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-28.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-28.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-28.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,31 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;&lt;head&gt;
+        &lt;title&gt;getElementsByClassName&lt;/title&gt;
+        &lt;meta content=&quot;generic element listed&quot; name=&quot;description&quot;&gt;
+    &lt;link href=&quot;https://dom.spec.whatwg.org/#dom-document-getelementsbyclassname&quot; rel=&quot;help&quot;&gt;
+    &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+    &lt;body&gt;
+        &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+        &lt;div class=&quot;te xt&quot;&gt;
+            te xt
+            &lt;div class=&quot;te&quot;&gt;
+                te; xt
+                &lt;a class=&quot;text link&quot; href=&quot;#foo&quot;&gt;test link #foo&lt;/a&gt;
+                &lt;fooU00003Abar class=&quot;te xt namespace&quot;&gt;te xt namespace
+            &lt;/fooU00003Abar&gt;&lt;/div&gt;
+            &lt;b class=&quot;text&quot;&gt;text&lt;/b&gt;
+        &lt;/div&gt;
+        &lt;div class=&quot;xt te&quot;&gt;xt te&lt;/div&gt;
+        &lt;script type=&quot;text/javascript&quot;&gt;
+            test(function()
+            {
+                var collection = document.getElementsByClassName(&quot;te xt&quot;);
+                assert_equals(collection.length, 3);
+                assert_equals(collection[0].parentNode.nodeName, &quot;BODY&quot;);
+                assert_equals(collection[1].parentNode.nodeName, &quot;DIV&quot;);
+                assert_equals(collection[2].parentNode.nodeName, &quot;BODY&quot;);
+            }, &quot;generic element listed&quot;);
+        &lt;/script&gt;
+&lt;/body&gt;&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName29expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName29expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-29-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-29-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-29-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-29-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+test link #foo
+text
+text caption
+TEXT head
+td text1
+td text
+td te xt
+TEXT foot
+xt te
+
+PASS get class from children of element 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName29htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName29htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-29.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-29.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-29.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-29.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,51 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;&lt;head&gt;
+    &lt;title&gt;getElementsByClassName&lt;/title&gt;
+    &lt;meta content=&quot;get class from children of element&quot; name=&quot;description&quot;&gt;
+    &lt;link href=&quot;https://dom.spec.whatwg.org/#dom-document-getelementsbyclassname&quot; rel=&quot;help&quot;&gt;
+    &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+    &lt;body&gt;
+        &lt;div id='log'&gt;&lt;/div&gt;
+        &lt;div&gt;
+            &lt;div&gt;
+                &lt;a class=&quot;text link&quot; href=&quot;#foo&quot;&gt;test link #foo&lt;/a&gt;
+            &lt;/div&gt;
+            &lt;b class=&quot;text&quot;&gt;text&lt;/b&gt;
+        &lt;/div&gt;
+        &lt;table&gt;
+            &lt;caption class=&quot;text caption&quot;&gt;text caption&lt;/caption&gt;
+            &lt;thead&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;TEXT head&quot;&gt;TEXT head&lt;/td&gt;
+                &lt;/tr&gt;
+            &lt;/thead&gt;
+            &lt;tbody&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;td text1&quot;&gt;td text1&lt;/td&gt;
+                &lt;/tr&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;td text&quot;&gt;td text&lt;/td&gt;
+                &lt;/tr&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;td te xt&quot;&gt;td te xt&lt;/td&gt;
+                &lt;/tr&gt;
+            &lt;/tbody&gt;
+            &lt;tfoot&gt;
+                &lt;tr&gt;
+                    &lt;td class=&quot;TEXT foot&quot;&gt;TEXT foot&lt;/td&gt;
+                &lt;/tr&gt;
+            &lt;/tfoot&gt;
+        &lt;/table&gt;
+        &lt;div class=&quot;xt te&quot;&gt;xt te&lt;/div&gt;
+
+        &lt;script type=&quot;text/javascript&quot;&gt;
+            test(function()
+            {
+                var collection = document.getElementsByTagName(&quot;table&quot;)[0].getElementsByClassName(&quot;te xt&quot;);
+                assert_equals(collection.length, 1);
+                assert_equals(collection[0].parentNode.nodeName, &quot;TR&quot;);
+            }, &quot;get class from children of element&quot;);
+        &lt;/script&gt;
+&lt;/body&gt;&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName30expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName30expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-30-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-30-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-30-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-30-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+a abbr acronym
+address
+b bdo big
+blockquote
+
+button
+center
+cite code del dfn
+dir
+li
+div
+dd
+em font
+label legend
+h1
+
+i       ins kbd
+menu
+
+ol
+p
+
+pre
+q s samp   small span strike strong sub sup colgroup
+caption
+th
+td tt u
+ul
+var
+
+PASS big element listing 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName30htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName30htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-30.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-30.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-30.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-30.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,190 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;&lt;head class=&quot;foo&quot;&gt;
+        &lt;title class=&quot;foo&quot;&gt;getElementsByClassName&lt;/title&gt;
+        &lt;meta class=&quot;foo&quot; content=&quot;big element listing&quot; name=&quot;description&quot;&gt;
+        &lt;link class=&quot;foo&quot;&gt;
+        &lt;base class=&quot;foo&quot;&gt;
+        &lt;script class=&quot;foo&quot;&gt;&lt;/script&gt;
+        &lt;style class=&quot;foo&quot;&gt;&lt;/style&gt;
+    &lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+    &lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+    &lt;link href=&quot;https://dom.spec.whatwg.org/#dom-document-getelementsbyclassname&quot; rel=&quot;help&quot;&gt;
+&lt;/head&gt;
+    &lt;body class=&quot;foo&quot;&gt;
+    &lt;div id='log'&gt;&lt;/div&gt;
+        &lt;a class=&quot;foo&quot;&gt;a&lt;/a&gt;
+        &lt;abbr class=&quot;foo&quot;&gt;abbr&lt;/abbr&gt;
+        &lt;acronym class=&quot;foo&quot;&gt;acronym&lt;/acronym&gt;
+        &lt;address class=&quot;foo&quot;&gt;address&lt;/address&gt;
+        &lt;applet class=&quot;foo&quot;&gt;applet&lt;/applet&gt;
+        &lt;b class=&quot;foo&quot;&gt;b&lt;/b&gt;
+        &lt;bdo class=&quot;foo&quot;&gt;bdo&lt;/bdo&gt;
+        &lt;big class=&quot;foo&quot;&gt;big&lt;/big&gt;
+        &lt;blockquote class=&quot;foo&quot;&gt;blockquote&lt;/blockquote&gt;
+        &lt;br class=&quot;foo&quot;&gt;
+        &lt;button class=&quot;foo&quot;&gt;button&lt;/button&gt;
+        &lt;center class=&quot;foo&quot;&gt;center&lt;/center&gt;
+        &lt;cite class=&quot;foo&quot;&gt;cite&lt;/cite&gt;
+        &lt;code class=&quot;foo&quot;&gt;code&lt;/code&gt;
+        &lt;del class=&quot;foo&quot;&gt;del&lt;/del&gt;
+        &lt;dfn class=&quot;foo&quot;&gt;dfn&lt;/dfn&gt;
+        &lt;dir class=&quot;foo&quot;&gt;dir
+            &lt;li class=&quot;foo&quot;&gt;li&lt;/li&gt;
+        &lt;/dir&gt;
+        &lt;div class=&quot;foo&quot;&gt;div&lt;/div&gt;
+        &lt;dl class=&quot;foo&quot;&gt;
+            &lt;dt class=&quot;foo&quot;&gt;
+                &lt;/dt&gt;&lt;dd class=&quot;foo&quot;&gt;dd&lt;/dd&gt;
+        &lt;/dl&gt;
+        &lt;em class=&quot;foo&quot;&gt;em&lt;/em&gt;
+        &lt;font class=&quot;foo&quot;&gt;font&lt;/font&gt;
+        &lt;form class=&quot;foo&quot;&gt;
+            &lt;label class=&quot;foo&quot;&gt;label&lt;/label&gt;
+            &lt;fieldset class=&quot;foo&quot;&gt;
+                &lt;legend class=&quot;foo&quot;&gt;legend&lt;/legend&gt;
+            &lt;/fieldset&gt;
+        &lt;/form&gt;
+        &lt;h1 class=&quot;foo&quot;&gt;h1&lt;/h1&gt;
+        &lt;hr class=&quot;foo&quot;&gt;
+        &lt;i class=&quot;foo&quot;&gt;i&lt;/i&gt;
+        &lt;iframe class=&quot;foo&quot;&gt;iframe&lt;/iframe&gt;
+        &lt;img class=&quot;foo&quot;&gt;
+        &lt;input class=&quot;foo&quot;&gt;
+        &lt;ins class=&quot;foo&quot;&gt;ins&lt;/ins&gt;
+        &lt;kbd class=&quot;foo&quot;&gt;kbd&lt;/kbd&gt;
+        &lt;map class=&quot;foo&quot;&gt;
+            &lt;area class=&quot;foo&quot;&gt;&lt;/area&gt;
+        &lt;/map&gt;
+        &lt;menu class=&quot;foo&quot;&gt;menu&lt;/menu&gt;
+        &lt;noscript class=&quot;foo&quot;&gt;noscript&lt;/noscript&gt;
+        &lt;object class=&quot;foo&quot;&gt;
+            &lt;param class=&quot;foo&quot;&gt;
+        &lt;/object&gt;
+        &lt;ol class=&quot;foo&quot;&gt;ol&lt;/ol&gt;
+        &lt;p class=&quot;foo&quot;&gt;p&lt;/p&gt;
+        &lt;pre class=&quot;foo&quot;&gt;pre&lt;/pre&gt;
+        &lt;q class=&quot;foo&quot;&gt;q&lt;/q&gt;
+        &lt;s class=&quot;foo&quot;&gt;s&lt;/s&gt;
+        &lt;samp class=&quot;foo&quot;&gt;samp&lt;/samp&gt;
+        &lt;select class=&quot;foo&quot;&gt;
+            &lt;optgroup class=&quot;foo&quot;&gt;optgroup&lt;/optgroup&gt;
+            &lt;option class=&quot;foo&quot;&gt;option&lt;/option&gt;
+        &lt;/select&gt;
+        &lt;small class=&quot;foo&quot;&gt;small&lt;/small&gt;
+        &lt;span class=&quot;foo&quot;&gt;span&lt;/span&gt;
+        &lt;strike class=&quot;foo&quot;&gt;strike&lt;/strike&gt;
+        &lt;strong class=&quot;foo&quot;&gt;strong&lt;/strong&gt;
+        &lt;sub class=&quot;foo&quot;&gt;sub&lt;/sub&gt;
+        &lt;sup class=&quot;foo&quot;&gt;sup&lt;/sup&gt;
+        colgroup&lt;table class=&quot;foo&quot;&gt;
+            &lt;caption class=&quot;foo&quot;&gt;caption&lt;/caption&gt;
+            &lt;colgroup&gt;&lt;col class=&quot;foo&quot;&gt;
+            &lt;/colgroup&gt;&lt;colgroup class=&quot;foo&quot;&gt;&lt;/colgroup&gt;
+            &lt;thead class=&quot;foo&quot;&gt;
+                &lt;tr&gt;&lt;th class=&quot;foo&quot;&gt;th&lt;/th&gt;
+            &lt;/tr&gt;&lt;/thead&gt;
+            &lt;tbody class=&quot;foo&quot;&gt;
+                &lt;tr class=&quot;foo&quot;&gt;
+                    &lt;td class=&quot;foo&quot;&gt;td&lt;/td&gt;
+                &lt;/tr&gt;
+            &lt;/tbody&gt;
+            &lt;tfoot class=&quot;foo&quot;&gt;&lt;/tfoot&gt;
+        &lt;/table&gt;
+        &lt;textarea class=&quot;foo&quot;&gt;textarea&lt;/textarea&gt;
+        &lt;tt class=&quot;foo&quot;&gt;tt&lt;/tt&gt;
+        &lt;u class=&quot;foo&quot;&gt;u&lt;/u&gt;
+        &lt;ul class=&quot;foo&quot;&gt;ul&lt;/ul&gt;
+        &lt;var class=&quot;foo&quot;&gt;var&lt;/var&gt;
+        &lt;script type=&quot;text/javascript&quot;&gt;
+    test(function ()
+          {
+           var arrElements = [
+                &quot;HEAD&quot;,
+                &quot;TITLE&quot;,
+                &quot;META&quot;,
+                &quot;LINK&quot;,
+                &quot;BASE&quot;,
+                &quot;SCRIPT&quot;,
+                &quot;STYLE&quot;,
+                &quot;BODY&quot;,
+                &quot;A&quot;,
+                &quot;ABBR&quot;,
+                &quot;ACRONYM&quot;,
+                &quot;ADDRESS&quot;,
+                &quot;APPLET&quot;,
+                &quot;B&quot;,
+                &quot;BDO&quot;,
+                &quot;BIG&quot;,
+                &quot;BLOCKQUOTE&quot;,
+                &quot;BR&quot;,
+                &quot;BUTTON&quot;,
+                &quot;CENTER&quot;,
+                &quot;CITE&quot;,
+                &quot;CODE&quot;,
+                &quot;DEL&quot;,
+                &quot;DFN&quot;,
+                &quot;DIR&quot;,
+                &quot;LI&quot;,
+                &quot;DIV&quot;,
+                &quot;DL&quot;,
+                &quot;DT&quot;,
+                &quot;DD&quot;,
+                &quot;EM&quot;,
+                &quot;FONT&quot;,
+                &quot;FORM&quot;,
+                &quot;LABEL&quot;,
+                &quot;FIELDSET&quot;,
+                &quot;LEGEND&quot;,
+                &quot;H1&quot;,
+                &quot;HR&quot;,
+                &quot;I&quot;,
+                &quot;IFRAME&quot;,
+                &quot;IMG&quot;,
+                &quot;INPUT&quot;,
+                &quot;INS&quot;,
+                &quot;KBD&quot;,
+                &quot;MAP&quot;,
+                &quot;AREA&quot;,
+                &quot;MENU&quot;,
+                &quot;NOSCRIPT&quot;,
+                &quot;OBJECT&quot;,
+                &quot;PARAM&quot;,
+                &quot;OL&quot;,
+                &quot;P&quot;,
+                &quot;PRE&quot;,
+                &quot;Q&quot;,
+                &quot;S&quot;,
+                &quot;SAMP&quot;,
+                &quot;SELECT&quot;,
+                &quot;OPTGROUP&quot;,
+                &quot;OPTION&quot;,
+                &quot;SMALL&quot;,
+                &quot;SPAN&quot;,
+                &quot;STRIKE&quot;,
+                &quot;STRONG&quot;,
+                &quot;SUB&quot;,
+                &quot;SUP&quot;,
+                &quot;TABLE&quot;,
+                &quot;CAPTION&quot;,
+                &quot;COL&quot;,
+                &quot;COLGROUP&quot;,
+                &quot;THEAD&quot;,
+                &quot;TH&quot;,
+                &quot;TBODY&quot;,
+                &quot;TR&quot;,
+                &quot;TD&quot;,
+                &quot;TFOOT&quot;,
+                &quot;TEXTAREA&quot;,
+                &quot;TT&quot;,
+                &quot;U&quot;,
+                &quot;UL&quot;,
+                &quot;VAR&quot;];
+
+                var collection = document.getElementsByClassName(&quot;foo&quot;);
+                for (var x = 0; x &lt; collection.length; x++)
+                {
+                    assert_equals(collection[x].nodeName, arrElements[x]);
+                }
+}, &quot;big element listing&quot;);
+        &lt;/script&gt;
+&lt;/body&gt;&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName31expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-31-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-31-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-31-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+
+PASS getElementsByClassName across documents 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassName31htmfromrev189470trunkLayoutTestshttptestsw3cdomnodesgetElementsByClassName31htm"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-31.htm (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/getElementsByClassName-31.htm) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-31.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassName-31.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,22 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html class=foo&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;getElementsByClassName across documents&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-document-getelementsbyclassname&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script class=foo&gt;
+async_test(function() {
+  var iframe = document.createElement(&quot;iframe&quot;);
+  iframe.onload = this.step_func_done(function() {
+    var collection = iframe.contentDocument.getElementsByClassName(&quot;foo&quot;);
+    assert_equals(collection.length, 3);
+    assert_equals(collection[0].localName, &quot;html&quot;);
+    assert_equals(collection[1].localName, &quot;head&quot;);
+    assert_equals(collection[2].localName, &quot;body&quot;);
+  });
+  iframe.src = &quot;getElementsByClassNameFrame.htm&quot;;
+  document.body.appendChild(iframe);
+});
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassNameFrameexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassNameFrame-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassNameFrame-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassNameFrame-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x8
+  RenderBlock {HTML} at (0,0) size 800x8
+    RenderBody {BODY} at (8,8) size 784x0
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesgetElementsByClassNameFramehtm"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassNameFrame.htm (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassNameFrame.htm                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/getElementsByClassNameFrame.htm        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html class=foo&gt;
+&lt;head class=foo&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;getElementsByClassName&lt;/title&gt;
+&lt;body class=foo&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesmutationobserversjsfromrev189470trunkLayoutTestshttptestsw3cdomnodesmutationobserversjs"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/mutationobservers.js (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/mutationobservers.js) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/mutationobservers.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/mutationobservers.js        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,76 @@
</span><ins>+// Compares a mutation record to a predefined one
+// mutationToCheck is a mutation record from the user agent
+// expectedRecord is a mutation record minted by the test
+//    for expectedRecord, if properties are ommitted, they get default ones
+function checkRecords(target, mutationToCheck, expectedRecord) {
+  var mr1;
+  var mr2;
+
+
+  function checkField(property, isArray) {
+    var field = mr2[property];
+    if (isArray === undefined) {
+      isArray = false;
+    }
+    if (field instanceof Function) {
+      field = field();
+    } else if (field === undefined) {
+      if (isArray) {
+        field = new Array();
+      } else {
+        field = null;
+      }
+    }
+    if (isArray) {
+      assert_array_equals(mr1[property], field, property + &quot; didn't match&quot;);
+    } else {
+      assert_equals(mr1[property], field, property + &quot; didn't match&quot;);
+    }
+  }
+
+  assert_equals(mutationToCheck.length, expectedRecord.length, &quot;mutation records must match&quot;);
+  for (var item = 0; item &lt; mutationToCheck.length; item++) {
+    mr1 = mutationToCheck[item];
+    mr2 = expectedRecord[item];
+
+    if (mr2.target instanceof Function) {
+      assert_equals(mr1.target, mr2.target(), &quot;target node must match&quot;);
+    } else if (mr2.target !== undefined) {
+      assert_equals(mr1.target, mr2.target, &quot;target node must match&quot;);
+    } else {
+      assert_equals(mr1.target, target, &quot;target node must match&quot;);
+    }
+
+    checkField(&quot;type&quot;);
+    checkField(&quot;addedNodes&quot;, true);
+    checkField(&quot;removedNodes&quot;, true);
+    checkField(&quot;previousSibling&quot;);
+    checkField(&quot;nextSibling&quot;);
+    checkField(&quot;attributeName&quot;);
+    checkField(&quot;attributeNamespace&quot;);
+    checkField(&quot;oldValue&quot;);
+  };
+}
+
+function runMutationTest(node, mutationObserverOptions, mutationRecordSequence, mutationFunction, description, target) {
+  var test = async_test(description);
+
+
+  function moc(mrl, obs) {
+    test.step(
+      function () {
+            if (target === undefined) target = node;
+            checkRecords(target, mrl, mutationRecordSequence);
+        test.done();
+      }
+     );
+  }
+
+  test.step(
+    function () {
+      (new MutationObserver(moc)).observe(node, mutationObserverOptions);
+      mutationFunction();
+    }
+  );
+  return mutationRecordSequence.length
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesprependonDocumentexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomnodesprependonDocumentexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/prepend-on-Document-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/prepend-on-Document-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/prepend-on-Document-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/prepend-on-Document-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+
+PASS Document.prepend() without any argument, on a Document having no child. 
+PASS Document.prepend() with only one element as an argument, on a Document having no child. 
+PASS Document.append() with only one element as an argument, on a Document having one child. 
+PASS Document.prepend() with text as an argument, on a Document having no child. 
+FAIL Document.prepend() with two elements as the argument, on a Document having no child. assert_throws: function &quot;function () { parent.prepend(x, y); }&quot; did not throw
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesprependonDocumenthtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesprependonDocumenthtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/prepend-on-Document.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/prepend-on-Document.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/prepend-on-Document.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/prepend-on-Document.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,53 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;DocumentType.prepend&lt;/title&gt;
+&lt;link rel=help href=&quot;https://dom.spec.whatwg.org/#dom-parentnode-prepend&quot;&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script&gt;
+
+function test_prepend_on_Document() {
+
+    var node = document.implementation.createDocument(null, null);
+    test(function() {
+        var parent = node.cloneNode();
+        parent.prepend();
+        assert_array_equals(parent.childNodes, []);
+    }, 'Document.prepend() without any argument, on a Document having no child.');
+
+    test(function() {
+        var parent = node.cloneNode();
+        var x = document.createElement('x');
+        parent.prepend(x);
+        assert_array_equals(parent.childNodes, [x]);
+    }, 'Document.prepend() with only one element as an argument, on a Document having no child.');
+
+    test(function() {
+        var parent = node.cloneNode();
+        var x = document.createElement('x');
+        var y = document.createElement('y');
+        parent.appendChild(x);
+        assert_throws('HierarchyRequestError', function() { parent.prepend(y); });
+        assert_array_equals(parent.childNodes, [x]);
+    }, 'Document.append() with only one element as an argument, on a Document having one child.');
+
+    test(function() {
+        var parent = node.cloneNode();
+        assert_throws('HierarchyRequestError', function() { parent.prepend('text'); });
+        assert_array_equals(parent.childNodes, []);
+    }, 'Document.prepend() with text as an argument, on a Document having no child.');
+
+    test(function() {
+        var parent = node.cloneNode();
+        var x = document.createElement('x');
+        var y = document.createElement('y');
+        assert_throws('HierarchyRequestError', function() { parent.prepend(x, y); });
+        assert_array_equals(parent.childNodes, []);
+    }, 'Document.prepend() with two elements as the argument, on a Document having no child.');
+
+}
+
+test_prepend_on_Document();
+
+&lt;/script&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesproductionsjsfromrev189470trunkLayoutTestshttptestsw3cdomnodesproductionsjs"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/productions.js (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/productions.js) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/productions.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/productions.js        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+var invalid_names = [&quot;&quot;, &quot;invalid^Name&quot;, &quot;\\&quot;, &quot;'&quot;, '&quot;', &quot;0&quot;, &quot;0:a&quot;] // XXX
+var valid_names = [&quot;x&quot;, &quot;:&quot;, &quot;a:0&quot;]
+var invalid_qnames = [&quot;:a&quot;, &quot;b:&quot;, &quot;x:y:z&quot;] // XXX
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsbare_mathmlhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_mathml.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_mathml.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_mathml.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;math&gt;&lt;/math&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsbare_mathmlsvg"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_mathml.svg (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_mathml.svg                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_mathml.svg        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;math&gt;&lt;/math&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsbare_mathmlxhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_mathml.xhtml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_mathml.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_mathml.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;math&gt;&lt;/math&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsbare_mathmlxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_mathml.xml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_mathml.xml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_mathml.xml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;math&gt;&lt;/math&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsbare_svghtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_svg.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_svg.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_svg.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;svg&gt;&lt;/svg&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsbare_svgsvg"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_svg.svg (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_svg.svg                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_svg.svg        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;svg&gt;&lt;/svg&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsbare_svgxhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_svg.xhtml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_svg.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_svg.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;svg&gt;&lt;/svg&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsbare_svgxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_svg.xml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_svg.xml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_svg.xml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;svg&gt;&lt;/svg&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsbare_xhtmlhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_xhtml.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_xhtml.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_xhtml.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;html&gt;&lt;/html&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsbare_xhtmlsvg"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_xhtml.svg (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_xhtml.svg                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_xhtml.svg        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;html&gt;&lt;/html&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsbare_xhtmlxhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_xhtml.xhtml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_xhtml.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_xhtml.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;html&gt;&lt;/html&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsbare_xhtmlxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_xhtml.xml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_xhtml.xml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/bare_xhtml.xml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;html&gt;&lt;/html&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsemptyhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/empty.html ( => )</h4>
<pre class="diff"><span>
<span class="info">Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/empty.svg
===================================================================
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsemptyxhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/empty.xhtml ( => )</h4>
<pre class="diff"><span>
<span class="info">Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/empty.xml
===================================================================
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsgeneratepy"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/generate.py (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/generate.py                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/generate.py        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,77 @@
</span><ins>+#!/usr/bin/python
+import os
+import sys
+
+THIS_NAME = &quot;generate.py&quot;
+
+# Note: these lists must be kept in sync with the lists in
+# Document-createElement-namespace.html, and this script must be run whenever
+# the lists are updated.  (We could keep the lists in a shared JSON file, but
+# seems like too much effort.)
+FILES = (
+    (&quot;empty&quot;, &quot;&quot;),
+    (&quot;minimal_html&quot;, &quot;&lt;!doctype html&gt;&lt;title&gt;&lt;/title&gt;&quot;),
+
+    (&quot;xhtml&quot;, '&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;/html&gt;'),
+    (&quot;svg&quot;, '&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;&lt;/svg&gt;'),
+    (&quot;mathml&quot;, '&lt;mathml xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;/mathml&gt;'),
+
+    (&quot;bare_xhtml&quot;, &quot;&lt;html&gt;&lt;/html&gt;&quot;),
+    (&quot;bare_svg&quot;, &quot;&lt;svg&gt;&lt;/svg&gt;&quot;),
+    (&quot;bare_mathml&quot;, &quot;&lt;math&gt;&lt;/math&gt;&quot;),
+
+    (&quot;xhtml_ns_removed&quot;, &quot;&quot;&quot;\
+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+  &lt;head&gt;&lt;script&gt;
+    var newRoot = document.createElementNS(null, &quot;html&quot;);
+    document.removeChild(document.documentElement);
+    document.appendChild(newRoot);
+  &lt;/script&gt;&lt;/head&gt;
+&lt;/html&gt;
+&quot;&quot;&quot;),
+    (&quot;xhtml_ns_changed&quot;, &quot;&quot;&quot;\
+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+  &lt;head&gt;&lt;script&gt;
+    var newRoot = document.createElementNS(&quot;http://www.w3.org/2000/svg&quot;, &quot;abc&quot;);
+    document.removeChild(document.documentElement);
+    document.appendChild(newRoot);
+  &lt;/script&gt;&lt;/head&gt;
+&lt;/html&gt;
+&quot;&quot;&quot;),
+)
+
+EXTENSIONS = (
+    &quot;html&quot;,
+    &quot;xhtml&quot;,
+    &quot;xml&quot;,
+    &quot;svg&quot;,
+    # Was not able to get server MIME type working properly :(
+    #&quot;mml&quot;,
+)
+
+def __main__():
+    if len(sys.argv) &gt; 1:
+        print &quot;No arguments expected, aborting&quot;
+        return
+
+    if not os.access(THIS_NAME, os.F_OK):
+        print &quot;Must be run from the directory of &quot; + THIS_NAME + &quot;, aborting&quot;
+        return
+
+    for name in os.listdir(&quot;.&quot;):
+        if name == THIS_NAME:
+            continue
+        os.remove(name)
+
+    manifest = open(&quot;MANIFEST&quot;, &quot;w&quot;)
+
+    for name, contents in FILES:
+        for extension in EXTENSIONS:
+            f = open(name + &quot;.&quot; + extension, &quot;w&quot;)
+            f.write(contents)
+            f.close()
+            manifest.write(&quot;support &quot; + name + &quot;.&quot; + extension + &quot;\n&quot;)
+
+    manifest.close()
+
+__main__()
</ins><span class="cx">Property changes on: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/generate.py
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svnexecutable"></a>
<div class="addfile"><h4>Added: svn:executable</h4></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsmathmlhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/mathml.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/mathml.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/mathml.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;mathml xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;/mathml&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsmathmlsvg"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/mathml.svg (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/mathml.svg                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/mathml.svg        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;mathml xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;/mathml&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsmathmlxhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/mathml.xhtml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/mathml.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/mathml.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;mathml xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;/mathml&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsmathmlxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/mathml.xml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/mathml.xml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/mathml.xml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;mathml xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;&lt;/mathml&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsminimal_htmlhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/minimal_html.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/minimal_html.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/minimal_html.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!doctype html&gt;&lt;title&gt;&lt;/title&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsminimal_htmlsvg"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/minimal_html.svg (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/minimal_html.svg                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/minimal_html.svg        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!doctype html&gt;&lt;title&gt;&lt;/title&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsminimal_htmlxhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/minimal_html.xhtml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/minimal_html.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/minimal_html.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!doctype html&gt;&lt;title&gt;&lt;/title&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsminimal_htmlxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/minimal_html.xml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/minimal_html.xml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/minimal_html.xml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;!doctype html&gt;&lt;title&gt;&lt;/title&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestssvghtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/svg.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/svg.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/svg.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;&lt;/svg&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestssvgsvg"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/svg.svg (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/svg.svg                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/svg.svg        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;&lt;/svg&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestssvgxhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/svg.xhtml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/svg.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/svg.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;&lt;/svg&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestssvgxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/svg.xml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/svg.xml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/svg.xml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;&lt;/svg&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsxhtmlhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;/html&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsxhtmlsvg"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml.svg (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml.svg                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml.svg        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;/html&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsxhtmlxhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml.xhtml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;/html&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsxhtmlxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml.xml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml.xml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml.xml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;&lt;/html&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsxhtml_ns_changedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_changed.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_changed.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_changed.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+  &lt;head&gt;&lt;script&gt;
+    var newRoot = document.createElementNS(&quot;http://www.w3.org/2000/svg&quot;, &quot;abc&quot;);
+    document.removeChild(document.documentElement);
+    document.appendChild(newRoot);
+  &lt;/script&gt;&lt;/head&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsxhtml_ns_changedsvg"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_changed.svg (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_changed.svg                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_changed.svg        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+  &lt;head&gt;&lt;script&gt;
+    var newRoot = document.createElementNS(&quot;http://www.w3.org/2000/svg&quot;, &quot;abc&quot;);
+    document.removeChild(document.documentElement);
+    document.appendChild(newRoot);
+  &lt;/script&gt;&lt;/head&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsxhtml_ns_changedxhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_changed.xhtml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_changed.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_changed.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+  &lt;head&gt;&lt;script&gt;
+    var newRoot = document.createElementNS(&quot;http://www.w3.org/2000/svg&quot;, &quot;abc&quot;);
+    document.removeChild(document.documentElement);
+    document.appendChild(newRoot);
+  &lt;/script&gt;&lt;/head&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsxhtml_ns_changedxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_changed.xml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_changed.xml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_changed.xml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+  &lt;head&gt;&lt;script&gt;
+    var newRoot = document.createElementNS(&quot;http://www.w3.org/2000/svg&quot;, &quot;abc&quot;);
+    document.removeChild(document.documentElement);
+    document.appendChild(newRoot);
+  &lt;/script&gt;&lt;/head&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsxhtml_ns_removedhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_removed.html (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_removed.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_removed.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+  &lt;head&gt;&lt;script&gt;
+    var newRoot = document.createElementNS(null, &quot;html&quot;);
+    document.removeChild(document.documentElement);
+    document.appendChild(newRoot);
+  &lt;/script&gt;&lt;/head&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsxhtml_ns_removedsvg"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_removed.svg (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_removed.svg                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_removed.svg        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+  &lt;head&gt;&lt;script&gt;
+    var newRoot = document.createElementNS(null, &quot;html&quot;);
+    document.removeChild(document.documentElement);
+    document.appendChild(newRoot);
+  &lt;/script&gt;&lt;/head&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsxhtml_ns_removedxhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_removed.xhtml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_removed.xhtml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_removed.xhtml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+  &lt;head&gt;&lt;script&gt;
+    var newRoot = document.createElementNS(null, &quot;html&quot;);
+    document.removeChild(document.documentElement);
+    document.appendChild(newRoot);
+  &lt;/script&gt;&lt;/head&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesDocumentcreateElementnamespacetestsxhtml_ns_removedxml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_removed.xml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_removed.xml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/Document-createElement-namespace-tests/xhtml_ns_removed.xml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,7 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+  &lt;head&gt;&lt;script&gt;
+    var newRoot = document.createElementNS(null, &quot;html&quot;);
+    document.removeChild(document.documentElement);
+    document.appendChild(newRoot);
+  &lt;/script&gt;&lt;/head&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesParentNodequerySelectorAllcontenthtmlfromrev189470trunkLayoutTestshttptestsw3cdomnodesresourcesParentNodequerySelectorAllcontenthtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/ParentNode-querySelector-All-content.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/resources/ParentNode-querySelector-All-content.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/ParentNode-querySelector-All-content.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/ParentNode-querySelector-All-content.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,377 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html id=&quot;html&quot; lang=&quot;en&quot;&gt;
+&lt;head id=&quot;head&quot;&gt;
+  &lt;meta id=&quot;meta&quot; charset=&quot;UTF-8&quot;&gt;
+  &lt;title id=&quot;title&quot;&gt;Selectors-API Test Suite: HTML with Selectors Level 2 using TestHarness: Test Document&lt;/title&gt;
+
+  &lt;!-- Links for :link and :visited pseudo-class test --&gt;
+  &lt;link id=&quot;pseudo-link-link1&quot; href=&quot;&quot;&gt;
+  &lt;link id=&quot;pseudo-link-link2&quot; href=&quot;http://example.org/&quot;&gt;
+  &lt;link id=&quot;pseudo-link-link3&quot;&gt;
+  &lt;style&gt;
+  @namespace ns &quot;http://www.w3.org/1999/xhtml&quot;;
+   /* Declare the namespace prefix used in tests. This declaration should not be used by the API. */
+  &lt;/style&gt;
+&lt;/head&gt;
+&lt;body id=&quot;body&quot;&gt;
+&lt;div id=&quot;root&quot;&gt;
+  &lt;div id=&quot;target&quot;&gt;&lt;/div&gt;
+
+  &lt;div id=&quot;universal&quot;&gt;
+    &lt;p id=&quot;universal-p1&quot;&gt;Universal selector tests inside element with &lt;code id=&quot;universal-code1&quot;&gt;id=&quot;universal&quot;&lt;/code&gt;.&lt;/p&gt;
+    &lt;hr id=&quot;universal-hr1&quot;&gt;
+    &lt;pre id=&quot;universal-pre1&quot;&gt;Some preformatted text with some &lt;span id=&quot;universal-span1&quot;&gt;embedded code&lt;/span&gt;&lt;/pre&gt;
+    &lt;p id=&quot;universal-p2&quot;&gt;This is a normal link: &lt;a id=&quot;universal-a1&quot; href=&quot;http://www.w3.org/&quot;&gt;W3C&lt;/a&gt;&lt;/p&gt;
+    &lt;address id=&quot;universal-address1&quot;&gt;Some more nested elements &lt;code id=&quot;universal-code2&quot;&gt;&lt;a href=&quot;#&quot; id=&quot;universal-a2&quot;&gt;code hyperlink&lt;/a&gt;&lt;/code&gt;&lt;/address&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;attr-presence&quot;&gt;
+    &lt;div class=&quot;attr-presence-div1&quot; id=&quot;attr-presence-div1&quot; align=&quot;center&quot;&gt;&lt;/div&gt;
+    &lt;div class=&quot;attr-presence-div2&quot; id=&quot;attr-presence-div2&quot; align=&quot;&quot;&gt;&lt;/div&gt;
+    &lt;div class=&quot;attr-presence-div3&quot; id=&quot;attr-presence-div3&quot; valign=&quot;center&quot;&gt;&lt;/div&gt;
+    &lt;div class=&quot;attr-presence-div4&quot; id=&quot;attr-presence-div4&quot; alignv=&quot;center&quot;&gt;&lt;/div&gt;
+    &lt;p id=&quot;attr-presence-p1&quot;&gt;&lt;a  id=&quot;attr-presence-a1&quot; tItLe=&quot;&quot;&gt;&lt;/a&gt;&lt;span id=&quot;attr-presence-span1&quot; TITLE=&quot;attr-presence-span1&quot;&gt;&lt;/span&gt;&lt;/p&gt;
+    &lt;pre id=&quot;attr-presence-pre1&quot; data-attr-presence=&quot;pre1&quot;&gt;&lt;/pre&gt;
+    &lt;blockquote id=&quot;attr-presence-blockquote1&quot; data-attr-presence=&quot;blockquote1&quot;&gt;&lt;/blockquote&gt;
+    &lt;ul id=&quot;attr-presence-ul1&quot; data-中文=&quot;&quot;&gt;&lt;/ul&gt;
+
+    &lt;select id=&quot;attr-presence-select1&quot;&gt;
+      &lt;option id=&quot;attr-presence-select1-option1&quot;&gt;A&lt;/option&gt;
+      &lt;option id=&quot;attr-presence-select1-option2&quot;&gt;B&lt;/option&gt;
+      &lt;option id=&quot;attr-presence-select1-option3&quot;&gt;C&lt;/option&gt;
+      &lt;option id=&quot;attr-presence-select1-option4&quot;&gt;D&lt;/option&gt;
+    &lt;/select&gt;
+    &lt;select id=&quot;attr-presence-select2&quot;&gt;
+      &lt;option id=&quot;attr-presence-select2-option1&quot;&gt;A&lt;/option&gt;
+      &lt;option id=&quot;attr-presence-select2-option2&quot;&gt;B&lt;/option&gt;
+      &lt;option id=&quot;attr-presence-select2-option3&quot;&gt;C&lt;/option&gt;
+      &lt;option id=&quot;attr-presence-select2-option4&quot; selected=&quot;selected&quot;&gt;D&lt;/option&gt;
+    &lt;/select&gt;
+    &lt;select id=&quot;attr-presence-select3&quot; multiple=&quot;multiple&quot;&gt;
+      &lt;option id=&quot;attr-presence-select3-option1&quot;&gt;A&lt;/option&gt;
+      &lt;option id=&quot;attr-presence-select3-option2&quot; selected=&quot;&quot;&gt;B&lt;/option&gt;
+      &lt;option id=&quot;attr-presence-select3-option3&quot; selected=&quot;selected&quot;&gt;C&lt;/option&gt;
+      &lt;option id=&quot;attr-presence-select3-option4&quot;&gt;D&lt;/option&gt;
+    &lt;/select&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;attr-value&quot;&gt;
+    &lt;div id=&quot;attr-value-div1&quot; align=&quot;center&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-value-div2&quot; align=&quot;&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-value-div3&quot; data-attr-value=&quot;&amp;#xE9;&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-value-div4&quot; data-attr-value_foo=&quot;&amp;#xE9;&quot;&gt;&lt;/div&gt;
+
+    &lt;form id=&quot;attr-value-form1&quot;&gt;
+      &lt;input id=&quot;attr-value-input1&quot; type=&quot;text&quot;&gt;
+      &lt;input id=&quot;attr-value-input2&quot; type=&quot;password&quot;&gt;
+      &lt;input id=&quot;attr-value-input3&quot; type=&quot;hidden&quot;&gt;
+      &lt;input id=&quot;attr-value-input4&quot; type=&quot;radio&quot;&gt;
+      &lt;input id=&quot;attr-value-input5&quot; type=&quot;checkbox&quot;&gt;
+      &lt;input id=&quot;attr-value-input6&quot; type=&quot;radio&quot;&gt;
+      &lt;input id=&quot;attr-value-input7&quot; type=&quot;text&quot;&gt;
+      &lt;input id=&quot;attr-value-input8&quot; type=&quot;hidden&quot;&gt;
+      &lt;input id=&quot;attr-value-input9&quot; type=&quot;radio&quot;&gt;
+    &lt;/form&gt;
+
+    &lt;div id=&quot;attr-value-div5&quot; data-attr-value=&quot;中文&quot;&gt;&lt;/div&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;attr-whitespace&quot;&gt;
+    &lt;div id=&quot;attr-whitespace-div1&quot; class=&quot;foo div1 bar&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-whitespace-div2&quot; class=&quot;&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-whitespace-div3&quot; class=&quot;foo div3 bar&quot;&gt;&lt;/div&gt;
+
+      &lt;div id=&quot;attr-whitespace-div4&quot; data-attr-whitespace=&quot;foo &amp;#xE9; bar&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-whitespace-div5&quot; data-attr-whitespace_foo=&quot;&amp;#xE9; foo&quot;&gt;&lt;/div&gt;
+
+    &lt;a id=&quot;attr-whitespace-a1&quot; rel=&quot;next bookmark&quot;&gt;&lt;/a&gt;
+    &lt;a id=&quot;attr-whitespace-a2&quot; rel=&quot;tag nofollow&quot;&gt;&lt;/a&gt;
+    &lt;a id=&quot;attr-whitespace-a3&quot; rel=&quot;tag bookmark&quot;&gt;&lt;/a&gt;
+    &lt;a id=&quot;attr-whitespace-a4&quot; rel=&quot;book mark&quot;&gt;&lt;/a&gt; &lt;!-- Intentional space in &quot;book mark&quot; --&gt;
+    &lt;a id=&quot;attr-whitespace-a5&quot; rel=&quot;nofollow&quot;&gt;&lt;/a&gt;
+    &lt;a id=&quot;attr-whitespace-a6&quot; rev=&quot;bookmark nofollow&quot;&gt;&lt;/a&gt;
+    &lt;a id=&quot;attr-whitespace-a7&quot; rel=&quot;prev next tag alternate nofollow author help icon noreferrer prefetch search stylesheet tag&quot;&gt;&lt;/a&gt;
+
+    &lt;p id=&quot;attr-whitespace-p1&quot; title=&quot;Chinese 中文 characters&quot;&gt;&lt;/p&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;attr-hyphen&quot;&gt;
+    &lt;div id=&quot;attr-hyphen-div1&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-hyphen-div2&quot; lang=&quot;fr&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-hyphen-div3&quot; lang=&quot;en-AU&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-hyphen-div4&quot; lang=&quot;es&quot;&gt;&lt;/div&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;attr-begins&quot;&gt;
+    &lt;a id=&quot;attr-begins-a1&quot; href=&quot;http://www.example.org&quot;&gt;&lt;/a&gt;
+    &lt;a id=&quot;attr-begins-a2&quot; href=&quot;http://example.org/&quot;&gt;&lt;/a&gt;
+    &lt;a id=&quot;attr-begins-a3&quot; href=&quot;http://www.example.com/&quot;&gt;&lt;/a&gt;
+
+      &lt;div id=&quot;attr-begins-div1&quot; lang=&quot;fr&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-begins-div2&quot; lang=&quot;en-AU&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-begins-div3&quot; lang=&quot;es&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-begins-div4&quot; lang=&quot;en-US&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-begins-div5&quot; lang=&quot;en&quot;&gt;&lt;/div&gt;
+
+    &lt;p id=&quot;attr-begins-p1&quot; class=&quot; apple&quot;&gt;&lt;/p&gt; &lt;!-- Intentional space in class value &quot; apple&quot;. --&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;attr-ends&quot;&gt;
+    &lt;a id=&quot;attr-ends-a1&quot; href=&quot;http://www.example.org&quot;&gt;&lt;/a&gt;
+    &lt;a id=&quot;attr-ends-a2&quot; href=&quot;http://example.org/&quot;&gt;&lt;/a&gt;
+    &lt;a id=&quot;attr-ends-a3&quot; href=&quot;http://www.example.org&quot;&gt;&lt;/a&gt;
+
+      &lt;div id=&quot;attr-ends-div1&quot; lang=&quot;fr&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-ends-div2&quot; lang=&quot;de-CH&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-ends-div3&quot; lang=&quot;es&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-ends-div4&quot; lang=&quot;fr-CH&quot;&gt;&lt;/div&gt;
+
+    &lt;p id=&quot;attr-ends-p1&quot; class=&quot;apple &quot;&gt;&lt;/p&gt; &lt;!-- Intentional space in class value &quot;apple &quot;. --&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;attr-contains&quot;&gt;
+    &lt;a id=&quot;attr-contains-a1&quot; href=&quot;http://www.example.org&quot;&gt;&lt;/a&gt;
+    &lt;a id=&quot;attr-contains-a2&quot; href=&quot;http://example.org/&quot;&gt;&lt;/a&gt;
+    &lt;a id=&quot;attr-contains-a3&quot; href=&quot;http://www.example.com/&quot;&gt;&lt;/a&gt;
+
+      &lt;div id=&quot;attr-contains-div1&quot; lang=&quot;fr&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-contains-div2&quot; lang=&quot;en-AU&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-contains-div3&quot; lang=&quot;de-CH&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-contains-div4&quot; lang=&quot;es&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-contains-div5&quot; lang=&quot;fr-CH&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-contains-div6&quot; lang=&quot;en-US&quot;&gt;&lt;/div&gt;
+
+    &lt;p id=&quot;attr-contains-p1&quot; class=&quot; apple banana orange &quot;&gt;&lt;/p&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;pseudo-nth&quot;&gt;
+    &lt;table id=&quot;pseudo-nth-table1&quot;&gt;
+      &lt;tr id=&quot;pseudo-nth-tr1&quot;&gt;&lt;td id=&quot;pseudo-nth-td1&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth-td2&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth-td3&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth-td4&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth--td5&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth-td6&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
+      &lt;tr id=&quot;pseudo-nth-tr2&quot;&gt;&lt;td id=&quot;pseudo-nth-td7&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth-td8&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth-td9&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth-td10&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth-td11&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth-td12&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
+      &lt;tr id=&quot;pseudo-nth-tr3&quot;&gt;&lt;td id=&quot;pseudo-nth-td13&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth-td14&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth-td15&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth-td16&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth-td17&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth-td18&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
+    &lt;/table&gt;
+
+    &lt;ol id=&quot;pseudo-nth-ol1&quot;&gt;
+      &lt;li id=&quot;pseudo-nth-li1&quot;&gt;&lt;/li&gt;
+      &lt;li id=&quot;pseudo-nth-li2&quot;&gt;&lt;/li&gt;
+      &lt;li id=&quot;pseudo-nth-li3&quot;&gt;&lt;/li&gt;
+      &lt;li id=&quot;pseudo-nth-li4&quot;&gt;&lt;/li&gt;
+      &lt;li id=&quot;pseudo-nth-li5&quot;&gt;&lt;/li&gt;
+      &lt;li id=&quot;pseudo-nth-li6&quot;&gt;&lt;/li&gt;
+      &lt;li id=&quot;pseudo-nth-li7&quot;&gt;&lt;/li&gt;
+      &lt;li id=&quot;pseudo-nth-li8&quot;&gt;&lt;/li&gt;
+      &lt;li id=&quot;pseudo-nth-li9&quot;&gt;&lt;/li&gt;
+      &lt;li id=&quot;pseudo-nth-li10&quot;&gt;&lt;/li&gt;
+      &lt;li id=&quot;pseudo-nth-li11&quot;&gt;&lt;/li&gt;
+      &lt;li id=&quot;pseudo-nth-li12&quot;&gt;&lt;/li&gt;
+    &lt;/ol&gt;
+
+    &lt;p id=&quot;pseudo-nth-p1&quot;&gt;
+      &lt;span id=&quot;pseudo-nth-span1&quot;&gt;span1&lt;/span&gt;
+      &lt;em id=&quot;pseudo-nth-em1&quot;&gt;em1&lt;/em&gt;
+      &lt;!-- comment node--&gt;
+      &lt;em id=&quot;pseudo-nth-em2&quot;&gt;em2&lt;/em&gt;
+      &lt;span id=&quot;pseudo-nth-span2&quot;&gt;span2&lt;/span&gt;
+      &lt;strong id=&quot;pseudo-nth-strong1&quot;&gt;strong1&lt;/strong&gt;
+      &lt;em id=&quot;pseudo-nth-em3&quot;&gt;em3&lt;/em&gt;
+      &lt;span id=&quot;pseudo-nth-span3&quot;&gt;span3&lt;/span&gt;
+      &lt;span id=&quot;pseudo-nth-span4&quot;&gt;span4&lt;/span&gt;
+      &lt;strong id=&quot;pseudo-nth-strong2&quot;&gt;strong2&lt;/strong&gt;
+      &lt;em id=&quot;pseudo-nth-em4&quot;&gt;em4&lt;/em&gt;
+    &lt;/p&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;pseudo-first-child&quot;&gt;
+    &lt;div id=&quot;pseudo-first-child-div1&quot;&gt;&lt;/div&gt;
+    &lt;div id=&quot;pseudo-first-child-div2&quot;&gt;&lt;/div&gt;
+    &lt;div id=&quot;pseudo-first-child-div3&quot;&gt;&lt;/div&gt;
+
+    &lt;p id=&quot;pseudo-first-child-p1&quot;&gt;&lt;span id=&quot;pseudo-first-child-span1&quot;&gt;&lt;/span&gt;&lt;span id=&quot;pseudo-first-child-span2&quot;&gt;&lt;/span&gt;&lt;/p&gt;
+    &lt;p id=&quot;pseudo-first-child-p2&quot;&gt;&lt;span id=&quot;pseudo-first-child-span3&quot;&gt;&lt;/span&gt;&lt;span id=&quot;pseudo-first-child-span4&quot;&gt;&lt;/span&gt;&lt;/p&gt;
+    &lt;p id=&quot;pseudo-first-child-p3&quot;&gt;&lt;span id=&quot;pseudo-first-child-span5&quot;&gt;&lt;/span&gt;&lt;span id=&quot;pseudo-first-child-span6&quot;&gt;&lt;/span&gt;&lt;/p&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;pseudo-last-child&quot;&gt;
+    &lt;p id=&quot;pseudo-last-child-p1&quot;&gt;&lt;span id=&quot;pseudo-last-child-span1&quot;&gt;&lt;/span&gt;&lt;span id=&quot;pseudo-last-child-span2&quot;&gt;&lt;/span&gt;&lt;/p&gt;
+    &lt;p id=&quot;pseudo-last-child-p2&quot;&gt;&lt;span id=&quot;pseudo-last-child-span3&quot;&gt;&lt;/span&gt;&lt;span id=&quot;pseudo-last-child-span4&quot;&gt;&lt;/span&gt;&lt;/p&gt;
+    &lt;p id=&quot;pseudo-last-child-p3&quot;&gt;&lt;span id=&quot;pseudo-last-child-span5&quot;&gt;&lt;/span&gt;&lt;span id=&quot;pseudo-last-child-span6&quot;&gt;&lt;/span&gt;&lt;/p&gt;
+
+    &lt;div id=&quot;pseudo-last-child-div1&quot;&gt;&lt;/div&gt;
+    &lt;div id=&quot;pseudo-last-child-div2&quot;&gt;&lt;/div&gt;
+    &lt;div id=&quot;pseudo-last-child-div3&quot;&gt;&lt;/div&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;pseudo-only&quot;&gt;
+    &lt;p id=&quot;pseudo-only-p1&quot;&gt;
+      &lt;span id=&quot;pseudo-only-span1&quot;&gt;&lt;/span&gt;
+    &lt;/p&gt;
+    &lt;p id=&quot;pseudo-only-p2&quot;&gt;
+      &lt;span id=&quot;pseudo-only-span2&quot;&gt;&lt;/span&gt;
+      &lt;span id=&quot;pseudo-only-span3&quot;&gt;&lt;/span&gt;
+    &lt;/p&gt;
+    &lt;p id=&quot;pseudo-only-p3&quot;&gt;
+      &lt;span id=&quot;pseudo-only-span4&quot;&gt;&lt;/span&gt;
+      &lt;em id=&quot;pseudo-only-em1&quot;&gt;&lt;/em&gt;
+      &lt;span id=&quot;pseudo-only-span5&quot;&gt;&lt;/span&gt;
+    &lt;/p&gt;
+  &lt;/div&gt;&gt;
+
+  &lt;div id=&quot;pseudo-empty&quot;&gt;
+    &lt;p id=&quot;pseudo-empty-p1&quot;&gt;&lt;/p&gt;
+    &lt;p id=&quot;pseudo-empty-p2&quot;&gt;&lt;!-- comment node --&gt;&lt;/p&gt;
+    &lt;p id=&quot;pseudo-empty-p3&quot;&gt; &lt;/p&gt;
+    &lt;p id=&quot;pseudo-empty-p4&quot;&gt;Text node&lt;/p&gt;
+    &lt;p id=&quot;pseudo-empty-p5&quot;&gt;&lt;span id=&quot;pseudo-empty-span1&quot;&gt;&lt;/span&gt;&lt;/p&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;pseudo-link&quot;&gt;
+    &lt;a id=&quot;pseudo-link-a1&quot; href=&quot;&quot;&gt;with href&lt;/a&gt;
+    &lt;a id=&quot;pseudo-link-a2&quot; href=&quot;http://example.org/&quot;&gt;with href&lt;/a&gt;
+    &lt;a id=&quot;pseudo-link-a3&quot;&gt;without href&lt;/a&gt;
+    &lt;map name=&quot;pseudo-link-map1&quot; id=&quot;pseudo-link-map1&quot;&gt;
+      &lt;area id=&quot;pseudo-link-area1&quot; href=&quot;&quot;&gt;
+      &lt;area id=&quot;pseudo-link-area2&quot;&gt;
+    &lt;/map&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;pseudo-lang&quot;&gt;
+    &lt;div id=&quot;pseudo-lang-div1&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;pseudo-lang-div2&quot; lang=&quot;fr&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;pseudo-lang-div3&quot; lang=&quot;en-AU&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;pseudo-lang-div4&quot; lang=&quot;es&quot;&gt;&lt;/div&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;pseudo-ui&quot;&gt;
+    &lt;input id=&quot;pseudo-ui-input1&quot; type=&quot;text&quot;&gt;
+    &lt;input id=&quot;pseudo-ui-input2&quot; type=&quot;password&quot;&gt;
+    &lt;input id=&quot;pseudo-ui-input3&quot; type=&quot;radio&quot;&gt;
+    &lt;input id=&quot;pseudo-ui-input4&quot; type=&quot;radio&quot; checked=&quot;checked&quot;&gt;
+    &lt;input id=&quot;pseudo-ui-input5&quot; type=&quot;checkbox&quot;&gt;
+    &lt;input id=&quot;pseudo-ui-input6&quot; type=&quot;checkbox&quot; checked=&quot;checked&quot;&gt;
+    &lt;input id=&quot;pseudo-ui-input7&quot; type=&quot;submit&quot;&gt;
+    &lt;input id=&quot;pseudo-ui-input8&quot; type=&quot;button&quot;&gt;
+    &lt;input id=&quot;pseudo-ui-input9&quot; type=&quot;hidden&quot;&gt;
+    &lt;textarea id=&quot;pseudo-ui-textarea1&quot;&gt;&lt;/textarea&gt;
+    &lt;button id=&quot;pseudo-ui-button1&quot;&gt;Enabled&lt;/button&gt;
+
+    &lt;input id=&quot;pseudo-ui-input10&quot; disabled=&quot;disabled&quot; type=&quot;text&quot;&gt;
+    &lt;input id=&quot;pseudo-ui-input11&quot; disabled=&quot;disabled&quot; type=&quot;password&quot;&gt;
+    &lt;input id=&quot;pseudo-ui-input12&quot; disabled=&quot;disabled&quot; type=&quot;radio&quot;&gt;
+    &lt;input id=&quot;pseudo-ui-input13&quot; disabled=&quot;disabled&quot; type=&quot;radio&quot; checked=&quot;checked&quot;&gt;
+    &lt;input id=&quot;pseudo-ui-input14&quot; disabled=&quot;disabled&quot; type=&quot;checkbox&quot;&gt;
+    &lt;input id=&quot;pseudo-ui-input15&quot; disabled=&quot;disabled&quot; type=&quot;checkbox&quot; checked=&quot;checked&quot;&gt;
+    &lt;input id=&quot;pseudo-ui-input16&quot; disabled=&quot;disabled&quot; type=&quot;submit&quot;&gt;
+    &lt;input id=&quot;pseudo-ui-input17&quot; disabled=&quot;disabled&quot; type=&quot;button&quot;&gt;
+    &lt;input id=&quot;pseudo-ui-input18&quot; disabled=&quot;disabled&quot; type=&quot;hidden&quot;&gt;
+    &lt;textarea id=&quot;pseudo-ui-textarea2&quot; disabled=&quot;disabled&quot;&gt;&lt;/textarea&gt;
+    &lt;button id=&quot;pseudo-ui-button2&quot; disabled=&quot;disabled&quot;&gt;Disabled&lt;/button&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;not&quot;&gt;
+    &lt;div id=&quot;not-div1&quot;&gt;&lt;/div&gt;
+    &lt;div id=&quot;not-div2&quot;&gt;&lt;/div&gt;
+    &lt;div id=&quot;not-div3&quot;&gt;&lt;/div&gt;
+
+    &lt;p id=&quot;not-p1&quot;&gt;&lt;span id=&quot;not-span1&quot;&gt;&lt;/span&gt;&lt;em id=&quot;not-em1&quot;&gt;&lt;/em&gt;&lt;/p&gt;
+    &lt;p id=&quot;not-p2&quot;&gt;&lt;span id=&quot;not-span2&quot;&gt;&lt;/span&gt;&lt;em id=&quot;not-em2&quot;&gt;&lt;/em&gt;&lt;/p&gt;
+    &lt;p id=&quot;not-p3&quot;&gt;&lt;span id=&quot;not-span3&quot;&gt;&lt;/span&gt;&lt;em id=&quot;not-em3&quot;&gt;&lt;/em&gt;&lt;/p&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;pseudo-element&quot;&gt;All pseudo-element tests&lt;/div&gt;
+
+  &lt;div id=&quot;class&quot;&gt;
+    &lt;p id=&quot;class-p1&quot; class=&quot;foo class-p bar&quot;&gt;&lt;/p&gt;
+    &lt;p id=&quot;class-p2&quot; class=&quot;class-p foo bar&quot;&gt;&lt;/p&gt;
+    &lt;p id=&quot;class-p3&quot; class=&quot;foo bar class-p&quot;&gt;&lt;/p&gt;
+
+    &lt;!-- All permutations of the classes should match --&gt;
+    &lt;div id=&quot;class-div1&quot; class=&quot;apple orange banana&quot;&gt;&lt;/div&gt;
+    &lt;div id=&quot;class-div2&quot; class=&quot;apple banana orange&quot;&gt;&lt;/div&gt;
+    &lt;p id=&quot;class-p4&quot; class=&quot;orange apple banana&quot;&gt;&lt;/p&gt;
+    &lt;div id=&quot;class-div3&quot; class=&quot;orange banana apple&quot;&gt;&lt;/div&gt;
+    &lt;p id=&quot;class-p6&quot; class=&quot;banana apple orange&quot;&gt;&lt;/p&gt;
+    &lt;div id=&quot;class-div4&quot; class=&quot;banana orange apple&quot;&gt;&lt;/div&gt;
+    &lt;div id=&quot;class-div5&quot; class=&quot;apple orange&quot;&gt;&lt;/div&gt;
+    &lt;div id=&quot;class-div6&quot; class=&quot;apple banana&quot;&gt;&lt;/div&gt;
+    &lt;div id=&quot;class-div7&quot; class=&quot;orange banana&quot;&gt;&lt;/div&gt;
+
+    &lt;span id=&quot;class-span1&quot; class=&quot;台北Táiběi 台北&quot;&gt;&lt;/span&gt;
+    &lt;span id=&quot;class-span2&quot; class=&quot;台北&quot;&gt;&lt;/span&gt;
+
+    &lt;span id=&quot;class-span3&quot; class=&quot;foo:bar&quot;&gt;&lt;/span&gt;
+    &lt;span id=&quot;class-span4&quot; class=&quot;test.foo[5]bar&quot;&gt;&lt;/span&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;id&quot;&gt;
+    &lt;div id=&quot;id-div1&quot;&gt;&lt;/div&gt;
+    &lt;div id=&quot;id-div2&quot;&gt;&lt;/div&gt;
+
+    &lt;ul id=&quot;id-ul1&quot;&gt;
+      &lt;li id=&quot;id-li-duplicate&quot;&gt;&lt;/li&gt;
+      &lt;li id=&quot;id-li-duplicate&quot;&gt;&lt;/li&gt;
+      &lt;li id=&quot;id-li-duplicate&quot;&gt;&lt;/li&gt;
+      &lt;li id=&quot;id-li-duplicate&quot;&gt;&lt;/li&gt;
+    &lt;/ul&gt;
+
+    &lt;span id=&quot;台北Táiběi&quot;&gt;&lt;/span&gt;
+    &lt;span id=&quot;台北&quot;&gt;&lt;/span&gt;
+
+    &lt;span id=&quot;#foo:bar&quot;&gt;&lt;/span&gt;
+    &lt;span id=&quot;test.foo[5]bar&quot;&gt;&lt;/span&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;descendant&quot;&gt;
+    &lt;div id=&quot;descendant-div1&quot; class=&quot;descendant-div1&quot;&gt;
+      &lt;div id=&quot;descendant-div2&quot; class=&quot;descendant-div2&quot;&gt;
+        &lt;div id=&quot;descendant-div3&quot; class=&quot;descendant-div3&quot;&gt;
+        &lt;/div&gt;
+      &lt;/div&gt;
+    &lt;/div&gt;
+    &lt;div id=&quot;descendant-div4&quot; class=&quot;descendant-div4&quot;&gt;&lt;/div&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;child&quot;&gt;
+    &lt;div id=&quot;child-div1&quot; class=&quot;child-div1&quot;&gt;
+      &lt;div id=&quot;child-div2&quot; class=&quot;child-div2&quot;&gt;
+        &lt;div id=&quot;child-div3&quot; class=&quot;child-div3&quot;&gt;
+        &lt;/div&gt;
+      &lt;/div&gt;
+    &lt;/div&gt;
+    &lt;div id=&quot;child-div4&quot; class=&quot;child-div4&quot;&gt;&lt;/div&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;adjacent&quot;&gt;
+    &lt;div id=&quot;adjacent-div1&quot; class=&quot;adjacent-div1&quot;&gt;&lt;/div&gt;
+    &lt;div id=&quot;adjacent-div2&quot; class=&quot;adjacent-div2&quot;&gt;
+      &lt;div id=&quot;adjacent-div3&quot; class=&quot;adjacent-div3&quot;&gt;&lt;/div&gt;
+    &lt;/div&gt;
+    &lt;div id=&quot;adjacent-div4&quot; class=&quot;adjacent-div4&quot;&gt;
+      &lt;p id=&quot;adjacent-p1&quot; class=&quot;adjacent-p1&quot;&gt;&lt;/p&gt;
+      &lt;div id=&quot;adjacent-div5&quot; class=&quot;adjacent-div5&quot;&gt;&lt;/div&gt;
+    &lt;/div&gt;
+    &lt;div id=&quot;adjacent-div6&quot; class=&quot;adjacent-div6&quot;&gt;&lt;/div&gt;
+    &lt;p id=&quot;adjacent-p2&quot; class=&quot;adjacent-p2&quot;&gt;&lt;/p&gt;
+    &lt;p id=&quot;adjacent-p3&quot; class=&quot;adjacent-p3&quot;&gt;&lt;/p&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;sibling&quot;&gt;
+    &lt;div id=&quot;sibling-div1&quot; class=&quot;sibling-div&quot;&gt;&lt;/div&gt;
+    &lt;div id=&quot;sibling-div2&quot; class=&quot;sibling-div&quot;&gt;
+      &lt;div id=&quot;sibling-div3&quot; class=&quot;sibling-div&quot;&gt;&lt;/div&gt;
+    &lt;/div&gt;
+    &lt;div id=&quot;sibling-div4&quot; class=&quot;sibling-div&quot;&gt;
+      &lt;p id=&quot;sibling-p1&quot; class=&quot;sibling-p&quot;&gt;&lt;/p&gt;
+      &lt;div id=&quot;sibling-div5&quot; class=&quot;sibling-div&quot;&gt;&lt;/div&gt;
+    &lt;/div&gt;
+    &lt;div id=&quot;sibling-div6&quot; class=&quot;sibling-div&quot;&gt;&lt;/div&gt;
+    &lt;p id=&quot;sibling-p2&quot; class=&quot;sibling-p&quot;&gt;&lt;/p&gt;
+    &lt;p id=&quot;sibling-p3&quot; class=&quot;sibling-p&quot;&gt;&lt;/p&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;group&quot;&gt;
+    &lt;em id=&quot;group-em1&quot;&gt;&lt;/em&gt;
+    &lt;strong id=&quot;group-strong1&quot;&gt;&lt;/strong&gt;
+  &lt;/div&gt;
+&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesresourcesParentNodequerySelectorAllcontentxhtfromrev189470trunkLayoutTestshttptestsw3cdomnodesresourcesParentNodequerySelectorAllcontentxht"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/ParentNode-querySelector-All-content.xht (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/resources/ParentNode-querySelector-All-content.xht) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/ParentNode-querySelector-All-content.xht                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/resources/ParentNode-querySelector-All-content.xht        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,372 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html id=&quot;html&quot; lang=&quot;en&quot; xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+&lt;head id=&quot;head&quot;&gt;
+  &lt;title id=&quot;title&quot;&gt;Selectors-API Test Suite: HTML with Selectors Level 2 using TestHarness: Test Document&lt;/title&gt;
+
+  &lt;!-- Links for :link and :visited pseudo-class test --&gt;
+  &lt;link id=&quot;pseudo-link-link1&quot; href=&quot;&quot;/&gt;
+  &lt;link id=&quot;pseudo-link-link2&quot; href=&quot;http://example.org/&quot;/&gt;
+  &lt;link id=&quot;pseudo-link-link3&quot;/&gt;
+&lt;/head&gt;
+&lt;body id=&quot;body&quot;&gt;
+&lt;div id=&quot;root&quot;&gt;
+  &lt;div id=&quot;target&quot;&gt;&lt;/div&gt;
+
+  &lt;div id=&quot;universal&quot;&gt;
+    &lt;p id=&quot;universal-p1&quot;&gt;Universal selector tests inside element with &lt;code id=&quot;universal-code1&quot;&gt;id=&quot;universal&quot;&lt;/code&gt;.&lt;/p&gt;
+    &lt;hr id=&quot;universal-hr1&quot;/&gt;
+    &lt;pre id=&quot;universal-pre1&quot;&gt;Some preformatted text with some &lt;span id=&quot;universal-span1&quot;&gt;embedded code&lt;/span&gt;&lt;/pre&gt;
+    &lt;p id=&quot;universal-p2&quot;&gt;This is a normal link: &lt;a id=&quot;universal-a1&quot; href=&quot;http://www.w3.org/&quot;&gt;W3C&lt;/a&gt;&lt;/p&gt;
+    &lt;address id=&quot;universal-address1&quot;&gt;Some more nested elements &lt;code id=&quot;universal-code2&quot;&gt;&lt;a href=&quot;#&quot; id=&quot;universal-a2&quot;&gt;code hyperlink&lt;/a&gt;&lt;/code&gt;&lt;/address&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;attr-presence&quot;&gt;
+    &lt;div class=&quot;attr-presence-div1&quot; id=&quot;attr-presence-div1&quot; align=&quot;center&quot;&gt;&lt;/div&gt;
+    &lt;div class=&quot;attr-presence-div2&quot; id=&quot;attr-presence-div2&quot; align=&quot;&quot;&gt;&lt;/div&gt;
+    &lt;div class=&quot;attr-presence-div3&quot; id=&quot;attr-presence-div3&quot; valign=&quot;center&quot;&gt;&lt;/div&gt;
+    &lt;div class=&quot;attr-presence-div4&quot; id=&quot;attr-presence-div4&quot; alignv=&quot;center&quot;&gt;&lt;/div&gt;
+    &lt;p id=&quot;attr-presence-p1&quot;&gt;&lt;a  id=&quot;attr-presence-a1&quot; tItLe=&quot;&quot;&gt;&lt;/a&gt;&lt;span id=&quot;attr-presence-span1&quot; TITLE=&quot;attr-presence-span1&quot;&gt;&lt;/span&gt;&lt;/p&gt;
+    &lt;pre id=&quot;attr-presence-pre1&quot; data-attr-presence=&quot;pre1&quot;&gt;&lt;/pre&gt;
+    &lt;blockquote id=&quot;attr-presence-blockquote1&quot; data-attr-presence=&quot;blockquote1&quot;&gt;&lt;/blockquote&gt;
+    &lt;ul id=&quot;attr-presence-ul1&quot; data-中文=&quot;&quot;&gt;&lt;/ul&gt;
+
+    &lt;select id=&quot;attr-presence-select1&quot;&gt;
+      &lt;option id=&quot;attr-presence-select1-option1&quot;&gt;A&lt;/option&gt;
+      &lt;option id=&quot;attr-presence-select1-option2&quot;&gt;B&lt;/option&gt;
+      &lt;option id=&quot;attr-presence-select1-option3&quot;&gt;C&lt;/option&gt;
+      &lt;option id=&quot;attr-presence-select1-option4&quot;&gt;D&lt;/option&gt;
+    &lt;/select&gt;
+    &lt;select id=&quot;attr-presence-select2&quot;&gt;
+      &lt;option id=&quot;attr-presence-select2-option1&quot;&gt;A&lt;/option&gt;
+      &lt;option id=&quot;attr-presence-select2-option2&quot;&gt;B&lt;/option&gt;
+      &lt;option id=&quot;attr-presence-select2-option3&quot;&gt;C&lt;/option&gt;
+      &lt;option id=&quot;attr-presence-select2-option4&quot; selected=&quot;selected&quot;&gt;D&lt;/option&gt;
+    &lt;/select&gt;
+    &lt;select id=&quot;attr-presence-select3&quot; multiple=&quot;multiple&quot;&gt;
+      &lt;option id=&quot;attr-presence-select3-option1&quot;&gt;A&lt;/option&gt;
+      &lt;option id=&quot;attr-presence-select3-option2&quot; selected=&quot;&quot;&gt;B&lt;/option&gt;
+      &lt;option id=&quot;attr-presence-select3-option3&quot; selected=&quot;selected&quot;&gt;C&lt;/option&gt;
+      &lt;option id=&quot;attr-presence-select3-option4&quot;&gt;D&lt;/option&gt;
+    &lt;/select&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;attr-value&quot;&gt;
+    &lt;div id=&quot;attr-value-div1&quot; align=&quot;center&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-value-div2&quot; align=&quot;&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-value-div3&quot; data-attr-value=&quot;&amp;#xE9;&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-value-div4&quot; data-attr-value_foo=&quot;&amp;#xE9;&quot;&gt;&lt;/div&gt;
+
+    &lt;form id=&quot;attr-value-form1&quot;&gt;
+      &lt;input id=&quot;attr-value-input1&quot; type=&quot;text&quot;/&gt;
+      &lt;input id=&quot;attr-value-input2&quot; type=&quot;password&quot;/&gt;
+      &lt;input id=&quot;attr-value-input3&quot; type=&quot;hidden&quot;/&gt;
+      &lt;input id=&quot;attr-value-input4&quot; type=&quot;radio&quot;/&gt;
+      &lt;input id=&quot;attr-value-input5&quot; type=&quot;checkbox&quot;/&gt;
+      &lt;input id=&quot;attr-value-input6&quot; type=&quot;radio&quot;/&gt;
+      &lt;input id=&quot;attr-value-input7&quot; type=&quot;text&quot;/&gt;
+      &lt;input id=&quot;attr-value-input8&quot; type=&quot;hidden&quot;/&gt;
+      &lt;input id=&quot;attr-value-input9&quot; type=&quot;radio&quot;/&gt;
+    &lt;/form&gt;
+
+    &lt;div id=&quot;attr-value-div5&quot; data-attr-value=&quot;中文&quot;&gt;&lt;/div&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;attr-whitespace&quot;&gt;
+    &lt;div id=&quot;attr-whitespace-div1&quot; class=&quot;foo div1 bar&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-whitespace-div2&quot; class=&quot;&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-whitespace-div3&quot; class=&quot;foo div3 bar&quot;&gt;&lt;/div&gt;
+
+      &lt;div id=&quot;attr-whitespace-div4&quot; data-attr-whitespace=&quot;foo &amp;#xE9; bar&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-whitespace-div5&quot; data-attr-whitespace_foo=&quot;&amp;#xE9; foo&quot;&gt;&lt;/div&gt;
+
+    &lt;a id=&quot;attr-whitespace-a1&quot; rel=&quot;next bookmark&quot;&gt;&lt;/a&gt;
+    &lt;a id=&quot;attr-whitespace-a2&quot; rel=&quot;tag nofollow&quot;&gt;&lt;/a&gt;
+    &lt;a id=&quot;attr-whitespace-a3&quot; rel=&quot;tag bookmark&quot;&gt;&lt;/a&gt;
+    &lt;a id=&quot;attr-whitespace-a4&quot; rel=&quot;book mark&quot;&gt;&lt;/a&gt; &lt;!-- Intentional space in &quot;book mark&quot; --&gt;
+    &lt;a id=&quot;attr-whitespace-a5&quot; rel=&quot;nofollow&quot;&gt;&lt;/a&gt;
+    &lt;a id=&quot;attr-whitespace-a6&quot; rev=&quot;bookmark nofollow&quot;&gt;&lt;/a&gt;
+    &lt;a id=&quot;attr-whitespace-a7&quot; rel=&quot;prev next tag alternate nofollow author help icon noreferrer prefetch search stylesheet tag&quot;&gt;&lt;/a&gt;
+
+    &lt;p id=&quot;attr-whitespace-p1&quot; title=&quot;Chinese 中文 characters&quot;&gt;&lt;/p&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;attr-hyphen&quot;&gt;
+    &lt;div id=&quot;attr-hyphen-div1&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-hyphen-div2&quot; lang=&quot;fr&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-hyphen-div3&quot; lang=&quot;en-AU&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-hyphen-div4&quot; lang=&quot;es&quot;&gt;&lt;/div&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;attr-begins&quot;&gt;
+    &lt;a id=&quot;attr-begins-a1&quot; href=&quot;http://www.example.org&quot;&gt;&lt;/a&gt;
+    &lt;a id=&quot;attr-begins-a2&quot; href=&quot;http://example.org/&quot;&gt;&lt;/a&gt;
+    &lt;a id=&quot;attr-begins-a3&quot; href=&quot;http://www.example.com/&quot;&gt;&lt;/a&gt;
+
+      &lt;div id=&quot;attr-begins-div1&quot; lang=&quot;fr&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-begins-div2&quot; lang=&quot;en-AU&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-begins-div3&quot; lang=&quot;es&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-begins-div4&quot; lang=&quot;en-US&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-begins-div5&quot; lang=&quot;en&quot;&gt;&lt;/div&gt;
+
+    &lt;p id=&quot;attr-begins-p1&quot; class=&quot; apple&quot;&gt;&lt;/p&gt; &lt;!-- Intentional space in class value &quot; apple&quot;. --&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;attr-ends&quot;&gt;
+    &lt;a id=&quot;attr-ends-a1&quot; href=&quot;http://www.example.org&quot;&gt;&lt;/a&gt;
+    &lt;a id=&quot;attr-ends-a2&quot; href=&quot;http://example.org/&quot;&gt;&lt;/a&gt;
+    &lt;a id=&quot;attr-ends-a3&quot; href=&quot;http://www.example.org&quot;&gt;&lt;/a&gt;
+
+      &lt;div id=&quot;attr-ends-div1&quot; lang=&quot;fr&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-ends-div2&quot; lang=&quot;de-CH&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-ends-div3&quot; lang=&quot;es&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-ends-div4&quot; lang=&quot;fr-CH&quot;&gt;&lt;/div&gt;
+
+    &lt;p id=&quot;attr-ends-p1&quot; class=&quot;apple &quot;&gt;&lt;/p&gt; &lt;!-- Intentional space in class value &quot;apple &quot;. --&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;attr-contains&quot;&gt;
+    &lt;a id=&quot;attr-contains-a1&quot; href=&quot;http://www.example.org&quot;&gt;&lt;/a&gt;
+    &lt;a id=&quot;attr-contains-a2&quot; href=&quot;http://example.org/&quot;&gt;&lt;/a&gt;
+    &lt;a id=&quot;attr-contains-a3&quot; href=&quot;http://www.example.com/&quot;&gt;&lt;/a&gt;
+
+      &lt;div id=&quot;attr-contains-div1&quot; lang=&quot;fr&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-contains-div2&quot; lang=&quot;en-AU&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-contains-div3&quot; lang=&quot;de-CH&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-contains-div4&quot; lang=&quot;es&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-contains-div5&quot; lang=&quot;fr-CH&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;attr-contains-div6&quot; lang=&quot;en-US&quot;&gt;&lt;/div&gt;
+
+    &lt;p id=&quot;attr-contains-p1&quot; class=&quot; apple banana orange &quot;&gt;&lt;/p&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;pseudo-nth&quot;&gt;
+    &lt;table id=&quot;pseudo-nth-table1&quot;&gt;
+      &lt;tr id=&quot;pseudo-nth-tr1&quot;&gt;&lt;td id=&quot;pseudo-nth-td1&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth-td2&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth-td3&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth-td4&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth--td5&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth-td6&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
+      &lt;tr id=&quot;pseudo-nth-tr2&quot;&gt;&lt;td id=&quot;pseudo-nth-td7&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth-td8&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth-td9&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth-td10&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth-td11&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth-td12&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
+      &lt;tr id=&quot;pseudo-nth-tr3&quot;&gt;&lt;td id=&quot;pseudo-nth-td13&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth-td14&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth-td15&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth-td16&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth-td17&quot;&gt;&lt;/td&gt;&lt;td id=&quot;pseudo-nth-td18&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
+    &lt;/table&gt;
+
+    &lt;ol id=&quot;pseudo-nth-ol1&quot;&gt;
+      &lt;li id=&quot;pseudo-nth-li1&quot;&gt;&lt;/li&gt;
+      &lt;li id=&quot;pseudo-nth-li2&quot;&gt;&lt;/li&gt;
+      &lt;li id=&quot;pseudo-nth-li3&quot;&gt;&lt;/li&gt;
+      &lt;li id=&quot;pseudo-nth-li4&quot;&gt;&lt;/li&gt;
+      &lt;li id=&quot;pseudo-nth-li5&quot;&gt;&lt;/li&gt;
+      &lt;li id=&quot;pseudo-nth-li6&quot;&gt;&lt;/li&gt;
+      &lt;li id=&quot;pseudo-nth-li7&quot;&gt;&lt;/li&gt;
+      &lt;li id=&quot;pseudo-nth-li8&quot;&gt;&lt;/li&gt;
+      &lt;li id=&quot;pseudo-nth-li9&quot;&gt;&lt;/li&gt;
+      &lt;li id=&quot;pseudo-nth-li10&quot;&gt;&lt;/li&gt;
+      &lt;li id=&quot;pseudo-nth-li11&quot;&gt;&lt;/li&gt;
+      &lt;li id=&quot;pseudo-nth-li12&quot;&gt;&lt;/li&gt;
+    &lt;/ol&gt;
+
+    &lt;p id=&quot;pseudo-nth-p1&quot;&gt;
+      &lt;span id=&quot;pseudo-nth-span1&quot;&gt;span1&lt;/span&gt;
+      &lt;em id=&quot;pseudo-nth-em1&quot;&gt;em1&lt;/em&gt;
+      &lt;!-- comment node--&gt;
+      &lt;em id=&quot;pseudo-nth-em2&quot;&gt;em2&lt;/em&gt;
+      &lt;span id=&quot;pseudo-nth-span2&quot;&gt;span2&lt;/span&gt;
+      &lt;strong id=&quot;pseudo-nth-strong1&quot;&gt;strong1&lt;/strong&gt;
+      &lt;em id=&quot;pseudo-nth-em3&quot;&gt;em3&lt;/em&gt;
+      &lt;span id=&quot;pseudo-nth-span3&quot;&gt;span3&lt;/span&gt;
+      &lt;span id=&quot;pseudo-nth-span4&quot;&gt;span4&lt;/span&gt;
+      &lt;strong id=&quot;pseudo-nth-strong2&quot;&gt;strong2&lt;/strong&gt;
+      &lt;em id=&quot;pseudo-nth-em4&quot;&gt;em4&lt;/em&gt;
+    &lt;/p&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;pseudo-first-child&quot;&gt;
+    &lt;div id=&quot;pseudo-first-child-div1&quot;&gt;&lt;/div&gt;
+    &lt;div id=&quot;pseudo-first-child-div2&quot;&gt;&lt;/div&gt;
+    &lt;div id=&quot;pseudo-first-child-div3&quot;&gt;&lt;/div&gt;
+
+    &lt;p id=&quot;pseudo-first-child-p1&quot;&gt;&lt;span id=&quot;pseudo-first-child-span1&quot;&gt;&lt;/span&gt;&lt;span id=&quot;pseudo-first-child-span2&quot;&gt;&lt;/span&gt;&lt;/p&gt;
+    &lt;p id=&quot;pseudo-first-child-p2&quot;&gt;&lt;span id=&quot;pseudo-first-child-span3&quot;&gt;&lt;/span&gt;&lt;span id=&quot;pseudo-first-child-span4&quot;&gt;&lt;/span&gt;&lt;/p&gt;
+    &lt;p id=&quot;pseudo-first-child-p3&quot;&gt;&lt;span id=&quot;pseudo-first-child-span5&quot;&gt;&lt;/span&gt;&lt;span id=&quot;pseudo-first-child-span6&quot;&gt;&lt;/span&gt;&lt;/p&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;pseudo-last-child&quot;&gt;
+    &lt;p id=&quot;pseudo-last-child-p1&quot;&gt;&lt;span id=&quot;pseudo-last-child-span1&quot;&gt;&lt;/span&gt;&lt;span id=&quot;pseudo-last-child-span2&quot;&gt;&lt;/span&gt;&lt;/p&gt;
+    &lt;p id=&quot;pseudo-last-child-p2&quot;&gt;&lt;span id=&quot;pseudo-last-child-span3&quot;&gt;&lt;/span&gt;&lt;span id=&quot;pseudo-last-child-span4&quot;&gt;&lt;/span&gt;&lt;/p&gt;
+    &lt;p id=&quot;pseudo-last-child-p3&quot;&gt;&lt;span id=&quot;pseudo-last-child-span5&quot;&gt;&lt;/span&gt;&lt;span id=&quot;pseudo-last-child-span6&quot;&gt;&lt;/span&gt;&lt;/p&gt;
+
+    &lt;div id=&quot;pseudo-last-child-div1&quot;&gt;&lt;/div&gt;
+    &lt;div id=&quot;pseudo-last-child-div2&quot;&gt;&lt;/div&gt;
+    &lt;div id=&quot;pseudo-last-child-div3&quot;&gt;&lt;/div&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;pseudo-only&quot;&gt;
+    &lt;p id=&quot;pseudo-only-p1&quot;&gt;
+      &lt;span id=&quot;pseudo-only-span1&quot;&gt;&lt;/span&gt;
+    &lt;/p&gt;
+    &lt;p id=&quot;pseudo-only-p2&quot;&gt;
+      &lt;span id=&quot;pseudo-only-span2&quot;&gt;&lt;/span&gt;
+      &lt;span id=&quot;pseudo-only-span3&quot;&gt;&lt;/span&gt;
+    &lt;/p&gt;
+    &lt;p id=&quot;pseudo-only-p3&quot;&gt;
+      &lt;span id=&quot;pseudo-only-span4&quot;&gt;&lt;/span&gt;
+      &lt;em id=&quot;pseudo-only-em1&quot;&gt;&lt;/em&gt;
+      &lt;span id=&quot;pseudo-only-span5&quot;&gt;&lt;/span&gt;
+    &lt;/p&gt;
+  &lt;/div&gt;&gt;
+
+  &lt;div id=&quot;pseudo-empty&quot;&gt;
+    &lt;p id=&quot;pseudo-empty-p1&quot;&gt;&lt;/p&gt;
+    &lt;p id=&quot;pseudo-empty-p2&quot;&gt;&lt;!-- comment node --&gt;&lt;/p&gt;
+    &lt;p id=&quot;pseudo-empty-p3&quot;&gt; &lt;/p&gt;
+    &lt;p id=&quot;pseudo-empty-p4&quot;&gt;Text node&lt;/p&gt;
+    &lt;p id=&quot;pseudo-empty-p5&quot;&gt;&lt;span id=&quot;pseudo-empty-span1&quot;&gt;&lt;/span&gt;&lt;/p&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;pseudo-link&quot;&gt;
+    &lt;a id=&quot;pseudo-link-a1&quot; href=&quot;&quot;&gt;with href&lt;/a&gt;
+    &lt;a id=&quot;pseudo-link-a2&quot; href=&quot;http://example.org/&quot;&gt;with href&lt;/a&gt;
+    &lt;a id=&quot;pseudo-link-a3&quot;&gt;without href&lt;/a&gt;
+    &lt;map name=&quot;pseudo-link-map1&quot; id=&quot;pseudo-link-map1&quot;&gt;
+      &lt;area id=&quot;pseudo-link-area1&quot; href=&quot;&quot;/&gt;
+      &lt;area id=&quot;pseudo-link-area2&quot;/&gt;
+    &lt;/map&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;pseudo-lang&quot;&gt;
+    &lt;div id=&quot;pseudo-lang-div1&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;pseudo-lang-div2&quot; lang=&quot;fr&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;pseudo-lang-div3&quot; lang=&quot;en-AU&quot;&gt;&lt;/div&gt;
+      &lt;div id=&quot;pseudo-lang-div4&quot; lang=&quot;es&quot;&gt;&lt;/div&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;pseudo-ui&quot;&gt;
+    &lt;input id=&quot;pseudo-ui-input1&quot; type=&quot;text&quot;/&gt;
+    &lt;input id=&quot;pseudo-ui-input2&quot; type=&quot;password&quot;/&gt;
+    &lt;input id=&quot;pseudo-ui-input3&quot; type=&quot;radio&quot;/&gt;
+    &lt;input id=&quot;pseudo-ui-input4&quot; type=&quot;radio&quot; checked=&quot;checked&quot;/&gt;
+    &lt;input id=&quot;pseudo-ui-input5&quot; type=&quot;checkbox&quot;/&gt;
+    &lt;input id=&quot;pseudo-ui-input6&quot; type=&quot;checkbox&quot; checked=&quot;checked&quot;/&gt;
+    &lt;input id=&quot;pseudo-ui-input7&quot; type=&quot;submit&quot;/&gt;
+    &lt;input id=&quot;pseudo-ui-input8&quot; type=&quot;button&quot;/&gt;
+    &lt;input id=&quot;pseudo-ui-input9&quot; type=&quot;hidden&quot;/&gt;
+    &lt;textarea id=&quot;pseudo-ui-textarea1&quot;&gt;&lt;/textarea&gt;
+    &lt;button id=&quot;pseudo-ui-button1&quot;&gt;Enabled&lt;/button&gt;
+
+    &lt;input id=&quot;pseudo-ui-input10&quot; disabled=&quot;disabled&quot; type=&quot;text&quot;/&gt;
+    &lt;input id=&quot;pseudo-ui-input11&quot; disabled=&quot;disabled&quot; type=&quot;password&quot;/&gt;
+    &lt;input id=&quot;pseudo-ui-input12&quot; disabled=&quot;disabled&quot; type=&quot;radio&quot;/&gt;
+    &lt;input id=&quot;pseudo-ui-input13&quot; disabled=&quot;disabled&quot; type=&quot;radio&quot; checked=&quot;checked&quot;/&gt;
+    &lt;input id=&quot;pseudo-ui-input14&quot; disabled=&quot;disabled&quot; type=&quot;checkbox&quot;/&gt;
+    &lt;input id=&quot;pseudo-ui-input15&quot; disabled=&quot;disabled&quot; type=&quot;checkbox&quot; checked=&quot;checked&quot;/&gt;
+    &lt;input id=&quot;pseudo-ui-input16&quot; disabled=&quot;disabled&quot; type=&quot;submit&quot;/&gt;
+    &lt;input id=&quot;pseudo-ui-input17&quot; disabled=&quot;disabled&quot; type=&quot;button&quot;/&gt;
+    &lt;input id=&quot;pseudo-ui-input18&quot; disabled=&quot;disabled&quot; type=&quot;hidden&quot;/&gt;
+    &lt;textarea id=&quot;pseudo-ui-textarea2&quot; disabled=&quot;disabled&quot;&gt;&lt;/textarea&gt;
+    &lt;button id=&quot;pseudo-ui-button2&quot; disabled=&quot;disabled&quot;&gt;Disabled&lt;/button&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;not&quot;&gt;
+    &lt;div id=&quot;not-div1&quot;&gt;&lt;/div&gt;
+    &lt;div id=&quot;not-div2&quot;&gt;&lt;/div&gt;
+    &lt;div id=&quot;not-div3&quot;&gt;&lt;/div&gt;
+
+    &lt;p id=&quot;not-p1&quot;&gt;&lt;span id=&quot;not-span1&quot;&gt;&lt;/span&gt;&lt;em id=&quot;not-em1&quot;&gt;&lt;/em&gt;&lt;/p&gt;
+    &lt;p id=&quot;not-p2&quot;&gt;&lt;span id=&quot;not-span2&quot;&gt;&lt;/span&gt;&lt;em id=&quot;not-em2&quot;&gt;&lt;/em&gt;&lt;/p&gt;
+    &lt;p id=&quot;not-p3&quot;&gt;&lt;span id=&quot;not-span3&quot;&gt;&lt;/span&gt;&lt;em id=&quot;not-em3&quot;&gt;&lt;/em&gt;&lt;/p&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;pseudo-element&quot;&gt;All pseudo-element tests&lt;/div&gt;
+
+  &lt;div id=&quot;class&quot;&gt;
+    &lt;p id=&quot;class-p1&quot; class=&quot;foo class-p bar&quot;&gt;&lt;/p&gt;
+    &lt;p id=&quot;class-p2&quot; class=&quot;class-p foo bar&quot;&gt;&lt;/p&gt;
+    &lt;p id=&quot;class-p3&quot; class=&quot;foo bar class-p&quot;&gt;&lt;/p&gt;
+
+    &lt;!-- All permutations of the classes should match --&gt;
+    &lt;div id=&quot;class-div1&quot; class=&quot;apple orange banana&quot;&gt;&lt;/div&gt;
+    &lt;div id=&quot;class-div2&quot; class=&quot;apple banana orange&quot;&gt;&lt;/div&gt;
+    &lt;p id=&quot;class-p4&quot; class=&quot;orange apple banana&quot;&gt;&lt;/p&gt;
+    &lt;div id=&quot;class-div3&quot; class=&quot;orange banana apple&quot;&gt;&lt;/div&gt;
+    &lt;p id=&quot;class-p6&quot; class=&quot;banana apple orange&quot;&gt;&lt;/p&gt;
+    &lt;div id=&quot;class-div4&quot; class=&quot;banana orange apple&quot;&gt;&lt;/div&gt;
+    &lt;div id=&quot;class-div5&quot; class=&quot;apple orange&quot;&gt;&lt;/div&gt;
+    &lt;div id=&quot;class-div6&quot; class=&quot;apple banana&quot;&gt;&lt;/div&gt;
+    &lt;div id=&quot;class-div7&quot; class=&quot;orange banana&quot;&gt;&lt;/div&gt;
+
+    &lt;span id=&quot;class-span1&quot; class=&quot;台北Táiběi 台北&quot;&gt;&lt;/span&gt;
+    &lt;span id=&quot;class-span2&quot; class=&quot;台北&quot;&gt;&lt;/span&gt;
+
+    &lt;span id=&quot;class-span3&quot; class=&quot;foo:bar&quot;&gt;&lt;/span&gt;
+    &lt;span id=&quot;class-span4&quot; class=&quot;test.foo[5]bar&quot;&gt;&lt;/span&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;id&quot;&gt;
+    &lt;div id=&quot;id-div1&quot;&gt;&lt;/div&gt;
+    &lt;div id=&quot;id-div2&quot;&gt;&lt;/div&gt;
+
+    &lt;ul id=&quot;id-ul1&quot;&gt;
+      &lt;li id=&quot;id-li-duplicate&quot;&gt;&lt;/li&gt;
+      &lt;li id=&quot;id-li-duplicate&quot;&gt;&lt;/li&gt;
+      &lt;li id=&quot;id-li-duplicate&quot;&gt;&lt;/li&gt;
+      &lt;li id=&quot;id-li-duplicate&quot;&gt;&lt;/li&gt;
+    &lt;/ul&gt;
+
+    &lt;span id=&quot;台北Táiběi&quot;&gt;&lt;/span&gt;
+    &lt;span id=&quot;台北&quot;&gt;&lt;/span&gt;
+
+    &lt;span id=&quot;#foo:bar&quot;&gt;&lt;/span&gt;
+    &lt;span id=&quot;test.foo[5]bar&quot;&gt;&lt;/span&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;descendant&quot;&gt;
+    &lt;div id=&quot;descendant-div1&quot; class=&quot;descendant-div1&quot;&gt;
+      &lt;div id=&quot;descendant-div2&quot; class=&quot;descendant-div2&quot;&gt;
+        &lt;div id=&quot;descendant-div3&quot; class=&quot;descendant-div3&quot;&gt;
+        &lt;/div&gt;
+      &lt;/div&gt;
+    &lt;/div&gt;
+    &lt;div id=&quot;descendant-div4&quot; class=&quot;descendant-div4&quot;&gt;&lt;/div&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;child&quot;&gt;
+    &lt;div id=&quot;child-div1&quot; class=&quot;child-div1&quot;&gt;
+      &lt;div id=&quot;child-div2&quot; class=&quot;child-div2&quot;&gt;
+        &lt;div id=&quot;child-div3&quot; class=&quot;child-div3&quot;&gt;
+        &lt;/div&gt;
+      &lt;/div&gt;
+    &lt;/div&gt;
+    &lt;div id=&quot;child-div4&quot; class=&quot;child-div4&quot;&gt;&lt;/div&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;adjacent&quot;&gt;
+    &lt;div id=&quot;adjacent-div1&quot; class=&quot;adjacent-div1&quot;&gt;&lt;/div&gt;
+    &lt;div id=&quot;adjacent-div2&quot; class=&quot;adjacent-div2&quot;&gt;
+      &lt;div id=&quot;adjacent-div3&quot; class=&quot;adjacent-div3&quot;&gt;&lt;/div&gt;
+    &lt;/div&gt;
+    &lt;div id=&quot;adjacent-div4&quot; class=&quot;adjacent-div4&quot;&gt;
+      &lt;p id=&quot;adjacent-p1&quot; class=&quot;adjacent-p1&quot;&gt;&lt;/p&gt;
+      &lt;div id=&quot;adjacent-div5&quot; class=&quot;adjacent-div5&quot;&gt;&lt;/div&gt;
+    &lt;/div&gt;
+    &lt;div id=&quot;adjacent-div6&quot; class=&quot;adjacent-div6&quot;&gt;&lt;/div&gt;
+    &lt;p id=&quot;adjacent-p2&quot; class=&quot;adjacent-p2&quot;&gt;&lt;/p&gt;
+    &lt;p id=&quot;adjacent-p3&quot; class=&quot;adjacent-p3&quot;&gt;&lt;/p&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;sibling&quot;&gt;
+    &lt;div id=&quot;sibling-div1&quot; class=&quot;sibling-div&quot;&gt;&lt;/div&gt;
+    &lt;div id=&quot;sibling-div2&quot; class=&quot;sibling-div&quot;&gt;
+      &lt;div id=&quot;sibling-div3&quot; class=&quot;sibling-div&quot;&gt;&lt;/div&gt;
+    &lt;/div&gt;
+    &lt;div id=&quot;sibling-div4&quot; class=&quot;sibling-div&quot;&gt;
+      &lt;p id=&quot;sibling-p1&quot; class=&quot;sibling-p&quot;&gt;&lt;/p&gt;
+      &lt;div id=&quot;sibling-div5&quot; class=&quot;sibling-div&quot;&gt;&lt;/div&gt;
+    &lt;/div&gt;
+    &lt;div id=&quot;sibling-div6&quot; class=&quot;sibling-div&quot;&gt;&lt;/div&gt;
+    &lt;p id=&quot;sibling-p2&quot; class=&quot;sibling-p&quot;&gt;&lt;/p&gt;
+    &lt;p id=&quot;sibling-p3&quot; class=&quot;sibling-p&quot;&gt;&lt;/p&gt;
+  &lt;/div&gt;
+
+  &lt;div id=&quot;group&quot;&gt;
+    &lt;em id=&quot;group-em1&quot;&gt;&lt;/em&gt;
+    &lt;strong id=&quot;group-strong1&quot;&gt;&lt;/strong&gt;
+  &lt;/div&gt;
+&lt;/div&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomnodesselectorsjsfromrev189470trunkLayoutTestshttptestsw3cdomnodesselectorsjs"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/selectors.js (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/nodes/selectors.js) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/selectors.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/nodes/selectors.js        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,721 @@
</span><ins>+// Bit-mapped flags to indicate which tests the selector is suitable for
+var TEST_QSA              = 0x01; // querySelector() and querySelectorAll() tests
+var TEST_FIND             = 0x04; // find() and findAll() tests, may be unsuitable for querySelector[All]
+var TEST_MATCH            = 0x10; // matches() tests
+
+/*
+ * All of these invalid selectors should result in a SyntaxError being thrown by the APIs.
+ *
+ *   name:     A descriptive name of the selector being tested
+ *   selector: The selector to test
+ */
+var invalidSelectors = [
+  {name: &quot;Empty String&quot;,                 selector: &quot;&quot;},
+  {name: &quot;Invalid character&quot;,            selector: &quot;[&quot;},
+  {name: &quot;Invalid character&quot;,            selector: &quot;]&quot;},
+  {name: &quot;Invalid character&quot;,            selector: &quot;(&quot;},
+  {name: &quot;Invalid character&quot;,            selector: &quot;)&quot;},
+  {name: &quot;Invalid character&quot;,            selector: &quot;{&quot;},
+  {name: &quot;Invalid character&quot;,            selector: &quot;}&quot;},
+  {name: &quot;Invalid character&quot;,            selector: &quot;&lt;&quot;},
+  {name: &quot;Invalid character&quot;,            selector: &quot;&gt;&quot;},
+  {name: &quot;Invalid ID&quot;,                   selector: &quot;#&quot;},
+  {name: &quot;Invalid group of selectors&quot;,   selector: &quot;div,&quot;},
+  {name: &quot;Invalid class&quot;,                selector: &quot;.&quot;},
+  {name: &quot;Invalid class&quot;,                selector: &quot;.5cm&quot;},
+  {name: &quot;Invalid class&quot;,                selector: &quot;..test&quot;},
+  {name: &quot;Invalid class&quot;,                selector: &quot;.foo..quux&quot;},
+  {name: &quot;Invalid class&quot;,                selector: &quot;.bar.&quot;},
+  {name: &quot;Invalid combinator&quot;,           selector: &quot;div &amp; address, p&quot;},
+  {name: &quot;Invalid combinator&quot;,           selector: &quot;div &gt;&gt; address, p&quot;},
+  {name: &quot;Invalid combinator&quot;,           selector: &quot;div ++ address, p&quot;},
+  {name: &quot;Invalid combinator&quot;,           selector: &quot;div ~~ address, p&quot;},
+  {name: &quot;Invalid [att=value] selector&quot;, selector: &quot;[*=test]&quot;},
+  {name: &quot;Invalid [att=value] selector&quot;, selector: &quot;[*|*=test]&quot;},
+  {name: &quot;Invalid [att=value] selector&quot;, selector: &quot;[class= space unquoted ]&quot;},
+  {name: &quot;Unknown pseudo-class&quot;,         selector: &quot;div:example&quot;},
+  {name: &quot;Unknown pseudo-class&quot;,         selector: &quot;:example&quot;},
+  {name: &quot;Unknown pseudo-element&quot;,       selector: &quot;div::example&quot;},
+  {name: &quot;Unknown pseudo-element&quot;,       selector: &quot;::example&quot;},
+  {name: &quot;Invalid pseudo-element&quot;,       selector: &quot;:::before&quot;},
+  {name: &quot;Undeclared namespace&quot;,         selector: &quot;ns|div&quot;},
+  {name: &quot;Undeclared namespace&quot;,         selector: &quot;:not(ns|div)&quot;},
+  {name: &quot;Invalid namespace&quot;,            selector: &quot;^|div&quot;},
+  {name: &quot;Invalid namespace&quot;,            selector: &quot;$|div&quot;}
+];
+
+/*
+ * All of these should be valid selectors, expected to match zero or more elements in the document.
+ * None should throw any errors.
+ *
+ *   name:     A descriptive name of the selector being tested
+ *   selector: The selector to test
+ *   expect:   A list of IDs of the elements expected to be matched. List must be given in tree order.
+ *   exclude:  An array of contexts to exclude from testing. The valid values are:
+ *             [&quot;document&quot;, &quot;element&quot;, &quot;fragment&quot;, &quot;detached&quot;, &quot;html&quot;, &quot;xhtml&quot;]
+ *             The &quot;html&quot; and &quot;xhtml&quot; values represent the type of document being queried. These are useful
+ *             for tests that are affected by differences between HTML and XML, such as case sensitivity.
+ *   level:    An integer indicating the CSS or Selectors level in which the selector being tested was introduced.
+ *   testType: A bit-mapped flag indicating the type of test.
+ *
+ * Note: Interactive pseudo-classes (:active :hover and :focus) have not been tested in this test suite.
+ */
+var validSelectors = [
+  // Type Selector
+  {name: &quot;Type selector, matching html element&quot;, selector: &quot;html&quot;, expect: [&quot;html&quot;],          exclude: [&quot;element&quot;, &quot;fragment&quot;, &quot;detached&quot;], level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Type selector, matching html element&quot;, selector: &quot;html&quot;, expect: [] /*no matches*/, exclude: [&quot;document&quot;],                        level: 1, testType: TEST_QSA},
+  {name: &quot;Type selector, matching body element&quot;, selector: &quot;body&quot;, expect: [&quot;body&quot;],          exclude: [&quot;element&quot;, &quot;fragment&quot;, &quot;detached&quot;], level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Type selector, matching body element&quot;, selector: &quot;body&quot;, expect: [] /*no matches*/, exclude: [&quot;document&quot;],                        level: 1, testType: TEST_QSA},
+
+  // Universal Selector
+  // Testing &quot;*&quot; for entire an entire context node is handled separately.
+  {name: &quot;Universal selector, matching all children of element with specified ID&quot;,       selector: &quot;#universal&gt;*&quot;,   expect: [&quot;universal-p1&quot;, &quot;universal-hr1&quot;, &quot;universal-pre1&quot;, &quot;universal-p2&quot;, &quot;universal-address1&quot;], level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Universal selector, matching all grandchildren of element with specified ID&quot;,  selector: &quot;#universal&gt;*&gt;*&quot;, expect: [&quot;universal-code1&quot;, &quot;universal-span1&quot;, &quot;universal-a1&quot;, &quot;universal-code2&quot;],                 level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Universal selector, matching all children of empty element with specified ID&quot;, selector: &quot;#empty&gt;*&quot;,       expect: [] /*no matches*/,                                                                         level: 2, testType: TEST_QSA},
+  {name: &quot;Universal selector, matching all descendants of element with specified ID&quot;,    selector: &quot;#universal *&quot;,   expect: [&quot;universal-p1&quot;, &quot;universal-code1&quot;, &quot;universal-hr1&quot;, &quot;universal-pre1&quot;, &quot;universal-span1&quot;, &quot;universal-p2&quot;, &quot;universal-a1&quot;, &quot;universal-address1&quot;, &quot;universal-code2&quot;, &quot;universal-a2&quot;], level: 2, testType: TEST_QSA | TEST_MATCH},
+
+  // Attribute Selectors
+  // - presence                  [att]
+  {name: &quot;Attribute presence selector, matching align attribute with value&quot;,                    selector: &quot;.attr-presence-div1[align]&quot;,                             expect: [&quot;attr-presence-div1&quot;],                                             level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute presence selector, matching align attribute with empty value&quot;,              selector: &quot;.attr-presence-div2[align]&quot;,                             expect: [&quot;attr-presence-div2&quot;],                                             level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute presence selector, matching title attribute, case insensitivity&quot;,           selector: &quot;#attr-presence [TiTlE]&quot;,                                 expect: [&quot;attr-presence-a1&quot;, &quot;attr-presence-span1&quot;], exclude: [&quot;xhtml&quot;],    level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute presence selector, not matching title attribute, case sensitivity&quot;,         selector: &quot;#attr-presence [TiTlE]&quot;,                                 expect: [],                                          exclude: [&quot;html&quot;],     level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute presence selector, matching custom data-* attribute&quot;,                       selector: &quot;[data-attr-presence]&quot;,                                   expect: [&quot;attr-presence-pre1&quot;, &quot;attr-presence-blockquote1&quot;],                level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute presence selector, not matching attribute with similar name&quot;,               selector: &quot;.attr-presence-div3[align], .attr-presence-div4[align]&quot;, expect: [] /*no matches*/,                                                  level: 2, testType: TEST_QSA},
+  {name: &quot;Attribute presence selector, matching attribute with non-ASCII characters&quot;,           selector: &quot;ul[data-中文]&quot;,                                            expect: [&quot;attr-presence-ul1&quot;],                                              level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute presence selector, not matching default option without selected attribute&quot;, selector: &quot;#attr-presence-select1 option[selected]&quot;,                expect: [] /* no matches */,                                                level: 2, testType: TEST_QSA},
+  {name: &quot;Attribute presence selector, matching option with selected attribute&quot;,                selector: &quot;#attr-presence-select2 option[selected]&quot;,                expect: [&quot;attr-presence-select2-option4&quot;],                                  level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute presence selector, matching multiple options with selected attributes&quot;,     selector: &quot;#attr-presence-select3 option[selected]&quot;,                expect: [&quot;attr-presence-select3-option2&quot;, &quot;attr-presence-select3-option3&quot;], level: 2, testType: TEST_QSA | TEST_MATCH},
+
+  // - value                     [att=val]
+  {name: &quot;Attribute value selector, matching align attribute with value&quot;,                                    selector: &quot;#attr-value [align=\&quot;center\&quot;]&quot;,                                     expect: [&quot;attr-value-div1&quot;], level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute value selector, matching align attribute with empty value&quot;,                              selector: &quot;#attr-value [align=\&quot;\&quot;]&quot;,                                           expect: [&quot;attr-value-div2&quot;], level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute value selector, not matching align attribute with partial value&quot;,                        selector: &quot;#attr-value [align=\&quot;c\&quot;]&quot;,                                          expect: [] /*no matches*/,   level: 2, testType: TEST_QSA},
+  {name: &quot;Attribute value selector, not matching align attribute with incorrect value&quot;,                      selector: &quot;#attr-value [align=\&quot;centera\&quot;]&quot;,                                    expect: [] /*no matches*/,   level: 2, testType: TEST_QSA},
+  {name: &quot;Attribute value selector, matching custom data-* attribute with unicode escaped value&quot;,            selector: &quot;[data-attr-value=\&quot;\\e9\&quot;]&quot;,                                         expect: [&quot;attr-value-div3&quot;], level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute value selector, matching custom data-* attribute with escaped character&quot;,                selector: &quot;[data-attr-value\_foo=\&quot;\\e9\&quot;]&quot;,                                    expect: [&quot;attr-value-div4&quot;], level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute value selector with single-quoted value, matching multiple inputs with type attributes&quot;, selector: &quot;#attr-value input[type='hidden'],#attr-value input[type='radio']&quot;,   expect: [&quot;attr-value-input3&quot;, &quot;attr-value-input4&quot;, &quot;attr-value-input6&quot;, &quot;attr-value-input8&quot;, &quot;attr-value-input9&quot;], level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute value selector with double-quoted value, matching multiple inputs with type attributes&quot;, selector: &quot;#attr-value input[type=\&quot;hidden\&quot;],#attr-value input[type='radio']&quot;, expect: [&quot;attr-value-input3&quot;, &quot;attr-value-input4&quot;, &quot;attr-value-input6&quot;, &quot;attr-value-input8&quot;, &quot;attr-value-input9&quot;], level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute value selector with unquoted value, matching multiple inputs with type attributes&quot;,      selector: &quot;#attr-value input[type=hidden],#attr-value input[type=radio]&quot;,       expect: [&quot;attr-value-input3&quot;, &quot;attr-value-input4&quot;, &quot;attr-value-input6&quot;, &quot;attr-value-input8&quot;, &quot;attr-value-input9&quot;], level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute value selector, matching attribute with value using non-ASCII characters&quot;,               selector: &quot;[data-attr-value=中文]&quot;,                                               expect: [&quot;attr-value-div5&quot;], level: 2, testType: TEST_QSA | TEST_MATCH},
+
+  // - whitespace-separated list [att~=val]
+  {name: &quot;Attribute whitespace-separated list selector, matching class attribute with value&quot;,                                  selector: &quot;#attr-whitespace [class~=\&quot;div1\&quot;]&quot;,                                        expect: [&quot;attr-whitespace-div1&quot;], level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute whitespace-separated list selector, not matching class attribute with empty value&quot;,                        selector: &quot;#attr-whitespace [class~=\&quot;\&quot;]&quot;,                                            expect: [] /*no matches*/ ,       level: 2, testType: TEST_QSA},
+  {name: &quot;Attribute whitespace-separated list selector, not matching class attribute with partial value&quot;,                      selector: &quot;[data-attr-whitespace~=\&quot;div\&quot;]&quot;,                                           expect: [] /*no matches*/ ,       level: 2, testType: TEST_QSA},
+  {name: &quot;Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value&quot;,          selector: &quot;[data-attr-whitespace~=\&quot;\\0000e9\&quot;]&quot;,                                      expect: [&quot;attr-whitespace-div4&quot;], level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character&quot;,              selector: &quot;[data-attr-whitespace\_foo~=\&quot;\\e9\&quot;]&quot;,                                     expect: [&quot;attr-whitespace-div5&quot;], level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes&quot;, selector: &quot;#attr-whitespace a[rel~='bookmark'],  #attr-whitespace a[rel~='nofollow']&quot;, expect: [&quot;attr-whitespace-a1&quot;, &quot;attr-whitespace-a2&quot;, &quot;attr-whitespace-a3&quot;, &quot;attr-whitespace-a5&quot;, &quot;attr-whitespace-a7&quot;], level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes&quot;, selector: &quot;#attr-whitespace a[rel~=\&quot;bookmark\&quot;],#attr-whitespace a[rel~='nofollow']&quot;, expect: [&quot;attr-whitespace-a1&quot;, &quot;attr-whitespace-a2&quot;, &quot;attr-whitespace-a3&quot;, &quot;attr-whitespace-a5&quot;, &quot;attr-whitespace-a7&quot;], level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes&quot;,      selector: &quot;#attr-whitespace a[rel~=bookmark],    #attr-whitespace a[rel~=nofollow]&quot;,   expect: [&quot;attr-whitespace-a1&quot;, &quot;attr-whitespace-a2&quot;, &quot;attr-whitespace-a3&quot;, &quot;attr-whitespace-a5&quot;, &quot;attr-whitespace-a7&quot;], level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute whitespace-separated list selector with double-quoted value, not matching value with space&quot;,               selector: &quot;#attr-whitespace a[rel~=\&quot;book mark\&quot;]&quot;,                                    expect: [] /* no matches */,      level: 2, testType: TEST_QSA},
+  {name: &quot;Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters&quot;,       selector: &quot;#attr-whitespace [title~=中文]&quot;,                                              expect: [&quot;attr-whitespace-p1&quot;],   level: 2, testType: TEST_QSA | TEST_MATCH},
+
+  // - hyphen-separated list     [att|=val]
+  {name: &quot;Attribute hyphen-separated list selector, not matching unspecified lang attribute&quot;,    selector: &quot;#attr-hyphen-div1[lang|=\&quot;en\&quot;]&quot;,    expect: [] /*no matches*/,    level: 2, testType: TEST_QSA},
+  {name: &quot;Attribute hyphen-separated list selector, matching lang attribute with exact value&quot;,   selector: &quot;#attr-hyphen-div2[lang|=\&quot;fr\&quot;]&quot;,    expect: [&quot;attr-hyphen-div2&quot;], level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute hyphen-separated list selector, matching lang attribute with partial value&quot;, selector: &quot;#attr-hyphen-div3[lang|=\&quot;en\&quot;]&quot;,    expect: [&quot;attr-hyphen-div3&quot;], level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute hyphen-separated list selector, not matching incorrect value&quot;,               selector: &quot;#attr-hyphen-div4[lang|=\&quot;es-AR\&quot;]&quot;, expect: [] /*no matches*/,    level: 2, testType: TEST_QSA},
+
+  // - substring begins-with     [att^=val] (Level 3)
+  {name: &quot;Attribute begins with selector, matching href attributes beginning with specified substring&quot;,                             selector: &quot;#attr-begins a[href^=\&quot;http://www\&quot;]&quot;, expect: [&quot;attr-begins-a1&quot;, &quot;attr-begins-a3&quot;],     level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute begins with selector, matching lang attributes beginning with specified substring, &quot;,                           selector: &quot;#attr-begins [lang^=\&quot;en-\&quot;]&quot;,         expect: [&quot;attr-begins-div2&quot;, &quot;attr-begins-div4&quot;], level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute begins with selector, not matching class attribute not beginning with specified substring&quot;,                     selector: &quot;#attr-begins [class^=apple]&quot;,          expect: [] /*no matches*/,                        level: 3, testType: TEST_QSA},
+  {name: &quot;Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring&quot;,    selector: &quot;#attr-begins [class^=' apple']&quot;,       expect: [&quot;attr-begins-p1&quot;],                       level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring&quot;,    selector: &quot;#attr-begins [class^=\&quot; apple\&quot;]&quot;,     expect: [&quot;attr-begins-p1&quot;],                       level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring&quot;, selector: &quot;#attr-begins [class^= apple]&quot;,         expect: [] /*no matches*/,                        level: 3, testType: TEST_QSA},
+
+  // - substring ends-with       [att$=val] (Level 3)
+  {name: &quot;Attribute ends with selector, matching href attributes ending with specified substring&quot;,                             selector: &quot;#attr-ends a[href$=\&quot;.org\&quot;]&quot;,   expect: [&quot;attr-ends-a1&quot;, &quot;attr-ends-a3&quot;],     level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute ends with selector, matching lang attributes ending with specified substring, &quot;,                           selector: &quot;#attr-ends [lang$=\&quot;-CH\&quot;]&quot;,     expect: [&quot;attr-ends-div2&quot;, &quot;attr-ends-div4&quot;], level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute ends with selector, not matching class attribute not ending with specified substring&quot;,                     selector: &quot;#attr-ends [class$=apple]&quot;,      expect: [] /*no matches*/,                    level: 3, testType: TEST_QSA},
+  {name: &quot;Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring&quot;,    selector: &quot;#attr-ends [class$='apple ']&quot;,   expect: [&quot;attr-ends-p1&quot;],                     level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring&quot;,    selector: &quot;#attr-ends [class$=\&quot;apple \&quot;]&quot;, expect: [&quot;attr-ends-p1&quot;],                     level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring&quot;, selector: &quot;#attr-ends [class$=apple ]&quot;,     expect: [] /*no matches*/,                    level: 3, testType: TEST_QSA},
+
+  // - substring contains        [att*=val] (Level 3)
+  {name: &quot;Attribute contains selector, matching href attributes beginning with specified substring&quot;,                          selector: &quot;#attr-contains a[href*=\&quot;http://www\&quot;]&quot;,     expect: [&quot;attr-contains-a1&quot;, &quot;attr-contains-a3&quot;],     level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute contains selector, matching href attributes ending with specified substring&quot;,                             selector: &quot;#attr-contains a[href*=\&quot;.org\&quot;]&quot;,           expect: [&quot;attr-contains-a1&quot;, &quot;attr-contains-a2&quot;],     level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute contains selector, matching href attributes containing specified substring&quot;,                              selector: &quot;#attr-contains a[href*=\&quot;.example.\&quot;]&quot;,      expect: [&quot;attr-contains-a1&quot;, &quot;attr-contains-a3&quot;],     level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute contains selector, matching lang attributes beginning with specified substring, &quot;,                        selector: &quot;#attr-contains [lang*=\&quot;en-\&quot;]&quot;,             expect: [&quot;attr-contains-div2&quot;, &quot;attr-contains-div6&quot;], level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute contains selector, matching lang attributes ending with specified substring, &quot;,                           selector: &quot;#attr-contains [lang*=\&quot;-CH\&quot;]&quot;,             expect: [&quot;attr-contains-div3&quot;, &quot;attr-contains-div5&quot;], level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring&quot;, selector: &quot;#attr-contains [class*=' apple']&quot;,           expect: [&quot;attr-contains-p1&quot;],                         level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute contains selector with single-quoted value, matching class attribute ending with specified substring&quot;,    selector: &quot;#attr-contains [class*='orange ']&quot;,          expect: [&quot;attr-contains-p1&quot;],                         level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute contains selector with single-quoted value, matching class attribute containing specified substring&quot;,     selector: &quot;#attr-contains [class*='ple banana ora']&quot;,   expect: [&quot;attr-contains-p1&quot;],                         level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring&quot;, selector: &quot;#attr-contains [class*=\&quot; apple\&quot;]&quot;,         expect: [&quot;attr-contains-p1&quot;],                         level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute contains selector with double-quoted value, matching class attribute ending with specified substring&quot;,    selector: &quot;#attr-contains [class*=\&quot;orange \&quot;]&quot;,        expect: [&quot;attr-contains-p1&quot;],                         level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute contains selector with double-quoted value, matching class attribute containing specified substring&quot;,     selector: &quot;#attr-contains [class*=\&quot;ple banana ora\&quot;]&quot;, expect: [&quot;attr-contains-p1&quot;],                         level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute contains selector with unquoted value, matching class attribute beginning with specified substring&quot;,      selector: &quot;#attr-contains [class*= apple]&quot;,             expect: [&quot;attr-contains-p1&quot;],                         level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute contains selector with unquoted value, matching class attribute ending with specified substring&quot;,         selector: &quot;#attr-contains [class*=orange ]&quot;,            expect: [&quot;attr-contains-p1&quot;],                         level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Attribute contains selector with unquoted value, matching class attribute containing specified substring&quot;,          selector: &quot;#attr-contains [class*= banana ]&quot;,           expect: [&quot;attr-contains-p1&quot;],                         level: 3, testType: TEST_QSA | TEST_MATCH},
+
+  // Pseudo-classes
+  // - :root                 (Level 3)
+  {name: &quot;:root pseudo-class selector, matching document root element&quot;,      selector: &quot;:root&quot;, expect: [&quot;html&quot;],          exclude: [&quot;element&quot;, &quot;fragment&quot;, &quot;detached&quot;], level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;:root pseudo-class selector, not matching document root element&quot;,  selector: &quot;:root&quot;, expect: [] /*no matches*/, exclude: [&quot;document&quot;],                        level: 3, testType: TEST_QSA},
+
+  // - :nth-child(n)         (Level 3)
+  // XXX write descriptions
+  {name: &quot;:nth-child selector, matching the third child element&quot;,                              selector: &quot;#pseudo-nth-table1 :nth-child(3)&quot;, expect: [&quot;pseudo-nth-td3&quot;, &quot;pseudo-nth-td9&quot;, &quot;pseudo-nth-tr3&quot;, &quot;pseudo-nth-td15&quot;],                    level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;:nth-child selector, matching every third child element&quot;,                            selector: &quot;#pseudo-nth li:nth-child(3n)&quot;,     expect: [&quot;pseudo-nth-li3&quot;, &quot;pseudo-nth-li6&quot;, &quot;pseudo-nth-li9&quot;, &quot;pseudo-nth-li12&quot;],                    level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;:nth-child selector, matching every second child element, starting from the fourth&quot;, selector: &quot;#pseudo-nth li:nth-child(2n+4)&quot;,   expect: [&quot;pseudo-nth-li4&quot;, &quot;pseudo-nth-li6&quot;, &quot;pseudo-nth-li8&quot;, &quot;pseudo-nth-li10&quot;, &quot;pseudo-nth-li12&quot;], level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;:nth-child selector, matching every fourth child element, starting from the third&quot;,  selector: &quot;#pseudo-nth-p1 :nth-child(4n-1)&quot;,  expect: [&quot;pseudo-nth-em2&quot;, &quot;pseudo-nth-span3&quot;],                                                       level: 3, testType: TEST_QSA | TEST_MATCH},
+
+  // - :nth-last-child       (Level 3)
+  {name: &quot;:nth-last-child selector, matching the third last child element&quot;,                                           selector: &quot;#pseudo-nth-table1 :nth-last-child(3)&quot;, expect: [&quot;pseudo-nth-tr1&quot;, &quot;pseudo-nth-td4&quot;, &quot;pseudo-nth-td10&quot;, &quot;pseudo-nth-td16&quot;],                 level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;:nth-last-child selector, matching every third child element from the end&quot;,                                 selector: &quot;#pseudo-nth li:nth-last-child(3n)&quot;,     expect: [&quot;pseudo-nth-li1&quot;, &quot;pseudo-nth-li4&quot;, &quot;pseudo-nth-li7&quot;, &quot;pseudo-nth-li10&quot;],                  level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;:nth-last-child selector, matching every second child element from the end, starting from the fourth last&quot;, selector: &quot;#pseudo-nth li:nth-last-child(2n+4)&quot;,   expect: [&quot;pseudo-nth-li1&quot;, &quot;pseudo-nth-li3&quot;, &quot;pseudo-nth-li5&quot;, &quot;pseudo-nth-li7&quot;, &quot;pseudo-nth-li9&quot;], level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;:nth-last-child selector, matching every fourth element from the end, starting from the third last&quot;,        selector: &quot;#pseudo-nth-p1 :nth-last-child(4n-1)&quot;,  expect: [&quot;pseudo-nth-span2&quot;, &quot;pseudo-nth-span4&quot;],                                                   level: 3, testType: TEST_QSA | TEST_MATCH},
+
+  // - :nth-of-type(n)       (Level 3)
+  {name: &quot;:nth-of-type selector, matching the third em element&quot;,                                        selector: &quot;#pseudo-nth-p1 em:nth-of-type(3)&quot;,      expect: [&quot;pseudo-nth-em3&quot;],                                                                                 level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;:nth-of-type selector, matching every second element of their type&quot;,                          selector: &quot;#pseudo-nth-p1 :nth-of-type(2n)&quot;,       expect: [&quot;pseudo-nth-em2&quot;, &quot;pseudo-nth-span2&quot;, &quot;pseudo-nth-span4&quot;, &quot;pseudo-nth-strong2&quot;, &quot;pseudo-nth-em4&quot;], level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;:nth-of-type selector, matching every second elemetn of their type, starting from the first&quot;, selector: &quot;#pseudo-nth-p1 span:nth-of-type(2n-1)&quot;, expect: [&quot;pseudo-nth-span1&quot;, &quot;pseudo-nth-span3&quot;],                                                           level: 3, testType: TEST_QSA | TEST_MATCH},
+
+  // - :nth-last-of-type(n)  (Level 3)
+  {name: &quot;:nth-last-of-type selector, matching the thrid last em element&quot;, selector: &quot;#pseudo-nth-p1 em:nth-last-of-type(3)&quot;,      expect: [&quot;pseudo-nth-em2&quot;],                                                                                 level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;:nth-last-of-type selector, matching every second last element of their type&quot;, selector: &quot;#pseudo-nth-p1 :nth-last-of-type(2n)&quot;,       expect: [&quot;pseudo-nth-span1&quot;, &quot;pseudo-nth-em1&quot;, &quot;pseudo-nth-strong1&quot;, &quot;pseudo-nth-em3&quot;, &quot;pseudo-nth-span3&quot;], level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;:nth-last-of-type selector, matching every second last element of their type, starting from the last&quot;, selector: &quot;#pseudo-nth-p1 span:nth-last-of-type(2n-1)&quot;, expect: [&quot;pseudo-nth-span2&quot;, &quot;pseudo-nth-span4&quot;],                                                           level: 3, testType: TEST_QSA | TEST_MATCH},
+
+  // - :first-of-type        (Level 3)
+  {name: &quot;:first-of-type selector, matching the first em element&quot;, selector: &quot;#pseudo-nth-p1 em:first-of-type&quot;,      expect: [&quot;pseudo-nth-em1&quot;],                                           level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;:first-of-type selector, matching the first of every type of element&quot;, selector: &quot;#pseudo-nth-p1 :first-of-type&quot;,        expect: [&quot;pseudo-nth-span1&quot;, &quot;pseudo-nth-em1&quot;, &quot;pseudo-nth-strong1&quot;], level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;:first-of-type selector, matching the first td element in each table row&quot;, selector: &quot;#pseudo-nth-table1 tr :first-of-type&quot;, expect: [&quot;pseudo-nth-td1&quot;, &quot;pseudo-nth-td7&quot;, &quot;pseudo-nth-td13&quot;],      level: 3, testType: TEST_QSA | TEST_MATCH},
+
+  // - :last-of-type         (Level 3)
+  {name: &quot;:last-of-type selector, matching the last em elemnet&quot;, selector: &quot;#pseudo-nth-p1 em:last-of-type&quot;,      expect: [&quot;pseudo-nth-em4&quot;],                                           level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;:last-of-type selector, matching the last of every type of element&quot;, selector: &quot;#pseudo-nth-p1 :last-of-type&quot;,        expect: [&quot;pseudo-nth-span4&quot;, &quot;pseudo-nth-strong2&quot;, &quot;pseudo-nth-em4&quot;], level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;:last-of-type selector, matching the last td element in each table row&quot;, selector: &quot;#pseudo-nth-table1 tr :last-of-type&quot;, expect: [&quot;pseudo-nth-td6&quot;, &quot;pseudo-nth-td12&quot;, &quot;pseudo-nth-td18&quot;],     level: 3, testType: TEST_QSA | TEST_MATCH},
+
+  // - :first-child
+  {name: &quot;:first-child pseudo-class selector, matching first child div element&quot;,          selector: &quot;#pseudo-first-child div:first-child&quot;,                                        expect: [&quot;pseudo-first-child-div1&quot;],                                                          level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;:first-child pseudo-class selector, doesn't match non-first-child elements&quot;,    selector: &quot;.pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child&quot;, expect: [] /*no matches*/,                                                                    level: 2, testType: TEST_QSA},
+  {name: &quot;:first-child pseudo-class selector, matching first-child of multiple elements&quot;, selector: &quot;#pseudo-first-child span:first-child&quot;,                                       expect: [&quot;pseudo-first-child-span1&quot;, &quot;pseudo-first-child-span3&quot;, &quot;pseudo-first-child-span5&quot;], level: 2, testType: TEST_QSA | TEST_MATCH},
+
+  // - :last-child           (Level 3)
+  {name: &quot;:last-child pseudo-class selector, matching last child div element&quot;,           selector: &quot;#pseudo-last-child div:last-child&quot;,                                       expect: [&quot;pseudo-last-child-div3&quot;],                                                        level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;:last-child pseudo-class selector, doesn't match non-last-child elements&quot;,     selector: &quot;.pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child&quot;, expect: [] /*no matches*/,                                                                 level: 3, testType: TEST_QSA},
+  {name: &quot;:last-child pseudo-class selector, matching first-child of multiple elements&quot;, selector: &quot;#pseudo-last-child span:last-child&quot;,                                      expect: [&quot;pseudo-last-child-span2&quot;, &quot;pseudo-last-child-span4&quot;, &quot;pseudo-last-child-span6&quot;], level: 3, testType: TEST_QSA | TEST_MATCH},
+
+  // - :only-child           (Level 3)
+  {name: &quot;:pseudo-only-child pseudo-class selector, matching all only-child elements&quot;, selector: &quot;#pseudo-only :only-child&quot;, expect: [&quot;pseudo-only-span1&quot;], level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;:pseudo-only-child pseudo-class selector, matching only-child em elements&quot;,  selector: &quot;#pseudo-only em:only-child&quot;, expect: [] /*no matches*/,   level: 3, testType: TEST_QSA},
+
+  // - :only-of-type         (Level 3)
+  {name: &quot;:pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type&quot;, selector: &quot;#pseudo-only :only-of-type&quot;, expect: [&quot;pseudo-only-span1&quot;, &quot;pseudo-only-em1&quot;], level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;:pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type&quot;,  selector: &quot;#pseudo-only em:only-of-type&quot;, expect: [&quot;pseudo-only-em1&quot;],                    level: 3, testType: TEST_QSA | TEST_MATCH},
+
+  // - :empty                (Level 3)
+  {name: &quot;:empty pseudo-class selector, matching empty p elements&quot;,   selector: &quot;#pseudo-empty p:empty&quot;, expect: [&quot;pseudo-empty-p1&quot;, &quot;pseudo-empty-p2&quot;],                       level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;:empty pseudo-class selector, matching all empty elements&quot;, selector: &quot;#pseudo-empty :empty&quot;,  expect: [&quot;pseudo-empty-p1&quot;, &quot;pseudo-empty-p2&quot;, &quot;pseudo-empty-span1&quot;], level: 3, testType: TEST_QSA | TEST_MATCH},
+
+  // - :link and :visited
+  // Implementations may treat all visited links as unvisited, so these cannot be tested separately.
+  // The only guarantee is that &quot;:link,:visited&quot; matches the set of all visited and unvisited links and that they are individually mutually exclusive sets.
+  {name: &quot;:link and :visited pseudo-class selectors, matching a and area elements with href attributes&quot;,        selector: &quot;#pseudo-link :link, #pseudo-link :visited&quot;, expect: [&quot;pseudo-link-a1&quot;, &quot;pseudo-link-a2&quot;, &quot;pseudo-link-area1&quot;],                                level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;:link and :visited pseudo-class selectors, matching link elements with href attributes&quot;,              selector: &quot;#head :link, #head :visited&quot;,               expect: [&quot;pseudo-link-link1&quot;, &quot;pseudo-link-link2&quot;], exclude: [&quot;element&quot;, &quot;fragment&quot;, &quot;detached&quot;], level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;:link and :visited pseudo-class selectors, not matching link elements with href attributes&quot;,          selector: &quot;#head :link, #head :visited&quot;,               expect: [] /*no matches*/,                          exclude: [&quot;document&quot;],                        level: 1, testType: TEST_QSA},
+  {name: &quot;:link and :visited pseudo-class selectors, chained, mutually exclusive pseudo-classes match nothing&quot;, selector: &quot;:link:visited&quot;,                             expect: [] /*no matches*/,                          exclude: [&quot;document&quot;],                        level: 1, testType: TEST_QSA},
+
+  // - :target               (Level 3)
+  {name: &quot;:target pseudo-class selector, matching the element referenced by the URL fragment identifier&quot;, selector: &quot;:target&quot;, expect: [] /*no matches*/, exclude: [&quot;document&quot;, &quot;element&quot;],  level: 3, testType: TEST_QSA},
+  {name: &quot;:target pseudo-class selector, matching the element referenced by the URL fragment identifier&quot;, selector: &quot;:target&quot;, expect: [&quot;target&quot;],        exclude: [&quot;fragment&quot;, &quot;detached&quot;], level: 3, testType: TEST_QSA | TEST_MATCH},
+
+  // - :lang()
+  {name: &quot;:lang pseudo-class selector, matching inherited language&quot;,                     selector: &quot;#pseudo-lang-div1:lang(en)&quot;,    expect: [&quot;pseudo-lang-div1&quot;], exclude: [&quot;detached&quot;, &quot;fragment&quot;], level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;:lang pseudo-class selector, not matching element with no inherited language&quot;, selector: &quot;#pseudo-lang-div1:lang(en)&quot;,    expect: [] /*no matches*/,    exclude: [&quot;document&quot;, &quot;element&quot;],  level: 2, testType: TEST_QSA},
+  {name: &quot;:lang pseudo-class selector, matching specified language with exact value&quot;,    selector: &quot;#pseudo-lang-div2:lang(fr)&quot;,    expect: [&quot;pseudo-lang-div2&quot;],                                    level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;:lang pseudo-class selector, matching specified language with partial value&quot;,  selector: &quot;#pseudo-lang-div3:lang(en)&quot;,    expect: [&quot;pseudo-lang-div3&quot;],                                    level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;:lang pseudo-class selector, not matching incorrect language&quot;,                 selector: &quot;#pseudo-lang-div4:lang(es-AR)&quot;, expect: [] /*no matches*/,                                       level: 2, testType: TEST_QSA},
+
+  // - :enabled              (Level 3)
+  {name: &quot;:enabled pseudo-class selector, matching all enabled form controls&quot;,  selector: &quot;#pseudo-ui :enabled&quot;,  expect: [&quot;pseudo-ui-input1&quot;, &quot;pseudo-ui-input2&quot;, &quot;pseudo-ui-input3&quot;, &quot;pseudo-ui-input4&quot;, &quot;pseudo-ui-input5&quot;, &quot;pseudo-ui-input6&quot;,
+                                                                                                                           &quot;pseudo-ui-input7&quot;, &quot;pseudo-ui-input8&quot;, &quot;pseudo-ui-input9&quot;, &quot;pseudo-ui-textarea1&quot;, &quot;pseudo-ui-button1&quot;],    level: 3, testType: TEST_QSA | TEST_MATCH},
+
+  // - :disabled             (Level 3)
+  {name: &quot;:enabled pseudo-class selector, matching all disabled form controls&quot;, selector: &quot;#pseudo-ui :disabled&quot;, expect: [&quot;pseudo-ui-input10&quot;, &quot;pseudo-ui-input11&quot;, &quot;pseudo-ui-input12&quot;, &quot;pseudo-ui-input13&quot;, &quot;pseudo-ui-input14&quot;, &quot;pseudo-ui-input15&quot;,
+                                                                                                                           &quot;pseudo-ui-input16&quot;, &quot;pseudo-ui-input17&quot;, &quot;pseudo-ui-input18&quot;, &quot;pseudo-ui-textarea2&quot;, &quot;pseudo-ui-button2&quot;], level: 3, testType: TEST_QSA | TEST_MATCH},
+
+  // - :checked              (Level 3)
+  {name: &quot;:checked pseudo-class selector, matching checked radio buttons and checkboxes&quot;, selector: &quot;#pseudo-ui :checked&quot;, expect: [&quot;pseudo-ui-input4&quot;, &quot;pseudo-ui-input6&quot;, &quot;pseudo-ui-input13&quot;, &quot;pseudo-ui-input15&quot;],  level: 3, testType: TEST_QSA | TEST_MATCH},
+
+  // - :not(s)               (Level 3)
+  {name: &quot;:not pseudo-class selector, matching &quot;, selector: &quot;#not&gt;:not(div)&quot;,   expect: [&quot;not-p1&quot;, &quot;not-p2&quot;, &quot;not-p3&quot;], level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;:not pseudo-class selector, matching &quot;, selector: &quot;#not * :not(:first-child)&quot;,   expect: [&quot;not-em1&quot;, &quot;not-em2&quot;, &quot;not-em3&quot;], level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;:not pseudo-class selector, matching nothing&quot;, selector: &quot;:not(*)&quot;,   expect: [] /* no matches */, level: 3, testType: TEST_QSA},
+  {name: &quot;:not pseudo-class selector, matching nothing&quot;, selector: &quot;:not(*|*)&quot;, expect: [] /* no matches */, level: 3, testType: TEST_QSA},
+
+  // Pseudo-elements
+  // - ::first-line
+  {name: &quot;:first-line pseudo-element (one-colon syntax) selector, not matching any elements&quot;,    selector: &quot;#pseudo-element:first-line&quot;,    expect: [] /*no matches*/, level: 2, testType: TEST_QSA},
+  {name: &quot;::first-line pseudo-element (two-colon syntax) selector, not matching any elements&quot;,   selector: &quot;#pseudo-element::first-line&quot;,   expect: [] /*no matches*/, level: 3, testType: TEST_QSA},
+
+  // - ::first-letter
+  {name: &quot;:first-letter pseudo-element (one-colon syntax) selector, not matching any elements&quot;,  selector: &quot;#pseudo-element:first-letter&quot;,  expect: [] /*no matches*/, level: 2, testType: TEST_QSA},
+  {name: &quot;::first-letter pseudo-element (two-colon syntax) selector, not matching any elements&quot;, selector: &quot;#pseudo-element::first-letter&quot;, expect: [] /*no matches*/, level: 3, testType: TEST_QSA},
+
+  // - ::before
+  {name: &quot;:before pseudo-element (one-colon syntax) selector, not matching any elements&quot;,        selector: &quot;#pseudo-element:before&quot;,        expect: [] /*no matches*/, level: 2, testType: TEST_QSA},
+  {name: &quot;::before pseudo-element (two-colon syntax) selector, not matching any elements&quot;,       selector: &quot;#pseudo-element::before&quot;,       expect: [] /*no matches*/, level: 3, testType: TEST_QSA},
+
+  // - ::after
+  {name: &quot;:after pseudo-element (one-colon syntax) selector, not matching any elements&quot;,         selector: &quot;#pseudo-element:after&quot;,         expect: [] /*no matches*/, level: 2, testType: TEST_QSA},
+  {name: &quot;::after pseudo-element (two-colon syntax) selector, not matching any elements&quot;,        selector: &quot;#pseudo-element::after&quot;,        expect: [] /*no matches*/, level: 3, testType: TEST_QSA},
+
+  // Class Selectors
+  {name: &quot;Class selector, matching element with specified class&quot;,                                           selector: &quot;.class-p&quot;,                expect: [&quot;class-p1&quot;,&quot;class-p2&quot;, &quot;class-p3&quot;],                                              level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Class selector, chained, matching only elements with all specified classes&quot;,                      selector: &quot;#class .apple.orange.banana&quot;,    expect: [&quot;class-div1&quot;, &quot;class-div2&quot;, &quot;class-p4&quot;, &quot;class-div3&quot;, &quot;class-p6&quot;, &quot;class-div4&quot;], level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Class Selector, chained, with type selector&quot;,                                                     selector: &quot;div.apple.banana.orange&quot;, expect: [&quot;class-div1&quot;, &quot;class-div2&quot;, &quot;class-div3&quot;, &quot;class-div4&quot;],                         level: 1, testType: TEST_QSA | TEST_MATCH},
+  // Caution: If copying and pasting the folowing non-ASCII classes, ensure unicode normalisation is not performed in the process.
+  {name: &quot;Class selector, matching element with class value using non-ASCII characters&quot;,                    selector: &quot;.台北Táiběi&quot;,             expect: [&quot;class-span1&quot;],               level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Class selector, matching multiple elements with class value using non-ASCII characters&quot;,          selector: &quot;.台北&quot;,                     expect: [&quot;class-span1&quot;,&quot;class-span2&quot;], level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Class selector, chained, matching element with multiple class values using non-ASCII characters&quot;, selector: &quot;.台北Táiběi.台北&quot;,          expect: [&quot;class-span1&quot;],               level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Class selector, matching element with class with escaped character&quot;,                              selector: &quot;.foo\\:bar&quot;,              expect: [&quot;class-span3&quot;],               level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Class selector, matching element with class with escaped character&quot;,                              selector: &quot;.test\\.foo\\[5\\]bar&quot;,   expect: [&quot;class-span4&quot;],               level: 1, testType: TEST_QSA | TEST_MATCH},
+
+  // ID Selectors
+  {name: &quot;ID selector, matching element with specified id&quot;,           selector: &quot;#id #id-div1&quot;,              expect: [&quot;id-div1&quot;],            level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;ID selector, chained, matching element with specified id&quot;,  selector: &quot;#id-div1, #id-div1&quot;,        expect: [&quot;id-div1&quot;],            level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;ID selector, chained, matching element with specified id&quot;,  selector: &quot;#id-div1, #id-div2&quot;,        expect: [&quot;id-div1&quot;, &quot;id-div2&quot;], level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;ID Selector, chained, with type selector&quot;,                  selector: &quot;div#id-div1, div#id-div2&quot;,  expect: [&quot;id-div1&quot;, &quot;id-div2&quot;], level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;ID selector, not matching non-existent descendant&quot;,         selector: &quot;#id #none&quot;,                 expect: [] /*no matches*/,      level: 1, testType: TEST_QSA},
+  {name: &quot;ID selector, not matching non-existent ancestor&quot;,           selector: &quot;#none #id-div1&quot;,            expect: [] /*no matches*/,      level: 1, testType: TEST_QSA},
+  {name: &quot;ID selector, matching multiple elements with duplicate id&quot;, selector: &quot;#id-li-duplicate&quot;,          expect: [&quot;id-li-duplicate&quot;, &quot;id-li-duplicate&quot;, &quot;id-li-duplicate&quot;, &quot;id-li-duplicate&quot;], level: 1, testType: TEST_QSA | TEST_MATCH},
+
+  // Caution: If copying and pasting the folowing non-ASCII IDs, ensure unicode normalisation is not performed in the process.
+  {name: &quot;ID selector, matching id value using non-ASCII characters&quot;,    selector: &quot;#台北Táiběi&quot;,           expect: [&quot;台北Táiběi&quot;],       level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;ID selector, matching id value using non-ASCII characters&quot;,    selector: &quot;#台北&quot;,                   expect: [&quot;台北&quot;],               level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;ID selector, matching id values using non-ASCII characters&quot;,   selector: &quot;#台北Táiběi, #台北&quot;,      expect: [&quot;台北Táiběi&quot;, &quot;台北&quot;], level: 1, testType: TEST_QSA | TEST_MATCH},
+
+  // XXX runMatchesTest() in level2-lib.js can't handle this because obtaining the expected nodes requires escaping characters when generating the selector from 'expect' values
+  {name: &quot;ID selector, matching element with id with escaped character&quot;, selector: &quot;#\\#foo\\:bar&quot;,         expect: [&quot;#foo:bar&quot;],         level: 1, testType: TEST_QSA},
+  {name: &quot;ID selector, matching element with id with escaped character&quot;, selector: &quot;#test\\.foo\\[5\\]bar&quot;, expect: [&quot;test.foo[5]bar&quot;],   level: 1, testType: TEST_QSA},
+
+  // Namespaces
+  // XXX runMatchesTest() in level2-lib.js can't handle these because non-HTML elements don't have a recognised id
+  {name: &quot;Namespace selector, matching element with any namespace&quot;,        selector: &quot;#any-namespace *|div&quot;, expect: [&quot;any-namespace-div1&quot;, &quot;any-namespace-div2&quot;, &quot;any-namespace-div3&quot;, &quot;any-namespace-div4&quot;], level: 3, testType: TEST_QSA},
+  {name: &quot;Namespace selector, matching div elements in no namespace only&quot;, selector: &quot;#no-namespace |div&quot;,   expect: [&quot;no-namespace-div3&quot;], level: 3, testType: TEST_QSA},
+  {name: &quot;Namespace selector, matching any elements in no namespace only&quot;, selector: &quot;#no-namespace |*&quot;,     expect: [&quot;no-namespace-div3&quot;], level: 3, testType: TEST_QSA},
+
+  // Combinators
+  // - Descendant combinator ' '
+  {name: &quot;Descendant combinator, matching element that is a descendant of an element with id&quot;,                 selector: &quot;#descendant div&quot;,                   expect: [&quot;descendant-div1&quot;, &quot;descendant-div2&quot;, &quot;descendant-div3&quot;, &quot;descendant-div4&quot;], level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Descendant combinator, matching element with id that is a descendant of an element&quot;,                 selector: &quot;body #descendant-div1&quot;,             expect: [&quot;descendant-div1&quot;], exclude: [&quot;detached&quot;, &quot;fragment&quot;], level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Descendant combinator, matching element with id that is a descendant of an element&quot;,                 selector: &quot;div #descendant-div1&quot;,              expect: [&quot;descendant-div1&quot;],                                    level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Descendant combinator, matching element with id that is a descendant of an element with id&quot;,         selector: &quot;#descendant #descendant-div2&quot;,      expect: [&quot;descendant-div2&quot;],                                    level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Descendant combinator, matching element with class that is a descendant of an element with id&quot;,      selector: &quot;#descendant .descendant-div2&quot;,      expect: [&quot;descendant-div2&quot;],                                    level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Descendant combinator, matching element with class that is a descendant of an element with class&quot;,   selector: &quot;.descendant-div1 .descendant-div3&quot;, expect: [&quot;descendant-div3&quot;],                                    level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Descendant combinator, not matching element with id that is not a descendant of an element with id&quot;, selector: &quot;#descendant-div1 #descendant-div4&quot;, expect: [] /*no matches*/,                                      level: 1, testType: TEST_QSA},
+  {name: &quot;Descendant combinator, whitespace characters&quot;,                                                       selector: &quot;#descendant\t\r\n#descendant-div2&quot;, expect: [&quot;descendant-div2&quot;],                                    level: 1, testType: TEST_QSA | TEST_MATCH},
+
+  // - Child combinator '&gt;'
+  {name: &quot;Child combinator, matching element that is a child of an element with id&quot;,                       selector: &quot;#child&gt;div&quot;,                          expect: [&quot;child-div1&quot;, &quot;child-div4&quot;], level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Child combinator, matching element with id that is a child of an element&quot;,                       selector: &quot;div&gt;#child-div1&quot;,                     expect: [&quot;child-div1&quot;],               level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Child combinator, matching element with id that is a child of an element with id&quot;,               selector: &quot;#child&gt;#child-div1&quot;,                  expect: [&quot;child-div1&quot;],               level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Child combinator, matching element with id that is a child of an element with class&quot;,            selector: &quot;#child-div1&gt;.child-div2&quot;,             expect: [&quot;child-div2&quot;],               level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Child combinator, matching element with class that is a child of an element with class&quot;,         selector: &quot;.child-div1&gt;.child-div2&quot;,             expect: [&quot;child-div2&quot;],               level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Child combinator, not matching element with id that is not a child of an element with id&quot;,       selector: &quot;#child&gt;#child-div3&quot;,                  expect: [] /*no matches*/,            level: 2, testType: TEST_QSA},
+  {name: &quot;Child combinator, not matching element with id that is not a child of an element with class&quot;,    selector: &quot;#child-div1&gt;.child-div3&quot;,             expect: [] /*no matches*/,            level: 2, testType: TEST_QSA},
+  {name: &quot;Child combinator, not matching element with class that is not a child of an element with class&quot;, selector: &quot;.child-div1&gt;.child-div3&quot;,             expect: [] /*no matches*/,            level: 2, testType: TEST_QSA},
+  {name: &quot;Child combinator, surrounded by whitespace&quot;,                                                     selector: &quot;#child-div1\t\r\n&gt;\t\r\n#child-div2&quot;, expect: [&quot;child-div2&quot;],               level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Child combinator, whitespace after&quot;,                                                             selector: &quot;#child-div1&gt;\t\r\n#child-div2&quot;,       expect: [&quot;child-div2&quot;],               level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Child combinator, whitespace before&quot;,                                                            selector: &quot;#child-div1\t\r\n&gt;#child-div2&quot;,       expect: [&quot;child-div2&quot;],               level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Child combinator, no whitespace&quot;,                                                                selector: &quot;#child-div1&gt;#child-div2&quot;,             expect: [&quot;child-div2&quot;],               level: 2, testType: TEST_QSA | TEST_MATCH},
+
+  // - Adjacent sibling combinator '+'
+  {name: &quot;Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id&quot;,                 selector: &quot;#adjacent-div2+div&quot;,                                         expect: [&quot;adjacent-div4&quot;], level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element&quot;,                 selector: &quot;div+#adjacent-div4&quot;,                                         expect: [&quot;adjacent-div4&quot;], level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id&quot;,         selector: &quot;#adjacent-div2+#adjacent-div4&quot;,                              expect: [&quot;adjacent-div4&quot;], level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id&quot;,      selector: &quot;#adjacent-div2+.adjacent-div4&quot;,                              expect: [&quot;adjacent-div4&quot;], level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class&quot;,   selector: &quot;.adjacent-div2+.adjacent-div4&quot;,                              expect: [&quot;adjacent-div4&quot;], level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element&quot;,                    selector: &quot;#adjacent div+p&quot;,                                            expect: [&quot;adjacent-p2&quot;],   level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id&quot;, selector: &quot;#adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1&quot;, expect: [] /*no matches*/, level: 2, testType: TEST_QSA},
+  {name: &quot;Adjacent sibling combinator, surrounded by whitespace&quot;,                                                           selector: &quot;#adjacent-p2\t\r\n+\t\r\n#adjacent-p3&quot;,                      expect: [&quot;adjacent-p3&quot;],   level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Adjacent sibling combinator, whitespace after&quot;,                                                                   selector: &quot;#adjacent-p2+\t\r\n#adjacent-p3&quot;,                            expect: [&quot;adjacent-p3&quot;],   level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Adjacent sibling combinator, whitespace before&quot;,                                                                  selector: &quot;#adjacent-p2\t\r\n+#adjacent-p3&quot;,                            expect: [&quot;adjacent-p3&quot;],   level: 2, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Adjacent sibling combinator, no whitespace&quot;,                                                                      selector: &quot;#adjacent-p2+#adjacent-p3&quot;,                                  expect: [&quot;adjacent-p3&quot;],   level: 2, testType: TEST_QSA | TEST_MATCH},
+
+  // - General sibling combinator ~ (Level 3)
+  {name: &quot;General sibling combinator, matching element that is a sibling of an element with id&quot;,                    selector: &quot;#sibling-div2~div&quot;,                                        expect: [&quot;sibling-div4&quot;, &quot;sibling-div6&quot;], level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;General sibling combinator, matching element with id that is a sibling of an element&quot;,                    selector: &quot;div~#sibling-div4&quot;,                                        expect: [&quot;sibling-div4&quot;],                 level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;General sibling combinator, matching element with id that is a sibling of an element with id&quot;,            selector: &quot;#sibling-div2~#sibling-div4&quot;,                              expect: [&quot;sibling-div4&quot;],                 level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;General sibling combinator, matching element with class that is a sibling of an element with id&quot;,         selector: &quot;#sibling-div2~.sibling-div&quot;,                               expect: [&quot;sibling-div4&quot;, &quot;sibling-div6&quot;],                 level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;General sibling combinator, matching p element that is a sibling of a div element&quot;,                       selector: &quot;#sibling div~p&quot;,                                           expect: [&quot;sibling-p2&quot;, &quot;sibling-p3&quot;],                   level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;General sibling combinator, not matching element with id that is not a sibling after a p element&quot;,        selector: &quot;#sibling&gt;p~div&quot;,                                           expect: [] /*no matches*/,                level: 3, testType: TEST_QSA},
+  {name: &quot;General sibling combinator, not matching element with id that is not a sibling after an element with id&quot;, selector: &quot;#sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1&quot;, expect: [] /*no matches*/,                level: 3, testType: TEST_QSA},
+  {name: &quot;General sibling combinator, surrounded by whitespace&quot;,                                                    selector: &quot;#sibling-p2\t\r\n~\t\r\n#sibling-p3&quot;,                      expect: [&quot;sibling-p3&quot;],                   level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;General sibling combinator, whitespace after&quot;,                                                            selector: &quot;#sibling-p2~\t\r\n#sibling-p3&quot;,                            expect: [&quot;sibling-p3&quot;],                   level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;General sibling combinator, whitespace before&quot;,                                                           selector: &quot;#sibling-p2\t\r\n~#sibling-p3&quot;,                            expect: [&quot;sibling-p3&quot;],                   level: 3, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;General sibling combinator, no whitespace&quot;,                                                               selector: &quot;#sibling-p2~#sibling-p3&quot;,                                  expect: [&quot;sibling-p3&quot;],                   level: 3, testType: TEST_QSA | TEST_MATCH},
+
+  // Group of selectors (comma)
+  {name: &quot;Syntax, group of selectors separator, surrounded by whitespace&quot;, selector: &quot;#group em\t\r \n,\t\r \n#group strong&quot;, expect: [&quot;group-em1&quot;, &quot;group-strong1&quot;], level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Syntax, group of selectors separator, whitespace after&quot;,         selector: &quot;#group em,\t\r\n#group strong&quot;,         expect: [&quot;group-em1&quot;, &quot;group-strong1&quot;], level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Syntax, group of selectors separator, whitespace before&quot;,        selector: &quot;#group em\t\r\n,#group strong&quot;,         expect: [&quot;group-em1&quot;, &quot;group-strong1&quot;], level: 1, testType: TEST_QSA | TEST_MATCH},
+  {name: &quot;Syntax, group of selectors separator, no whitespace&quot;,            selector: &quot;#group em,#group strong&quot;,               expect: [&quot;group-em1&quot;, &quot;group-strong1&quot;], level: 1, testType: TEST_QSA | TEST_MATCH},
+];
+
+
+/*
+ * These selectors are intended to be used with the find(), findAll() and matches() methods.  Expected results
+ * should be determined under the assumption that :scope will be prepended to the selector where appropriate,
+ * in accordance with the specification.
+ *
+ * All of these should be valid relative selectors, expected to match zero or more elements in the document.
+ * None should throw any errors.
+ *
+ *   name:      A descriptive name of the selector being tested
+ *
+ *   selector:  The selector to test
+ *
+ *   ctx:       A selector to obtain the context object to use for tests invoking context.find(),
+ *              and to use as a single reference node for tests invoking document.find().
+ *              Note: context = root.querySelector(ctx);
+ *
+ *   ref:       A selector to obtain the reference nodes to be used for the selector.
+ *              Note: If root is the document or an in-document element:
+ *                      refNodes = document.querySelectorAll(ref);
+ *                    Otherwise, if root is a fragment or detached element:
+ *                      refNodes = root.querySelectorAll(ref);
+ *
+ *   expect:    A list of IDs of the elements expected to be matched. List must be given in tree order.
+ *
+ *   unexpected: A list of IDs of some elements that are not expected to match the given selector.
+ *               This is used to verify that unexpected.matches(selector, refNode) does not match.
+ *
+ *   exclude:   An array of contexts to exclude from testing. The valid values are:
+ *              [&quot;document&quot;, &quot;element&quot;, &quot;fragment&quot;, &quot;detached&quot;, &quot;html&quot;, &quot;xhtml&quot;]
+ *              The &quot;html&quot; and &quot;xhtml&quot; values represent the type of document being queried. These are useful
+ *              for tests that are affected by differences between HTML and XML, such as case sensitivity.
+ *
+ *   level:     An integer indicating the CSS or Selectors level in which the selector being tested was introduced.
+ *
+ *   testType:  A bit-mapped flag indicating the type of test.
+ *
+ * The test function for these tests accepts a specified root node, on which the methods will be invoked during the tests.
+ *
+ * Based on whether either 'context' or 'refNodes', or both, are specified the tests will execute the following methods:
+ *
+ * Where testType is TEST_FIND:
+ *
+ * context.findAll(selector, refNodes)
+ * context.findAll(selector)        // Only if refNodes is not specified
+ * root.findAll(selector, context)  // Only if refNodes is not specified
+ * root.findAll(selector, refNodes) // Only if context is not specified
+ * root.findAll(selector)           // Only if neither context nor refNodes is specified
+ *
+ * Where testType is TEST_QSA
+ *
+ * context.querySelectorAll(selector)
+ * root.querySelectorAll(selector)  // Only if neither context nor refNodes is specified
+ *
+ * Equivalent tests will be run for .find() as well.
+ * Note: Do not specify a testType of TEST_QSA where either implied :scope or explicit refNodes
+ * are required.
+ *
+ * Where testType is TEST_MATCH:
+ * For each expected result given, within the specified root:
+ *
+ * expect.matches(selector, context)    // Only where refNodes is not specified
+ * expect.matches(selector, refNodes)
+ * expect.matches(selector)             // Only if neither context nor refNodes is specified
+ *
+ * The tests involving refNodes for both find(), findAll() and matches() will each be run by passing the
+ * collection as a NodeList, an Array and, if there is only a single element, an Element node.
+ *
+ * Note: Interactive pseudo-classes (:active :hover and :focus) have not been tested in this test suite.
+ */
+
+var scopedSelectors = [
+  //{name: &quot;&quot;, selector: &quot;&quot;, ctx: &quot;&quot;, ref: &quot;&quot;, expect: [], level: 1, testType: TEST_FIND | TEST_MATCH},
+
+  // Universal Selector
+  {name: &quot;Universal selector, matching all children of the specified reference element&quot;,       selector: &quot;&gt;*&quot;,   ctx: &quot;#universal&quot;, expect: [&quot;universal-p1&quot;, &quot;universal-hr1&quot;, &quot;universal-pre1&quot;, &quot;universal-p2&quot;, &quot;universal-address1&quot;], unexpected: [&quot;universal&quot;, &quot;empty&quot;], level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Universal selector, matching all grandchildren of the specified reference element&quot;,  selector: &quot;&gt;*&gt;*&quot;, ctx: &quot;#universal&quot;, expect: [&quot;universal-code1&quot;, &quot;universal-span1&quot;, &quot;universal-a1&quot;, &quot;universal-code2&quot;],                 unexpected: [&quot;universal&quot;, &quot;empty&quot;], level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Universal selector, matching all children of the specified empty reference element&quot;, selector: &quot;&gt;*&quot;,   ctx: &quot;#empty&quot;,     expect: [] /*no matches*/,                                                                         unexpected: [&quot;universal&quot;, &quot;empty&quot;], level: 2, testType: TEST_QSA},
+  {name: &quot;Universal selector, matching all descendants of the specified reference element&quot;,    selector: &quot;*&quot;,    ctx: &quot;#universal&quot;, expect: [&quot;universal-p1&quot;, &quot;universal-code1&quot;, &quot;universal-hr1&quot;, &quot;universal-pre1&quot;, &quot;universal-span1&quot;,
+                                                                                                                                             &quot;universal-p2&quot;, &quot;universal-a1&quot;, &quot;universal-address1&quot;, &quot;universal-code2&quot;, &quot;universal-a2&quot;], unexpected: [&quot;universal&quot;, &quot;empty&quot;], level: 2, testType: TEST_FIND | TEST_MATCH},
+
+  // Attribute Selectors
+  // - presence                  [att]
+  {name: &quot;Attribute presence selector, matching align attribute with value&quot;,                    selector: &quot;.attr-presence-div1[align]&quot;,                             ctx: &quot;#attr-presence&quot;, expect: [&quot;attr-presence-div1&quot;],                                             level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute presence selector, matching align attribute with empty value&quot;,              selector: &quot;.attr-presence-div2[align]&quot;,                             ctx: &quot;#attr-presence&quot;, expect: [&quot;attr-presence-div2&quot;],                                             level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute presence selector, matching title attribute, case insensitivity&quot;,           selector: &quot;[TiTlE]&quot;,                                                ctx: &quot;#attr-presence&quot;, expect: [&quot;attr-presence-a1&quot;, &quot;attr-presence-span1&quot;], exclude: [&quot;xhtml&quot;],    level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute presence selector, not matching title attribute, case sensitivity&quot;,         selector: &quot;[TiTlE]&quot;,                                                ctx: &quot;#attr-presence&quot;, expect: [],                                          exclude: [&quot;html&quot;],     level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute presence selector, matching custom data-* attribute&quot;,                       selector: &quot;[data-attr-presence]&quot;,                                   ctx: &quot;#attr-presence&quot;, expect: [&quot;attr-presence-pre1&quot;, &quot;attr-presence-blockquote1&quot;],                level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute presence selector, not matching attribute with similar name&quot;,               selector: &quot;.attr-presence-div3[align], .attr-presence-div4[align]&quot;, ctx: &quot;#attr-presence&quot;, expect: [] /*no matches*/,                                                  level: 2, testType: TEST_FIND},
+  {name: &quot;Attribute presence selector, matching attribute with non-ASCII characters&quot;,           selector: &quot;ul[data-中文]&quot;,                                            ctx: &quot;#attr-presence&quot;, expect: [&quot;attr-presence-ul1&quot;],                                              level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute presence selector, not matching default option without selected attribute&quot;, selector: &quot;#attr-presence-select1 option[selected]&quot;,                ctx: &quot;#attr-presence&quot;, expect: [] /* no matches */,                                                level: 2, testType: TEST_FIND},
+  {name: &quot;Attribute presence selector, matching option with selected attribute&quot;,                selector: &quot;#attr-presence-select2 option[selected]&quot;,                ctx: &quot;#attr-presence&quot;, expect: [&quot;attr-presence-select2-option4&quot;],                                  level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute presence selector, matching multiple options with selected attributes&quot;,     selector: &quot;#attr-presence-select3 option[selected]&quot;,                ctx: &quot;#attr-presence&quot;, expect: [&quot;attr-presence-select3-option2&quot;, &quot;attr-presence-select3-option3&quot;], level: 2, testType: TEST_FIND | TEST_MATCH},
+
+  // - value                     [att=val]
+  {name: &quot;Attribute value selector, matching align attribute with value&quot;,                                    selector: &quot;[align=\&quot;center\&quot;]&quot;,                                     ctx: &quot;#attr-value&quot;, expect: [&quot;attr-value-div1&quot;], level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute value selector, matching align attribute with empty value&quot;,                              selector: &quot;[align=\&quot;\&quot;]&quot;,                                           ctx: &quot;#attr-value&quot;, expect: [&quot;attr-value-div2&quot;], level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute value selector, not matching align attribute with partial value&quot;,                        selector: &quot;[align=\&quot;c\&quot;]&quot;,                                          ctx: &quot;#attr-value&quot;, expect: [] /*no matches*/,   level: 2, testType: TEST_FIND},
+  {name: &quot;Attribute value selector, not matching align attribute with incorrect value&quot;,                      selector: &quot;[align=\&quot;centera\&quot;]&quot;,                                    ctx: &quot;#attr-value&quot;, expect: [] /*no matches*/,   level: 2, testType: TEST_FIND},
+  {name: &quot;Attribute value selector, matching custom data-* attribute with unicode escaped value&quot;,            selector: &quot;[data-attr-value=\&quot;\\e9\&quot;]&quot;,                             ctx: &quot;#attr-value&quot;, expect: [&quot;attr-value-div3&quot;], level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute value selector, matching custom data-* attribute with escaped character&quot;,                selector: &quot;[data-attr-value\_foo=\&quot;\\e9\&quot;]&quot;,                        ctx: &quot;#attr-value&quot;, expect: [&quot;attr-value-div4&quot;], level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute value selector with single-quoted value, matching multiple inputs with type attributes&quot;, selector: &quot;input[type='hidden'],#attr-value input[type='radio']&quot;,   ctx: &quot;#attr-value&quot;, expect: [&quot;attr-value-input3&quot;, &quot;attr-value-input4&quot;, &quot;attr-value-input6&quot;, &quot;attr-value-input8&quot;, &quot;attr-value-input9&quot;], level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute value selector with double-quoted value, matching multiple inputs with type attributes&quot;, selector: &quot;input[type=\&quot;hidden\&quot;],#attr-value input[type='radio']&quot;, ctx: &quot;#attr-value&quot;, expect: [&quot;attr-value-input3&quot;, &quot;attr-value-input4&quot;, &quot;attr-value-input6&quot;, &quot;attr-value-input8&quot;, &quot;attr-value-input9&quot;], level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute value selector with unquoted value, matching multiple inputs with type attributes&quot;,      selector: &quot;input[type=hidden],#attr-value input[type=radio]&quot;,       ctx: &quot;#attr-value&quot;, expect: [&quot;attr-value-input3&quot;, &quot;attr-value-input4&quot;, &quot;attr-value-input6&quot;, &quot;attr-value-input8&quot;, &quot;attr-value-input9&quot;], level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute value selector, matching attribute with value using non-ASCII characters&quot;,               selector: &quot;[data-attr-value=中文]&quot;,                                   ctx: &quot;#attr-value&quot;, expect: [&quot;attr-value-div5&quot;], level: 2, testType: TEST_FIND | TEST_MATCH},
+
+  // - whitespace-separated list [att~=val]
+  {name: &quot;Attribute whitespace-separated list selector, matching class attribute with value&quot;,                                  selector: &quot;[class~=\&quot;div1\&quot;]&quot;,                                        ctx: &quot;#attr-whitespace&quot;, expect: [&quot;attr-whitespace-div1&quot;], level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute whitespace-separated list selector, not matching class attribute with empty value&quot;,                        selector: &quot;[class~=\&quot;\&quot;]&quot;,                                            ctx: &quot;#attr-whitespace&quot;, expect: [] /*no matches*/ ,       level: 2, testType: TEST_FIND},
+  {name: &quot;Attribute whitespace-separated list selector, not matching class attribute with partial value&quot;,                      selector: &quot;[data-attr-whitespace~=\&quot;div\&quot;]&quot;,                                           ctx: &quot;#attr-whitespace&quot;, expect: [] /*no matches*/ ,       level: 2, testType: TEST_FIND},
+  {name: &quot;Attribute whitespace-separated list selector, matching custom data-* attribute with unicode escaped value&quot;,          selector: &quot;[data-attr-whitespace~=\&quot;\\0000e9\&quot;]&quot;,                                      ctx: &quot;#attr-whitespace&quot;, expect: [&quot;attr-whitespace-div4&quot;], level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute whitespace-separated list selector, matching custom data-* attribute with escaped character&quot;,              selector: &quot;[data-attr-whitespace\_foo~=\&quot;\\e9\&quot;]&quot;,                                     ctx: &quot;#attr-whitespace&quot;, expect: [&quot;attr-whitespace-div5&quot;], level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute whitespace-separated list selector with single-quoted value, matching multiple links with rel attributes&quot;, selector: &quot;a[rel~='bookmark'],  #attr-whitespace a[rel~='nofollow']&quot;, ctx: &quot;#attr-whitespace&quot;, expect: [&quot;attr-whitespace-a1&quot;, &quot;attr-whitespace-a2&quot;, &quot;attr-whitespace-a3&quot;, &quot;attr-whitespace-a5&quot;, &quot;attr-whitespace-a7&quot;], level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute whitespace-separated list selector with double-quoted value, matching multiple links with rel attributes&quot;, selector: &quot;a[rel~=\&quot;bookmark\&quot;],#attr-whitespace a[rel~='nofollow']&quot;, ctx: &quot;#attr-whitespace&quot;, expect: [&quot;attr-whitespace-a1&quot;, &quot;attr-whitespace-a2&quot;, &quot;attr-whitespace-a3&quot;, &quot;attr-whitespace-a5&quot;, &quot;attr-whitespace-a7&quot;], level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute whitespace-separated list selector with unquoted value, matching multiple links with rel attributes&quot;,      selector: &quot;a[rel~=bookmark],    #attr-whitespace a[rel~=nofollow]&quot;,   ctx: &quot;#attr-whitespace&quot;, expect: [&quot;attr-whitespace-a1&quot;, &quot;attr-whitespace-a2&quot;, &quot;attr-whitespace-a3&quot;, &quot;attr-whitespace-a5&quot;, &quot;attr-whitespace-a7&quot;], level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute whitespace-separated list selector with double-quoted value, not matching value with space&quot;,               selector: &quot;a[rel~=\&quot;book mark\&quot;]&quot;,                                    ctx: &quot;#attr-whitespace&quot;, expect: [] /* no matches */,      level: 2, testType: TEST_FIND},
+  {name: &quot;Attribute whitespace-separated list selector, matching title attribute with value using non-ASCII characters&quot;,       selector: &quot;[title~=中文]&quot;,                                              ctx: &quot;#attr-whitespace&quot;, expect: [&quot;attr-whitespace-p1&quot;],   level: 2, testType: TEST_FIND | TEST_MATCH},
+
+  // - hyphen-separated list     [att|=val]
+  {name: &quot;Attribute hyphen-separated list selector, not matching unspecified lang attribute&quot;,    selector: &quot;#attr-hyphen-div1[lang|=\&quot;en\&quot;]&quot;,    ctx: &quot;#attr-hyphen&quot;, expect: [] /*no matches*/,    level: 2, testType: TEST_FIND},
+  {name: &quot;Attribute hyphen-separated list selector, matching lang attribute with exact value&quot;,   selector: &quot;#attr-hyphen-div2[lang|=\&quot;fr\&quot;]&quot;,    ctx: &quot;#attr-hyphen&quot;, expect: [&quot;attr-hyphen-div2&quot;], level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute hyphen-separated list selector, matching lang attribute with partial value&quot;, selector: &quot;#attr-hyphen-div3[lang|=\&quot;en\&quot;]&quot;,    ctx: &quot;#attr-hyphen&quot;, expect: [&quot;attr-hyphen-div3&quot;], level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute hyphen-separated list selector, not matching incorrect value&quot;,               selector: &quot;#attr-hyphen-div4[lang|=\&quot;es-AR\&quot;]&quot;, ctx: &quot;#attr-hyphen&quot;, expect: [] /*no matches*/,    level: 2, testType: TEST_FIND},
+
+  // - substring begins-with     [att^=val] (Level 3)
+  {name: &quot;Attribute begins with selector, matching href attributes beginning with specified substring&quot;,                             selector: &quot;a[href^=\&quot;http://www\&quot;]&quot;, ctx: &quot;#attr-begins&quot;, expect: [&quot;attr-begins-a1&quot;, &quot;attr-begins-a3&quot;],     level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute begins with selector, matching lang attributes beginning with specified substring, &quot;,                           selector: &quot;[lang^=\&quot;en-\&quot;]&quot;,         ctx: &quot;#attr-begins&quot;, expect: [&quot;attr-begins-div2&quot;, &quot;attr-begins-div4&quot;], level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute begins with selector, not matching class attribute not beginning with specified substring&quot;,                     selector: &quot;[class^=apple]&quot;,          ctx: &quot;#attr-begins&quot;, expect: [] /*no matches*/,                        level: 3, testType: TEST_FIND},
+  {name: &quot;Attribute begins with selector with single-quoted value, matching class attribute beginning with specified substring&quot;,    selector: &quot;[class^=' apple']&quot;,       ctx: &quot;#attr-begins&quot;, expect: [&quot;attr-begins-p1&quot;],                       level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute begins with selector with double-quoted value, matching class attribute beginning with specified substring&quot;,    selector: &quot;[class^=\&quot; apple\&quot;]&quot;,     ctx: &quot;#attr-begins&quot;, expect: [&quot;attr-begins-p1&quot;],                       level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute begins with selector with unquoted value, not matching class attribute not beginning with specified substring&quot;, selector: &quot;[class^= apple]&quot;,         ctx: &quot;#attr-begins&quot;, expect: [] /*no matches*/,                        level: 3, testType: TEST_FIND},
+
+  // - substring ends-with       [att$=val] (Level 3)
+  {name: &quot;Attribute ends with selector, matching href attributes ending with specified substring&quot;,                             selector: &quot;a[href$=\&quot;.org\&quot;]&quot;,   ctx: &quot;#attr-ends&quot;, expect: [&quot;attr-ends-a1&quot;, &quot;attr-ends-a3&quot;],     level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute ends with selector, matching lang attributes ending with specified substring, &quot;,                           selector: &quot;[lang$=\&quot;-CH\&quot;]&quot;,     ctx: &quot;#attr-ends&quot;, expect: [&quot;attr-ends-div2&quot;, &quot;attr-ends-div4&quot;], level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute ends with selector, not matching class attribute not ending with specified substring&quot;,                     selector: &quot;[class$=apple]&quot;,      ctx: &quot;#attr-ends&quot;, expect: [] /*no matches*/,                    level: 3, testType: TEST_FIND},
+  {name: &quot;Attribute ends with selector with single-quoted value, matching class attribute ending with specified substring&quot;,    selector: &quot;[class$='apple ']&quot;,   ctx: &quot;#attr-ends&quot;, expect: [&quot;attr-ends-p1&quot;],                     level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute ends with selector with double-quoted value, matching class attribute ending with specified substring&quot;,    selector: &quot;[class$=\&quot;apple \&quot;]&quot;, ctx: &quot;#attr-ends&quot;, expect: [&quot;attr-ends-p1&quot;],                     level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute ends with selector with unquoted value, not matching class attribute not ending with specified substring&quot;, selector: &quot;[class$=apple ]&quot;,     ctx: &quot;#attr-ends&quot;, expect: [] /*no matches*/,                    level: 3, testType: TEST_FIND},
+
+  // - substring contains        [att*=val] (Level 3)
+  {name: &quot;Attribute contains selector, matching href attributes beginning with specified substring&quot;,                          selector: &quot;a[href*=\&quot;http://www\&quot;]&quot;,     ctx: &quot;#attr-contains&quot;, expect: [&quot;attr-contains-a1&quot;, &quot;attr-contains-a3&quot;],     level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute contains selector, matching href attributes ending with specified substring&quot;,                             selector: &quot;a[href*=\&quot;.org\&quot;]&quot;,           ctx: &quot;#attr-contains&quot;, expect: [&quot;attr-contains-a1&quot;, &quot;attr-contains-a2&quot;],     level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute contains selector, matching href attributes containing specified substring&quot;,                              selector: &quot;a[href*=\&quot;.example.\&quot;]&quot;,      ctx: &quot;#attr-contains&quot;, expect: [&quot;attr-contains-a1&quot;, &quot;attr-contains-a3&quot;],     level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute contains selector, matching lang attributes beginning with specified substring, &quot;,                        selector: &quot;[lang*=\&quot;en-\&quot;]&quot;,             ctx: &quot;#attr-contains&quot;, expect: [&quot;attr-contains-div2&quot;, &quot;attr-contains-div6&quot;], level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute contains selector, matching lang attributes ending with specified substring, &quot;,                           selector: &quot;[lang*=\&quot;-CH\&quot;]&quot;,             ctx: &quot;#attr-contains&quot;, expect: [&quot;attr-contains-div3&quot;, &quot;attr-contains-div5&quot;], level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute contains selector with single-quoted value, matching class attribute beginning with specified substring&quot;, selector: &quot;[class*=' apple']&quot;,           ctx: &quot;#attr-contains&quot;, expect: [&quot;attr-contains-p1&quot;],                         level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute contains selector with single-quoted value, matching class attribute ending with specified substring&quot;,    selector: &quot;[class*='orange ']&quot;,          ctx: &quot;#attr-contains&quot;, expect: [&quot;attr-contains-p1&quot;],                         level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute contains selector with single-quoted value, matching class attribute containing specified substring&quot;,     selector: &quot;[class*='ple banana ora']&quot;,   ctx: &quot;#attr-contains&quot;, expect: [&quot;attr-contains-p1&quot;],                         level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute contains selector with double-quoted value, matching class attribute beginning with specified substring&quot;, selector: &quot;[class*=\&quot; apple\&quot;]&quot;,         ctx: &quot;#attr-contains&quot;, expect: [&quot;attr-contains-p1&quot;],                         level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute contains selector with double-quoted value, matching class attribute ending with specified substring&quot;,    selector: &quot;[class*=\&quot;orange \&quot;]&quot;,        ctx: &quot;#attr-contains&quot;, expect: [&quot;attr-contains-p1&quot;],                         level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute contains selector with double-quoted value, matching class attribute containing specified substring&quot;,     selector: &quot;[class*=\&quot;ple banana ora\&quot;]&quot;, ctx: &quot;#attr-contains&quot;, expect: [&quot;attr-contains-p1&quot;],                         level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute contains selector with unquoted value, matching class attribute beginning with specified substring&quot;,      selector: &quot;[class*= apple]&quot;,             ctx: &quot;#attr-contains&quot;, expect: [&quot;attr-contains-p1&quot;],                         level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute contains selector with unquoted value, matching class attribute ending with specified substring&quot;,         selector: &quot;[class*=orange ]&quot;,            ctx: &quot;#attr-contains&quot;, expect: [&quot;attr-contains-p1&quot;],                         level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Attribute contains selector with unquoted value, matching class attribute containing specified substring&quot;,          selector: &quot;[class*= banana ]&quot;,           ctx: &quot;#attr-contains&quot;, expect: [&quot;attr-contains-p1&quot;],                         level: 3, testType: TEST_FIND | TEST_MATCH},
+
+  // Pseudo-classes
+  // - :root                 (Level 3)
+  {name: &quot;:root pseudo-class selector, matching document root element&quot;,      selector: &quot;:root&quot;,               expect: [&quot;html&quot;],          exclude: [&quot;element&quot;, &quot;fragment&quot;, &quot;detached&quot;], level: 3, testType: TEST_FIND},
+  {name: &quot;:root pseudo-class selector, not matching document root element&quot;,  selector: &quot;:root&quot;,               expect: [] /*no matches*/, exclude: [&quot;document&quot;],                        level: 3, testType: TEST_FIND},
+  {name: &quot;:root pseudo-class selector, not matching document root element&quot;,  selector: &quot;:root&quot;, ctx: &quot;#html&quot;, expect: [] /*no matches*/, exclude: [&quot;fragment&quot;, &quot;detached&quot;],            level: 3, testType: TEST_FIND},
+
+  // - :nth-child(n)         (Level 3)
+  {name: &quot;:nth-child selector, matching the third child element&quot;,                              selector: &quot;:nth-child(3)&quot;,      ctx: &quot;#pseudo-nth-table1&quot;, expect: [&quot;pseudo-nth-td3&quot;, &quot;pseudo-nth-td9&quot;, &quot;pseudo-nth-tr3&quot;, &quot;pseudo-nth-td15&quot;],             level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;:nth-child selector, matching every third child element&quot;,                            selector: &quot;li:nth-child(3n)&quot;,   ctx: &quot;#pseudo-nth&quot;, expect: [&quot;pseudo-nth-li3&quot;, &quot;pseudo-nth-li6&quot;, &quot;pseudo-nth-li9&quot;, &quot;pseudo-nth-li12&quot;],                    level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;:nth-child selector, matching every second child element, starting from the fourth&quot;, selector: &quot;li:nth-child(2n+4)&quot;, ctx: &quot;#pseudo-nth&quot;, expect: [&quot;pseudo-nth-li4&quot;, &quot;pseudo-nth-li6&quot;, &quot;pseudo-nth-li8&quot;, &quot;pseudo-nth-li10&quot;, &quot;pseudo-nth-li12&quot;], level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;:nth-child selector, matching every fourth child element, starting from the third&quot;,  selector: &quot;:nth-child(4n-1)&quot;,   ctx: &quot;#pseudo-nth-p1&quot;, expect: [&quot;pseudo-nth-em2&quot;, &quot;pseudo-nth-span3&quot;],                                                    level: 3, testType: TEST_FIND | TEST_MATCH},
+
+  // - :nth-last-child       (Level 3)
+  {name: &quot;:nth-last-child selector, matching the third last child element&quot;,                                           selector: &quot;:nth-last-child(3)&quot;,      ctx: &quot;#pseudo-nth-table1&quot;, expect: [&quot;pseudo-nth-tr1&quot;, &quot;pseudo-nth-td4&quot;, &quot;pseudo-nth-td10&quot;, &quot;pseudo-nth-td16&quot;],         level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;:nth-last-child selector, matching every third child element from the end&quot;,                                 selector: &quot;li:nth-last-child(3n)&quot;,   ctx: &quot;pseudo-nth&quot;, expect: [&quot;pseudo-nth-li1&quot;, &quot;pseudo-nth-li4&quot;, &quot;pseudo-nth-li7&quot;, &quot;pseudo-nth-li10&quot;],                  level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;:nth-last-child selector, matching every second child element from the end, starting from the fourth last&quot;, selector: &quot;li:nth-last-child(2n+4)&quot;, ctx: &quot;pseudo-nth&quot;, expect: [&quot;pseudo-nth-li1&quot;, &quot;pseudo-nth-li3&quot;, &quot;pseudo-nth-li5&quot;, &quot;pseudo-nth-li7&quot;, &quot;pseudo-nth-li9&quot;], level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;:nth-last-child selector, matching every fourth element from the end, starting from the third last&quot;,        selector: &quot;:nth-last-child(4n-1)&quot;,   ctx: &quot;#pseudo-nth-p1&quot;, expect: [&quot;pseudo-nth-span2&quot;, &quot;pseudo-nth-span4&quot;],                                               level: 3, testType: TEST_FIND | TEST_MATCH},
+
+  // - :nth-of-type(n)       (Level 3)
+  {name: &quot;:nth-of-type selector, matching the third em element&quot;,                                        selector: &quot;em:nth-of-type(3)&quot;,      ctx: &quot;#pseudo-nth-p1&quot;, expect: [&quot;pseudo-nth-em3&quot;],                                                                                 level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;:nth-of-type selector, matching every second element of their type&quot;,                          selector: &quot;:nth-of-type(2n)&quot;,       ctx: &quot;#pseudo-nth-p1&quot;, expect: [&quot;pseudo-nth-em2&quot;, &quot;pseudo-nth-span2&quot;, &quot;pseudo-nth-span4&quot;, &quot;pseudo-nth-strong2&quot;, &quot;pseudo-nth-em4&quot;], level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;:nth-of-type selector, matching every second elemetn of their type, starting from the first&quot;, selector: &quot;span:nth-of-type(2n-1)&quot;, ctx: &quot;#pseudo-nth-p1&quot;, expect: [&quot;pseudo-nth-span1&quot;, &quot;pseudo-nth-span3&quot;],                                                           level: 3, testType: TEST_FIND | TEST_MATCH},
+
+  // - :nth-last-of-type(n)  (Level 3)
+  {name: &quot;:nth-last-of-type selector, matching the thrid last em element&quot;,                                       selector: &quot;em:nth-last-of-type(3)&quot;,      ctx: &quot;#pseudo-nth-p1&quot;, expect: [&quot;pseudo-nth-em2&quot;],                                                                                 level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;:nth-last-of-type selector, matching every second last element of their type&quot;,                         selector: &quot;:nth-last-of-type(2n)&quot;,       ctx: &quot;#pseudo-nth-p1&quot;, expect: [&quot;pseudo-nth-span1&quot;, &quot;pseudo-nth-em1&quot;, &quot;pseudo-nth-strong1&quot;, &quot;pseudo-nth-em3&quot;, &quot;pseudo-nth-span3&quot;], level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;:nth-last-of-type selector, matching every second last element of their type, starting from the last&quot;, selector: &quot;span:nth-last-of-type(2n-1)&quot;, ctx: &quot;#pseudo-nth-p1&quot;, expect: [&quot;pseudo-nth-span2&quot;, &quot;pseudo-nth-span4&quot;],                                                           level: 3, testType: TEST_FIND | TEST_MATCH},
+
+  // - :first-of-type        (Level 3)
+  {name: &quot;:first-of-type selector, matching the first em element&quot;,                   selector: &quot;em:first-of-type&quot;,  ctx: &quot;#pseudo-nth-p1&quot;,     expect: [&quot;pseudo-nth-em1&quot;],                                           level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;:first-of-type selector, matching the first of every type of element&quot;,     selector: &quot;:first-of-type&quot;,    ctx: &quot;#pseudo-nth-p1&quot;,     expect: [&quot;pseudo-nth-span1&quot;, &quot;pseudo-nth-em1&quot;, &quot;pseudo-nth-strong1&quot;], level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;:first-of-type selector, matching the first td element in each table row&quot;, selector: &quot;tr :first-of-type&quot;, ctx: &quot;#pseudo-nth-table1&quot;, expect: [&quot;pseudo-nth-td1&quot;, &quot;pseudo-nth-td7&quot;, &quot;pseudo-nth-td13&quot;],      level: 3, testType: TEST_FIND | TEST_MATCH},
+
+  // - :last-of-type         (Level 3)
+  {name: &quot;:last-of-type selector, matching the last em elemnet&quot;,                     selector: &quot;em:last-of-type&quot;,   ctx: &quot;#pseudo-nth-p1&quot;,     expect: [&quot;pseudo-nth-em4&quot;],                                           level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;:last-of-type selector, matching the last of every type of element&quot;,       selector: &quot;:last-of-type&quot;,     ctx: &quot;#pseudo-nth-p1&quot;,     expect: [&quot;pseudo-nth-span4&quot;, &quot;pseudo-nth-strong2&quot;, &quot;pseudo-nth-em4&quot;], level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;:last-of-type selector, matching the last td element in each table row&quot;,   selector: &quot;tr :last-of-type&quot;,  ctx: &quot;#pseudo-nth-table1&quot;, expect: [&quot;pseudo-nth-td6&quot;, &quot;pseudo-nth-td12&quot;, &quot;pseudo-nth-td18&quot;],     level: 3, testType: TEST_FIND | TEST_MATCH},
+
+  // - :first-child
+  {name: &quot;:first-child pseudo-class selector, matching first child div element&quot;,          selector: &quot;div:first-child&quot;,                                                            ctx: &quot;#pseudo-first-child&quot;, expect: [&quot;pseudo-first-child-div1&quot;],                                                          level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;:first-child pseudo-class selector, doesn't match non-first-child elements&quot;,    selector: &quot;.pseudo-first-child-div2:first-child, .pseudo-first-child-div3:first-child&quot;, ctx: &quot;#pseudo-first-child&quot;, expect: [] /*no matches*/,                                                                    level: 2, testType: TEST_FIND},
+  {name: &quot;:first-child pseudo-class selector, matching first-child of multiple elements&quot;, selector: &quot;span:first-child&quot;,                                                           ctx: &quot;#pseudo-first-child&quot;, expect: [&quot;pseudo-first-child-span1&quot;, &quot;pseudo-first-child-span3&quot;, &quot;pseudo-first-child-span5&quot;], level: 2, testType: TEST_FIND | TEST_MATCH},
+
+  // - :last-child           (Level 3)
+  {name: &quot;:last-child pseudo-class selector, matching last child div element&quot;,           selector: &quot;div:last-child&quot;,                                                          ctx: &quot;#pseudo-last-child&quot;, expect: [&quot;pseudo-last-child-div3&quot;],                                                        level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;:last-child pseudo-class selector, doesn't match non-last-child elements&quot;,     selector: &quot;.pseudo-last-child-div1:last-child, .pseudo-last-child-div2:first-child&quot;, ctx: &quot;#pseudo-last-child&quot;, expect: [] /*no matches*/,                                                                 level: 3, testType: TEST_FIND},
+  {name: &quot;:last-child pseudo-class selector, matching first-child of multiple elements&quot;, selector: &quot;span:last-child&quot;,                                                         ctx: &quot;#pseudo-last-child&quot;, expect: [&quot;pseudo-last-child-span2&quot;, &quot;pseudo-last-child-span4&quot;, &quot;pseudo-last-child-span6&quot;], level: 3, testType: TEST_FIND | TEST_MATCH},
+
+  // - :only-child           (Level 3)
+  {name: &quot;:pseudo-only-child pseudo-class selector, matching all only-child elements&quot;, selector: &quot;:only-child&quot;,   ctx: &quot;#pseudo-only&quot;, expect: [&quot;pseudo-only-span1&quot;], level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;:pseudo-only-child pseudo-class selector, matching only-child em elements&quot;,  selector: &quot;em:only-child&quot;, ctx: &quot;#pseudo-only&quot;, expect: [] /*no matches*/,     level: 3, testType: TEST_FIND},
+
+  // - :only-of-type         (Level 3)
+  {name: &quot;:pseudo-only-of-type pseudo-class selector, matching all elements with no siblings of the same type&quot;, selector: &quot; :only-of-type&quot;,   ctx: &quot;#pseudo-only&quot;, expect: [&quot;pseudo-only-span1&quot;, &quot;pseudo-only-em1&quot;], level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;:pseudo-only-of-type pseudo-class selector, matching em elements with no siblings of the same type&quot;,  selector: &quot; em:only-of-type&quot;, ctx: &quot;#pseudo-only&quot;, expect: [&quot;pseudo-only-em1&quot;],                    level: 3, testType: TEST_FIND | TEST_MATCH},
+
+  // - :empty                (Level 3)
+  {name: &quot;:empty pseudo-class selector, matching empty p elements&quot;,   selector: &quot;p:empty&quot;, ctx: &quot;#pseudo-empty&quot;, expect: [&quot;pseudo-empty-p1&quot;, &quot;pseudo-empty-p2&quot;],                       level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;:empty pseudo-class selector, matching all empty elements&quot;, selector: &quot;:empty&quot;,  ctx: &quot;#pseudo-empty&quot;, expect: [&quot;pseudo-empty-p1&quot;, &quot;pseudo-empty-p2&quot;, &quot;pseudo-empty-span1&quot;], level: 3, testType: TEST_FIND | TEST_MATCH},
+
+  // - :link and :visited
+  // Implementations may treat all visited links as unvisited, so these cannot be tested separately.
+  // The only guarantee is that &quot;:link,:visited&quot; matches the set of all visited and unvisited links and that they are individually mutually exclusive sets.
+  {name: &quot;:link and :visited pseudo-class selectors, matching a and area elements with href attributes&quot;,        selector: &quot; :link, #pseudo-link :visited&quot;, ctx: &quot;#pseudo-link&quot;, expect: [&quot;pseudo-link-a1&quot;, &quot;pseudo-link-a2&quot;, &quot;pseudo-link-area1&quot;],                                level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;:link and :visited pseudo-class selectors, matching link elements with href attributes&quot;,              selector: &quot; :link, #head :visited&quot;,        ctx: &quot;#head&quot;,        expect: [&quot;pseudo-link-link1&quot;, &quot;pseudo-link-link2&quot;], exclude: [&quot;element&quot;, &quot;fragment&quot;, &quot;detached&quot;], level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;:link and :visited pseudo-class selectors, not matching link elements with href attributes&quot;,          selector: &quot; :link, #head :visited&quot;,        ctx: &quot;#head&quot;,        expect: [] /*no matches*/,                          exclude: [&quot;document&quot;],                        level: 1, testType: TEST_FIND},
+  {name: &quot;:link and :visited pseudo-class selectors, chained, mutually exclusive pseudo-classes match nothing&quot;, selector: &quot;:link:visited&quot;,                 ctx: &quot;#html&quot;,        expect: [] /*no matches*/,                          exclude: [&quot;document&quot;],                        level: 1, testType: TEST_FIND},
+
+// XXX Figure out context or refNodes for this
+  // - :target               (Level 3)
+  {name: &quot;:target pseudo-class selector, matching the element referenced by the URL fragment identifier&quot;, selector: &quot;:target&quot;, ctx: &quot;&quot;, expect: [] /*no matches*/, exclude: [&quot;document&quot;, &quot;element&quot;],  level: 3, testType: TEST_FIND},
+  {name: &quot;:target pseudo-class selector, matching the element referenced by the URL fragment identifier&quot;, selector: &quot;:target&quot;, ctx: &quot;&quot;, expect: [&quot;target&quot;],        exclude: [&quot;fragment&quot;, &quot;detached&quot;], level: 3, testType: TEST_FIND},
+
+// XXX Fix ctx in tests below
+
+  // - :lang()
+  {name: &quot;:lang pseudo-class selector, matching inherited language (1)&quot;,                     selector: &quot;#pseudo-lang-div1:lang(en)&quot;,    ctx: &quot;&quot;, expect: [&quot;pseudo-lang-div1&quot;], exclude: [&quot;detached&quot;, &quot;fragment&quot;], level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;:lang pseudo-class selector, not matching element with no inherited language&quot;, selector: &quot;#pseudo-lang-div1:lang(en)&quot;,    ctx: &quot;&quot;, expect: [] /*no matches*/,    exclude: [&quot;document&quot;, &quot;element&quot;],  level: 2, testType: TEST_FIND},
+  {name: &quot;:lang pseudo-class selector, matching specified language with exact value (1)&quot;,    selector: &quot;#pseudo-lang-div2:lang(fr)&quot;,    ctx: &quot;&quot;, expect: [&quot;pseudo-lang-div2&quot;],                                    level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;:lang pseudo-class selector, matching specified language with partial value (1)&quot;,  selector: &quot;#pseudo-lang-div3:lang(en)&quot;,    ctx: &quot;&quot;, expect: [&quot;pseudo-lang-div3&quot;],                                    level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;:lang pseudo-class selector, not matching incorrect language&quot;,                 selector: &quot;#pseudo-lang-div4:lang(es-AR)&quot;, ctx: &quot;&quot;, expect: [] /*no matches*/,                                       level: 2, testType: TEST_FIND},
+
+  // - :enabled              (Level 3)
+  {name: &quot;:enabled pseudo-class selector, matching all enabled form controls (1)&quot;,  selector: &quot;#pseudo-ui :enabled&quot;,  ctx: &quot;&quot;, expect: [&quot;pseudo-ui-input1&quot;, &quot;pseudo-ui-input2&quot;, &quot;pseudo-ui-input3&quot;, &quot;pseudo-ui-input4&quot;, &quot;pseudo-ui-input5&quot;, &quot;pseudo-ui-input6&quot;,
+                                                                                                                           &quot;pseudo-ui-input7&quot;, &quot;pseudo-ui-input8&quot;, &quot;pseudo-ui-input9&quot;, &quot;pseudo-ui-textarea1&quot;, &quot;pseudo-ui-button1&quot;],    level: 3, testType: TEST_FIND | TEST_MATCH},
+
+  // - :disabled             (Level 3)
+  {name: &quot;:enabled pseudo-class selector, matching all disabled form controls (1)&quot;, selector: &quot;#pseudo-ui :disabled&quot;, ctx: &quot;&quot;, expect: [&quot;pseudo-ui-input10&quot;, &quot;pseudo-ui-input11&quot;, &quot;pseudo-ui-input12&quot;, &quot;pseudo-ui-input13&quot;, &quot;pseudo-ui-input14&quot;, &quot;pseudo-ui-input15&quot;,
+                                                                                                                           &quot;pseudo-ui-input16&quot;, &quot;pseudo-ui-input17&quot;, &quot;pseudo-ui-input18&quot;, &quot;pseudo-ui-textarea2&quot;, &quot;pseudo-ui-button2&quot;], level: 3, testType: TEST_FIND | TEST_MATCH},
+
+  // - :checked              (Level 3)
+  {name: &quot;:checked pseudo-class selector, matching checked radio buttons and checkboxes (1)&quot;, selector: &quot;#pseudo-ui :checked&quot;, ctx: &quot;&quot;, expect: [&quot;pseudo-ui-input4&quot;, &quot;pseudo-ui-input6&quot;, &quot;pseudo-ui-input13&quot;, &quot;pseudo-ui-input15&quot;],  level: 3, testType: TEST_FIND | TEST_MATCH},
+
+  // - :not(s)               (Level 3)
+  {name: &quot;:not pseudo-class selector, matching (1)&quot;, selector: &quot;#not&gt;:not(div)&quot;,   ctx: &quot;&quot;, expect: [&quot;not-p1&quot;, &quot;not-p2&quot;, &quot;not-p3&quot;], level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;:not pseudo-class selector, matching (1)&quot;, selector: &quot;#not * :not(:first-child)&quot;,   ctx: &quot;&quot;, expect: [&quot;not-em1&quot;, &quot;not-em2&quot;, &quot;not-em3&quot;], level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;:not pseudo-class selector, matching nothing&quot;, selector: &quot;:not(*)&quot;,   ctx: &quot;&quot;, expect: [] /* no matches */, level: 3, testType: TEST_FIND},
+  {name: &quot;:not pseudo-class selector, matching nothing&quot;, selector: &quot;:not(*|*)&quot;, ctx: &quot;&quot;, expect: [] /* no matches */, level: 3, testType: TEST_FIND},
+
+  // Pseudo-elements
+  // - ::first-line
+  {name: &quot;:first-line pseudo-element (one-colon syntax) selector, not matching any elements&quot;,    selector: &quot;#pseudo-element:first-line&quot;,    ctx: &quot;&quot;, expect: [] /*no matches*/, level: 2, testType: TEST_FIND},
+  {name: &quot;::first-line pseudo-element (two-colon syntax) selector, not matching any elements&quot;,   selector: &quot;#pseudo-element::first-line&quot;,   ctx: &quot;&quot;, expect: [] /*no matches*/, level: 3, testType: TEST_FIND},
+
+  // - ::first-letter
+  {name: &quot;:first-letter pseudo-element (one-colon syntax) selector, not matching any elements&quot;,  selector: &quot;#pseudo-element:first-letter&quot;,  ctx: &quot;&quot;, expect: [] /*no matches*/, level: 2, testType: TEST_FIND},
+  {name: &quot;::first-letter pseudo-element (two-colon syntax) selector, not matching any elements&quot;, selector: &quot;#pseudo-element::first-letter&quot;, ctx: &quot;&quot;, expect: [] /*no matches*/, level: 3, testType: TEST_FIND},
+
+  // - ::before
+  {name: &quot;:before pseudo-element (one-colon syntax) selector, not matching any elements&quot;,        selector: &quot;#pseudo-element:before&quot;,        ctx: &quot;&quot;, expect: [] /*no matches*/, level: 2, testType: TEST_FIND},
+  {name: &quot;::before pseudo-element (two-colon syntax) selector, not matching any elements&quot;,       selector: &quot;#pseudo-element::before&quot;,       ctx: &quot;&quot;, expect: [] /*no matches*/, level: 3, testType: TEST_FIND},
+
+  // - ::after
+  {name: &quot;:after pseudo-element (one-colon syntax) selector, not matching any elements&quot;,         selector: &quot;#pseudo-element:after&quot;,         ctx: &quot;&quot;, expect: [] /*no matches*/, level: 2, testType: TEST_FIND},
+  {name: &quot;::after pseudo-element (two-colon syntax) selector, not matching any elements&quot;,        selector: &quot;#pseudo-element::after&quot;,        ctx: &quot;&quot;, expect: [] /*no matches*/, level: 3, testType: TEST_FIND},
+
+  // Class Selectors
+  {name: &quot;Class selector, matching element with specified class (1)&quot;,                                           selector: &quot;.class-p&quot;,                ctx: &quot;&quot;, expect: [&quot;class-p1&quot;,&quot;class-p2&quot;, &quot;class-p3&quot;],                                              level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Class selector, chained, matching only elements with all specified classes (1)&quot;,                      selector: &quot;#class .apple.orange.banana&quot;,    ctx: &quot;&quot;, expect: [&quot;class-div1&quot;, &quot;class-div2&quot;, &quot;class-p4&quot;, &quot;class-div3&quot;, &quot;class-p6&quot;, &quot;class-div4&quot;], level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Class Selector, chained, with type selector (1)&quot;,                                                     selector: &quot;div.apple.banana.orange&quot;, ctx: &quot;&quot;, expect: [&quot;class-div1&quot;, &quot;class-div2&quot;, &quot;class-div3&quot;, &quot;class-div4&quot;],                         level: 1, testType: TEST_FIND | TEST_MATCH},
+  // Caution: If copying and pasting the folowing non-ASCII classes, ensure unicode normalisation is not performed in the process.
+  {name: &quot;Class selector, matching element with class value using non-ASCII characters&quot;,                    selector: &quot;.台北Táiběi&quot;,             ctx: &quot;&quot;, expect: [&quot;class-span1&quot;],               level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Class selector, matching multiple elements with class value using non-ASCII characters (1)&quot;,          selector: &quot;.台北&quot;,                     ctx: &quot;&quot;, expect: [&quot;class-span1&quot;,&quot;class-span2&quot;], level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Class selector, chained, matching element with multiple class values using non-ASCII characters&quot;, selector: &quot;.台北Táiběi.台北&quot;,          ctx: &quot;&quot;, expect: [&quot;class-span1&quot;],               level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Class selector, matching element with class with escaped character (1)&quot;,                              selector: &quot;.foo\\:bar&quot;,              ctx: &quot;&quot;, expect: [&quot;class-span3&quot;],               level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Class selector, matching element with class with escaped character (1)&quot;,                              selector: &quot;.test\\.foo\\[5\\]bar&quot;,   ctx: &quot;&quot;, expect: [&quot;class-span4&quot;],               level: 1, testType: TEST_FIND | TEST_MATCH},
+
+  // ID Selectors
+  {name: &quot;ID selector, matching element with specified id (1)&quot;,           selector: &quot;#id #id-div1&quot;,              ctx: &quot;&quot;, expect: [&quot;id-div1&quot;],            level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;ID selector, chained, matching element with specified id (1)&quot;,  selector: &quot;#id-div1, #id-div1&quot;,        ctx: &quot;&quot;, expect: [&quot;id-div1&quot;],            level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;ID selector, chained, matching element with specified id (1)&quot;,  selector: &quot;#id-div1, #id-div2&quot;,        ctx: &quot;&quot;, expect: [&quot;id-div1&quot;, &quot;id-div2&quot;], level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;ID Selector, chained, with type selector (1)&quot;,                  selector: &quot;div#id-div1, div#id-div2&quot;,  ctx: &quot;&quot;, expect: [&quot;id-div1&quot;, &quot;id-div2&quot;], level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;ID selector, not matching non-existent descendant&quot;,         selector: &quot;#id #none&quot;,                 ctx: &quot;&quot;, expect: [] /*no matches*/,      level: 1, testType: TEST_FIND},
+  {name: &quot;ID selector, not matching non-existent ancestor&quot;,           selector: &quot;#none #id-div1&quot;,            ctx: &quot;&quot;, expect: [] /*no matches*/,      level: 1, testType: TEST_FIND},
+  {name: &quot;ID selector, matching multiple elements with duplicate id (1)&quot;, selector: &quot;#id-li-duplicate&quot;,          ctx: &quot;&quot;, expect: [&quot;id-li-duplicate&quot;, &quot;id-li-duplicate&quot;, &quot;id-li-duplicate&quot;, &quot;id-li-duplicate&quot;], level: 1, testType: TEST_FIND | TEST_MATCH},
+
+  // Caution: If copying and pasting the folowing non-ASCII IDs, ensure unicode normalisation is not performed in the process.
+  {name: &quot;ID selector, matching id value using non-ASCII characters&quot;,    selector: &quot;#台北Táiběi&quot;,           ctx: &quot;&quot;, expect: [&quot;台北Táiběi&quot;],       level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;ID selector, matching id value using non-ASCII characters (1)&quot;,    selector: &quot;#台北&quot;,                   ctx: &quot;&quot;, expect: [&quot;台北&quot;],               level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;ID selector, matching id values using non-ASCII characters&quot;,   selector: &quot;#台北Táiběi, #台北&quot;,      ctx: &quot;&quot;, expect: [&quot;台北Táiběi&quot;, &quot;台北&quot;], level: 1, testType: TEST_FIND | TEST_MATCH},
+
+  // XXX runMatchesTest() in level2-lib.js can't handle this because obtaining the expected nodes requires escaping characters when generating the selector from 'expect' values
+  {name: &quot;ID selector, matching element with id with escaped character&quot;, selector: &quot;#\\#foo\\:bar&quot;,         ctx: &quot;&quot;, expect: [&quot;#foo:bar&quot;],         level: 1, testType: TEST_FIND},
+  {name: &quot;ID selector, matching element with id with escaped character&quot;, selector: &quot;#test\\.foo\\[5\\]bar&quot;, ctx: &quot;&quot;, expect: [&quot;test.foo[5]bar&quot;],   level: 1, testType: TEST_FIND},
+
+  // Namespaces
+  // XXX runMatchesTest() in level2-lib.js can't handle these because non-HTML elements don't have a recognised id
+  {name: &quot;Namespace selector, matching element with any namespace&quot;,        selector: &quot;#any-namespace *|div&quot;, ctx: &quot;&quot;, expect: [&quot;any-namespace-div1&quot;, &quot;any-namespace-div2&quot;, &quot;any-namespace-div3&quot;, &quot;any-namespace-div4&quot;], level: 3, testType: TEST_FIND},
+  {name: &quot;Namespace selector, matching div elements in no namespace only&quot;, selector: &quot;#no-namespace |div&quot;,   ctx: &quot;&quot;, expect: [&quot;no-namespace-div3&quot;], level: 3, testType: TEST_FIND},
+  {name: &quot;Namespace selector, matching any elements in no namespace only&quot;, selector: &quot;#no-namespace |*&quot;,     ctx: &quot;&quot;, expect: [&quot;no-namespace-div3&quot;], level: 3, testType: TEST_FIND},
+
+  // Combinators
+  // - Descendant combinator ' '
+  {name: &quot;Descendant combinator, matching element that is a descendant of an element with id (1)&quot;,                 selector: &quot;#descendant div&quot;,                   ctx: &quot;&quot;, expect: [&quot;descendant-div1&quot;, &quot;descendant-div2&quot;, &quot;descendant-div3&quot;, &quot;descendant-div4&quot;], level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Descendant combinator, matching element with id that is a descendant of an element (1)&quot;,                 selector: &quot;body #descendant-div1&quot;,             ctx: &quot;&quot;, expect: [&quot;descendant-div1&quot;], exclude: [&quot;detached&quot;, &quot;fragment&quot;], level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Descendant combinator, matching element with id that is a descendant of an element (1)&quot;,                 selector: &quot;div #descendant-div1&quot;,              ctx: &quot;&quot;, expect: [&quot;descendant-div1&quot;],                                    level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Descendant combinator, matching element with id that is a descendant of an element with id (1)&quot;,         selector: &quot;#descendant #descendant-div2&quot;,      ctx: &quot;&quot;, expect: [&quot;descendant-div2&quot;],                                    level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Descendant combinator, matching element with class that is a descendant of an element with id (1)&quot;,      selector: &quot;#descendant .descendant-div2&quot;,      ctx: &quot;&quot;, expect: [&quot;descendant-div2&quot;],                                    level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Descendant combinator, matching element with class that is a descendant of an element with class (1)&quot;,   selector: &quot;.descendant-div1 .descendant-div3&quot;, ctx: &quot;&quot;, expect: [&quot;descendant-div3&quot;],                                    level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Descendant combinator, not matching element with id that is not a descendant of an element with id&quot;, selector: &quot;#descendant-div1 #descendant-div4&quot;, ctx: &quot;&quot;, expect: [] /*no matches*/,                                      level: 1, testType: TEST_FIND},
+  {name: &quot;Descendant combinator, whitespace characters (1)&quot;,                                                       selector: &quot;#descendant\t\r\n#descendant-div2&quot;, ctx: &quot;&quot;, expect: [&quot;descendant-div2&quot;],                                    level: 1, testType: TEST_FIND | TEST_MATCH},
+
+  // - Child combinator '&gt;'
+  {name: &quot;Child combinator, matching element that is a child of an element with id (1)&quot;,                       selector: &quot;#child&gt;div&quot;,                          ctx: &quot;&quot;, expect: [&quot;child-div1&quot;, &quot;child-div4&quot;], level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Child combinator, matching element with id that is a child of an element (1)&quot;,                       selector: &quot;div&gt;#child-div1&quot;,                     ctx: &quot;&quot;, expect: [&quot;child-div1&quot;],               level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Child combinator, matching element with id that is a child of an element with id (1)&quot;,               selector: &quot;#child&gt;#child-div1&quot;,                  ctx: &quot;&quot;, expect: [&quot;child-div1&quot;],               level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Child combinator, matching element with id that is a child of an element with class (1)&quot;,            selector: &quot;#child-div1&gt;.child-div2&quot;,             ctx: &quot;&quot;, expect: [&quot;child-div2&quot;],               level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Child combinator, matching element with class that is a child of an element with class (1)&quot;,         selector: &quot;.child-div1&gt;.child-div2&quot;,             ctx: &quot;&quot;, expect: [&quot;child-div2&quot;],               level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Child combinator, not matching element with id that is not a child of an element with id&quot;,       selector: &quot;#child&gt;#child-div3&quot;,                  ctx: &quot;&quot;, expect: [] /*no matches*/,            level: 2, testType: TEST_FIND},
+  {name: &quot;Child combinator, not matching element with id that is not a child of an element with class&quot;,    selector: &quot;#child-div1&gt;.child-div3&quot;,             ctx: &quot;&quot;, expect: [] /*no matches*/,            level: 2, testType: TEST_FIND},
+  {name: &quot;Child combinator, not matching element with class that is not a child of an element with class&quot;, selector: &quot;.child-div1&gt;.child-div3&quot;,             ctx: &quot;&quot;, expect: [] /*no matches*/,            level: 2, testType: TEST_FIND},
+  {name: &quot;Child combinator, surrounded by whitespace (1)&quot;,                                                     selector: &quot;#child-div1\t\r\n&gt;\t\r\n#child-div2&quot;, ctx: &quot;&quot;, expect: [&quot;child-div2&quot;],               level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Child combinator, whitespace after (1)&quot;,                                                             selector: &quot;#child-div1&gt;\t\r\n#child-div2&quot;,       ctx: &quot;&quot;, expect: [&quot;child-div2&quot;],               level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Child combinator, whitespace before (1)&quot;,                                                            selector: &quot;#child-div1\t\r\n&gt;#child-div2&quot;,       ctx: &quot;&quot;, expect: [&quot;child-div2&quot;],               level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Child combinator, no whitespace (1)&quot;,                                                                selector: &quot;#child-div1&gt;#child-div2&quot;,             ctx: &quot;&quot;, expect: [&quot;child-div2&quot;],               level: 2, testType: TEST_FIND | TEST_MATCH},
+
+  // - Adjacent sibling combinator '+'
+  {name: &quot;Adjacent sibling combinator, matching element that is an adjacent sibling of an element with id (1)&quot;,                 selector: &quot;#adjacent-div2+div&quot;,                                         ctx: &quot;&quot;, expect: [&quot;adjacent-div4&quot;], level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element (1)&quot;,                 selector: &quot;div+#adjacent-div4&quot;,                                         ctx: &quot;&quot;, expect: [&quot;adjacent-div4&quot;], level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Adjacent sibling combinator, matching element with id that is an adjacent sibling of an element with id (1)&quot;,         selector: &quot;#adjacent-div2+#adjacent-div4&quot;,                              ctx: &quot;&quot;, expect: [&quot;adjacent-div4&quot;], level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with id (1)&quot;,      selector: &quot;#adjacent-div2+.adjacent-div4&quot;,                              ctx: &quot;&quot;, expect: [&quot;adjacent-div4&quot;], level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Adjacent sibling combinator, matching element with class that is an adjacent sibling of an element with class (1)&quot;,   selector: &quot;.adjacent-div2+.adjacent-div4&quot;,                              ctx: &quot;&quot;, expect: [&quot;adjacent-div4&quot;], level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Adjacent sibling combinator, matching p element that is an adjacent sibling of a div element (1)&quot;,                    selector: &quot;#adjacent div+p&quot;,                                            ctx: &quot;&quot;, expect: [&quot;adjacent-p2&quot;],   level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Adjacent sibling combinator, not matching element with id that is not an adjacent sibling of an element with id&quot;, selector: &quot;#adjacent-div2+#adjacent-p2, #adjacent-div2+#adjacent-div1&quot;, ctx: &quot;&quot;, expect: [] /*no matches*/, level: 2, testType: TEST_FIND},
+  {name: &quot;Adjacent sibling combinator, surrounded by whitespace (1)&quot;,                                                           selector: &quot;#adjacent-p2\t\r\n+\t\r\n#adjacent-p3&quot;,                      ctx: &quot;&quot;, expect: [&quot;adjacent-p3&quot;],   level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Adjacent sibling combinator, whitespace after (1)&quot;,                                                                   selector: &quot;#adjacent-p2+\t\r\n#adjacent-p3&quot;,                            ctx: &quot;&quot;, expect: [&quot;adjacent-p3&quot;],   level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Adjacent sibling combinator, whitespace before (1)&quot;,                                                                  selector: &quot;#adjacent-p2\t\r\n+#adjacent-p3&quot;,                            ctx: &quot;&quot;, expect: [&quot;adjacent-p3&quot;],   level: 2, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Adjacent sibling combinator, no whitespace (1)&quot;,                                                                      selector: &quot;#adjacent-p2+#adjacent-p3&quot;,                                  ctx: &quot;&quot;, expect: [&quot;adjacent-p3&quot;],   level: 2, testType: TEST_FIND | TEST_MATCH},
+
+  // - General sibling combinator ~ (Level 3)
+  {name: &quot;General sibling combinator, matching element that is a sibling of an element with id (1)&quot;,                    selector: &quot;#sibling-div2~div&quot;,                                        ctx: &quot;&quot;, expect: [&quot;sibling-div4&quot;, &quot;sibling-div6&quot;], level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;General sibling combinator, matching element with id that is a sibling of an element (1)&quot;,                    selector: &quot;div~#sibling-div4&quot;,                                        ctx: &quot;&quot;, expect: [&quot;sibling-div4&quot;],                 level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;General sibling combinator, matching element with id that is a sibling of an element with id (1)&quot;,            selector: &quot;#sibling-div2~#sibling-div4&quot;,                              ctx: &quot;&quot;, expect: [&quot;sibling-div4&quot;],                 level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;General sibling combinator, matching element with class that is a sibling of an element with id (1)&quot;,         selector: &quot;#sibling-div2~.sibling-div&quot;,                               ctx: &quot;&quot;, expect: [&quot;sibling-div4&quot;, &quot;sibling-div6&quot;],                 level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;General sibling combinator, matching p element that is a sibling of a div element (1)&quot;,                       selector: &quot;#sibling div~p&quot;,                                           ctx: &quot;&quot;, expect: [&quot;sibling-p2&quot;, &quot;sibling-p3&quot;],                   level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;General sibling combinator, not matching element with id that is not a sibling after a p element (1)&quot;,        selector: &quot;#sibling&gt;p~div&quot;,                                           ctx: &quot;&quot;, expect: [] /*no matches*/,                level: 3, testType: TEST_FIND},
+  {name: &quot;General sibling combinator, not matching element with id that is not a sibling after an element with id&quot;, selector: &quot;#sibling-div2~#sibling-div3, #sibling-div2~#sibling-div1&quot;, ctx: &quot;&quot;, expect: [] /*no matches*/,                level: 3, testType: TEST_FIND},
+  {name: &quot;General sibling combinator, surrounded by whitespace (1)&quot;,                                                    selector: &quot;#sibling-p2\t\r\n~\t\r\n#sibling-p3&quot;,                      ctx: &quot;&quot;, expect: [&quot;sibling-p3&quot;],                   level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;General sibling combinator, whitespace after (1)&quot;,                                                            selector: &quot;#sibling-p2~\t\r\n#sibling-p3&quot;,                            ctx: &quot;&quot;, expect: [&quot;sibling-p3&quot;],                   level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;General sibling combinator, whitespace before (1)&quot;,                                                           selector: &quot;#sibling-p2\t\r\n~#sibling-p3&quot;,                            ctx: &quot;&quot;, expect: [&quot;sibling-p3&quot;],                   level: 3, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;General sibling combinator, no whitespace (1)&quot;,                                                               selector: &quot;#sibling-p2~#sibling-p3&quot;,                                  ctx: &quot;&quot;, expect: [&quot;sibling-p3&quot;],                   level: 3, testType: TEST_FIND | TEST_MATCH},
+
+  // Group of selectors (comma)
+  {name: &quot;Syntax, group of selectors separator, surrounded by whitespace (1)&quot;, selector: &quot;#group em\t\r \n,\t\r \n#group strong&quot;, ctx: &quot;&quot;, expect: [&quot;group-em1&quot;, &quot;group-strong1&quot;], level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Syntax, group of selectors separator, whitespace after (1)&quot;,         selector: &quot;#group em,\t\r\n#group strong&quot;,         ctx: &quot;&quot;, expect: [&quot;group-em1&quot;, &quot;group-strong1&quot;], level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Syntax, group of selectors separator, whitespace before (1)&quot;,        selector: &quot;#group em\t\r\n,#group strong&quot;,         ctx: &quot;&quot;, expect: [&quot;group-em1&quot;, &quot;group-strong1&quot;], level: 1, testType: TEST_FIND | TEST_MATCH},
+  {name: &quot;Syntax, group of selectors separator, no whitespace (1)&quot;,            selector: &quot;#group em,#group strong&quot;,               ctx: &quot;&quot;, expect: [&quot;group-em1&quot;, &quot;group-strong1&quot;], level: 1, testType: TEST_FIND | TEST_MATCH},
+];
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeattributesexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangeattributesexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-attributes-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-attributes-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-attributes-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-attributes-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Range attributes 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeattributeshtmlfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangeattributeshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-attributes.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-attributes.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-attributes.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-attributes.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;Range attributes&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Ms2ger&quot; href=&quot;mailto:ms2ger@gmail.com&quot;&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  var r = document.createRange();
+  assert_equals(r.startContainer, document)
+  assert_equals(r.endContainer, document)
+  assert_equals(r.startOffset, 0)
+  assert_equals(r.endOffset, 0)
+  assert_true(r.collapsed)
+  r.detach()
+  assert_equals(r.startContainer, document)
+  assert_equals(r.endContainer, document)
+  assert_equals(r.startOffset, 0)
+  assert_equals(r.endOffset, 0)
+  assert_true(r.collapsed)
+})
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecloneContentsexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangecloneContentsexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-cloneContents-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-cloneContents-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-cloneContents-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-cloneContents-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,187 @@
</span><ins>+To debug test failures, add a query parameter &quot;subtest&quot; with the test id (like &quot;?subtest=5&quot;). Only that test will be run. Then you can look at the resulting iframe in the DOM.
+
+
+PASS Range.detach() 
+PASS Resulting DOM for range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Resulting cursor position for range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Returned fragment for range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Resulting DOM for range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Resulting cursor position for range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Returned fragment for range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Resulting DOM for range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Resulting cursor position for range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Returned fragment for range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Resulting DOM for range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Resulting cursor position for range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Returned fragment for range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Resulting DOM for range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Resulting cursor position for range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Returned fragment for range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Resulting DOM for range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Resulting cursor position for range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Returned fragment for range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Resulting DOM for range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Resulting cursor position for range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Returned fragment for range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Resulting DOM for range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Resulting cursor position for range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Returned fragment for range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Resulting DOM for range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Resulting cursor position for range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Returned fragment for range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Resulting DOM for range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Resulting cursor position for range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Returned fragment for range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Resulting DOM for range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Resulting cursor position for range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Returned fragment for range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Resulting DOM for range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Resulting cursor position for range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Returned fragment for range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Resulting DOM for range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Resulting cursor position for range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Returned fragment for range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Resulting DOM for range 13 [document.head, 1, document.head, 1] 
+PASS Resulting cursor position for range 13 [document.head, 1, document.head, 1] 
+PASS Returned fragment for range 13 [document.head, 1, document.head, 1] 
+PASS Resulting DOM for range 14 [document.body, 4, document.body, 5] 
+PASS Resulting cursor position for range 14 [document.body, 4, document.body, 5] 
+PASS Returned fragment for range 14 [document.body, 4, document.body, 5] 
+PASS Resulting DOM for range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Resulting cursor position for range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Returned fragment for range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Resulting DOM for range 16 [paras[0], 0, paras[0], 1] 
+PASS Resulting cursor position for range 16 [paras[0], 0, paras[0], 1] 
+PASS Returned fragment for range 16 [paras[0], 0, paras[0], 1] 
+PASS Resulting DOM for range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Resulting cursor position for range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Returned fragment for range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Resulting DOM for range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Resulting cursor position for range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Returned fragment for range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Resulting DOM for range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Resulting cursor position for range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Returned fragment for range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Resulting DOM for range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Resulting cursor position for range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Returned fragment for range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Resulting DOM for range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Resulting cursor position for range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Returned fragment for range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Resulting DOM for range 22 [testDiv, 2, paras[4], 1] 
+PASS Resulting cursor position for range 22 [testDiv, 2, paras[4], 1] 
+PASS Returned fragment for range 22 [testDiv, 2, paras[4], 1] 
+PASS Resulting DOM for range 23 [document, 0, document, 1] 
+PASS Resulting cursor position for range 23 [document, 0, document, 1] 
+PASS Returned fragment for range 23 [document, 0, document, 1] 
+FAIL Resulting DOM for range 24 [document, 0, document, 2] assert_throws: function &quot;function () {
+        actualRange.cloneContents();
+      }&quot; did not throw
+FAIL Resulting cursor position for range 24 [document, 0, document, 2] undefined is not an object (evaluating 'actualRoots')
+PASS Returned fragment for range 24 [document, 0, document, 2] 
+PASS Resulting DOM for range 25 [comment, 2, comment, 3] 
+PASS Resulting cursor position for range 25 [comment, 2, comment, 3] 
+PASS Returned fragment for range 25 [comment, 2, comment, 3] 
+PASS Resulting DOM for range 26 [testDiv, 0, comment, 5] 
+PASS Resulting cursor position for range 26 [testDiv, 0, comment, 5] 
+PASS Returned fragment for range 26 [testDiv, 0, comment, 5] 
+PASS Resulting DOM for range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Resulting cursor position for range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Returned fragment for range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Resulting DOM for range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Resulting cursor position for range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Returned fragment for range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Resulting DOM for range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Resulting cursor position for range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Returned fragment for range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Resulting DOM for range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Resulting cursor position for range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Returned fragment for range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Resulting DOM for range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Resulting cursor position for range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Returned fragment for range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Resulting DOM for range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Resulting cursor position for range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Returned fragment for range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Resulting DOM for range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Resulting cursor position for range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Returned fragment for range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Resulting DOM for range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Resulting cursor position for range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Returned fragment for range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Resulting DOM for range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Resulting cursor position for range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Returned fragment for range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Resulting DOM for range 36 [docfrag, 0, docfrag, 0] 
+PASS Resulting cursor position for range 36 [docfrag, 0, docfrag, 0] 
+PASS Returned fragment for range 36 [docfrag, 0, docfrag, 0] 
+PASS Resulting DOM for range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Resulting cursor position for range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Returned fragment for range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Resulting DOM for range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Resulting cursor position for range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Returned fragment for range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Resulting DOM for range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Resulting cursor position for range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Returned fragment for range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Resulting DOM for range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Resulting cursor position for range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Returned fragment for range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Resulting DOM for range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Resulting cursor position for range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Returned fragment for range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Resulting DOM for range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Resulting cursor position for range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Returned fragment for range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Resulting DOM for range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Resulting cursor position for range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Returned fragment for range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Resulting DOM for range 44 [paras[0], 0, paras[0], 0] 
+PASS Resulting cursor position for range 44 [paras[0], 0, paras[0], 0] 
+PASS Returned fragment for range 44 [paras[0], 0, paras[0], 0] 
+PASS Resulting DOM for range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Resulting cursor position for range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Returned fragment for range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Resulting DOM for range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Resulting cursor position for range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Returned fragment for range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Resulting DOM for range 47 [document.documentElement, 1, document.body, 0] 
+PASS Resulting cursor position for range 47 [document.documentElement, 1, document.body, 0] 
+PASS Returned fragment for range 47 [document.documentElement, 1, document.body, 0] 
+PASS Resulting DOM for range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Resulting cursor position for range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Returned fragment for range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Resulting DOM for range 49 [document, 1, document, 2] 
+PASS Resulting cursor position for range 49 [document, 1, document, 2] 
+PASS Returned fragment for range 49 [document, 1, document, 2] 
+PASS Resulting DOM for range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Resulting cursor position for range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Returned fragment for range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Resulting DOM for range 51 [paras[3], 1, comment, 8] 
+PASS Resulting cursor position for range 51 [paras[3], 1, comment, 8] 
+PASS Returned fragment for range 51 [paras[3], 1, comment, 8] 
+PASS Resulting DOM for range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Resulting cursor position for range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Returned fragment for range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Resulting DOM for range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Resulting cursor position for range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Returned fragment for range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Resulting DOM for range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Resulting cursor position for range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Returned fragment for range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Resulting DOM for range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Resulting cursor position for range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Returned fragment for range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Resulting DOM for range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Resulting cursor position for range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Returned fragment for range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Resulting DOM for range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Resulting cursor position for range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Returned fragment for range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Resulting DOM for range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Resulting cursor position for range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Returned fragment for range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Resulting DOM for range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Resulting cursor position for range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Returned fragment for range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecloneContentshtmlfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangecloneContentshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-cloneContents.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-cloneContents.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-cloneContents.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-cloneContents.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,457 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Range.cloneContents() tests&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Aryeh Gregor&quot; href=ayg@aryeh.name&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;p&gt;To debug test failures, add a query parameter &quot;subtest&quot; with the test id (like
+&quot;?subtest=5&quot;).  Only that test will be run.  Then you can look at the resulting
+iframe in the DOM.
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;script src=../common.js&gt;&lt;/script&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+
+testDiv.parentNode.removeChild(testDiv);
+
+var actualIframe = document.createElement(&quot;iframe&quot;);
+actualIframe.style.display = &quot;none&quot;;
+document.body.appendChild(actualIframe);
+
+var expectedIframe = document.createElement(&quot;iframe&quot;);
+expectedIframe.style.display = &quot;none&quot;;
+document.body.appendChild(expectedIframe);
+
+function myCloneContents(range) {
+  // &quot;Let frag be a new DocumentFragment whose ownerDocument is the same as
+  // the ownerDocument of the context object's start node.&quot;
+  var ownerDoc = range.startContainer.nodeType == Node.DOCUMENT_NODE
+    ? range.startContainer
+    : range.startContainer.ownerDocument;
+  var frag = ownerDoc.createDocumentFragment();
+
+  // &quot;If the context object's start and end are the same, abort this method,
+  // returning frag.&quot;
+  if (range.startContainer == range.endContainer
+  &amp;&amp; range.startOffset == range.endOffset) {
+    return frag;
+  }
+
+  // &quot;Let original start node, original start offset, original end node, and
+  // original end offset be the context object's start and end nodes and
+  // offsets, respectively.&quot;
+  var originalStartNode = range.startContainer;
+  var originalStartOffset = range.startOffset;
+  var originalEndNode = range.endContainer;
+  var originalEndOffset = range.endOffset;
+
+  // &quot;If original start node and original end node are the same, and they are
+  // a Text, ProcessingInstruction, or Comment node:&quot;
+  if (range.startContainer == range.endContainer
+  &amp;&amp; (range.startContainer.nodeType == Node.TEXT_NODE
+  || range.startContainer.nodeType == Node.COMMENT_NODE
+  || range.startContainer.nodeType == Node.PROCESSING_INSTRUCTION_NODE)) {
+    // &quot;Let clone be the result of calling cloneNode(false) on original
+    // start node.&quot;
+    var clone = originalStartNode.cloneNode(false);
+
+    // &quot;Set the data of clone to the result of calling
+    // substringData(original start offset, original end offset − original
+    // start offset) on original start node.&quot;
+    clone.data = originalStartNode.substringData(originalStartOffset,
+      originalEndOffset - originalStartOffset);
+
+    // &quot;Append clone as the last child of frag.&quot;
+    frag.appendChild(clone);
+
+    // &quot;Abort this method, returning frag.&quot;
+    return frag;
+  }
+
+  // &quot;Let common ancestor equal original start node.&quot;
+  var commonAncestor = originalStartNode;
+
+  // &quot;While common ancestor is not an ancestor container of original end
+  // node, set common ancestor to its own parent.&quot;
+  while (!isAncestorContainer(commonAncestor, originalEndNode)) {
+    commonAncestor = commonAncestor.parentNode;
+  }
+
+  // &quot;If original start node is an ancestor container of original end node,
+  // let first partially contained child be null.&quot;
+  var firstPartiallyContainedChild;
+  if (isAncestorContainer(originalStartNode, originalEndNode)) {
+    firstPartiallyContainedChild = null;
+  // &quot;Otherwise, let first partially contained child be the first child of
+  // common ancestor that is partially contained in the context object.&quot;
+  } else {
+    for (var i = 0; i &lt; commonAncestor.childNodes.length; i++) {
+      if (isPartiallyContained(commonAncestor.childNodes[i], range)) {
+        firstPartiallyContainedChild = commonAncestor.childNodes[i];
+        break;
+      }
+    }
+    if (!firstPartiallyContainedChild) {
+      throw &quot;Spec bug: no first partially contained child!&quot;;
+    }
+  }
+
+  // &quot;If original end node is an ancestor container of original start node,
+  // let last partially contained child be null.&quot;
+  var lastPartiallyContainedChild;
+  if (isAncestorContainer(originalEndNode, originalStartNode)) {
+    lastPartiallyContainedChild = null;
+  // &quot;Otherwise, let last partially contained child be the last child of
+  // common ancestor that is partially contained in the context object.&quot;
+  } else {
+    for (var i = commonAncestor.childNodes.length - 1; i &gt;= 0; i--) {
+      if (isPartiallyContained(commonAncestor.childNodes[i], range)) {
+        lastPartiallyContainedChild = commonAncestor.childNodes[i];
+        break;
+      }
+    }
+    if (!lastPartiallyContainedChild) {
+      throw &quot;Spec bug: no last partially contained child!&quot;;
+    }
+  }
+
+  // &quot;Let contained children be a list of all children of common ancestor
+  // that are contained in the context object, in tree order.&quot;
+  //
+  // &quot;If any member of contained children is a DocumentType, raise a
+  // HIERARCHY_REQUEST_ERR exception and abort these steps.&quot;
+  var containedChildren = [];
+  for (var i = 0; i &lt; commonAncestor.childNodes.length; i++) {
+    if (isContained(commonAncestor.childNodes[i], range)) {
+      if (commonAncestor.childNodes[i].nodeType
+      == Node.DOCUMENT_TYPE_NODE) {
+        return &quot;HIERARCHY_REQUEST_ERR&quot;;
+      }
+      containedChildren.push(commonAncestor.childNodes[i]);
+    }
+  }
+
+  // &quot;If first partially contained child is a Text, ProcessingInstruction, or Comment node:&quot;
+  if (firstPartiallyContainedChild
+  &amp;&amp; (firstPartiallyContainedChild.nodeType == Node.TEXT_NODE
+  || firstPartiallyContainedChild.nodeType == Node.COMMENT_NODE
+  || firstPartiallyContainedChild.nodeType == Node.PROCESSING_INSTRUCTION_NODE)) {
+    // &quot;Let clone be the result of calling cloneNode(false) on original
+    // start node.&quot;
+    var clone = originalStartNode.cloneNode(false);
+
+    // &quot;Set the data of clone to the result of calling substringData() on
+    // original start node, with original start offset as the first
+    // argument and (length of original start node − original start offset)
+    // as the second.&quot;
+    clone.data = originalStartNode.substringData(originalStartOffset,
+      nodeLength(originalStartNode) - originalStartOffset);
+
+    // &quot;Append clone as the last child of frag.&quot;
+    frag.appendChild(clone);
+  // &quot;Otherwise, if first partially contained child is not null:&quot;
+  } else if (firstPartiallyContainedChild) {
+    // &quot;Let clone be the result of calling cloneNode(false) on first
+    // partially contained child.&quot;
+    var clone = firstPartiallyContainedChild.cloneNode(false);
+
+    // &quot;Append clone as the last child of frag.&quot;
+    frag.appendChild(clone);
+
+    // &quot;Let subrange be a new Range whose start is (original start node,
+    // original start offset) and whose end is (first partially contained
+    // child, length of first partially contained child).&quot;
+    var subrange = ownerDoc.createRange();
+    subrange.setStart(originalStartNode, originalStartOffset);
+    subrange.setEnd(firstPartiallyContainedChild,
+      nodeLength(firstPartiallyContainedChild));
+
+    // &quot;Let subfrag be the result of calling cloneContents() on
+    // subrange.&quot;
+    var subfrag = myCloneContents(subrange);
+
+    // &quot;For each child of subfrag, in order, append that child to clone as
+    // its last child.&quot;
+    for (var i = 0; i &lt; subfrag.childNodes.length; i++) {
+      clone.appendChild(subfrag.childNodes[i]);
+    }
+  }
+
+  // &quot;For each contained child in contained children:&quot;
+  for (var i = 0; i &lt; containedChildren.length; i++) {
+    // &quot;Let clone be the result of calling cloneNode(true) of contained
+    // child.&quot;
+    var clone = containedChildren[i].cloneNode(true);
+
+    // &quot;Append clone as the last child of frag.&quot;
+    frag.appendChild(clone);
+  }
+
+  // &quot;If last partially contained child is a Text, ProcessingInstruction, or Comment node:&quot;
+  if (lastPartiallyContainedChild
+  &amp;&amp; (lastPartiallyContainedChild.nodeType == Node.TEXT_NODE
+  || lastPartiallyContainedChild.nodeType == Node.COMMENT_NODE
+  || lastPartiallyContainedChild.nodeType == Node.PROCESSING_INSTRUCTION_NODE)) {
+    // &quot;Let clone be the result of calling cloneNode(false) on original
+    // end node.&quot;
+    var clone = originalEndNode.cloneNode(false);
+
+    // &quot;Set the data of clone to the result of calling substringData(0,
+    // original end offset) on original end node.&quot;
+    clone.data = originalEndNode.substringData(0, originalEndOffset);
+
+    // &quot;Append clone as the last child of frag.&quot;
+    frag.appendChild(clone);
+  // &quot;Otherwise, if last partially contained child is not null:&quot;
+  } else if (lastPartiallyContainedChild) {
+    // &quot;Let clone be the result of calling cloneNode(false) on last
+    // partially contained child.&quot;
+    var clone = lastPartiallyContainedChild.cloneNode(false);
+
+    // &quot;Append clone as the last child of frag.&quot;
+    frag.appendChild(clone);
+
+    // &quot;Let subrange be a new Range whose start is (last partially
+    // contained child, 0) and whose end is (original end node, original
+    // end offset).&quot;
+    var subrange = ownerDoc.createRange();
+    subrange.setStart(lastPartiallyContainedChild, 0);
+    subrange.setEnd(originalEndNode, originalEndOffset);
+
+    // &quot;Let subfrag be the result of calling cloneContents() on
+    // subrange.&quot;
+    var subfrag = myCloneContents(subrange);
+
+    // &quot;For each child of subfrag, in order, append that child to clone as
+    // its last child.&quot;
+    for (var i = 0; i &lt; subfrag.childNodes.length; i++) {
+      clone.appendChild(subfrag.childNodes[i]);
+    }
+  }
+
+  // &quot;Return frag.&quot;
+  return frag;
+}
+
+function restoreIframe(iframe, i) {
+  // Most of this function is designed to work around the fact that Opera
+  // doesn't let you add a doctype to a document that no longer has one, in
+  // any way I can figure out.  I eventually compromised on something that
+  // will still let Opera pass most tests that don't actually involve
+  // doctypes.
+  while (iframe.contentDocument.firstChild
+  &amp;&amp; iframe.contentDocument.firstChild.nodeType != Node.DOCUMENT_TYPE_NODE) {
+    iframe.contentDocument.removeChild(iframe.contentDocument.firstChild);
+  }
+
+  while (iframe.contentDocument.lastChild
+  &amp;&amp; iframe.contentDocument.lastChild.nodeType != Node.DOCUMENT_TYPE_NODE) {
+    iframe.contentDocument.removeChild(iframe.contentDocument.lastChild);
+  }
+
+  if (!iframe.contentDocument.firstChild) {
+    // This will throw an exception in Opera if we reach here, which is why
+    // I try to avoid it.  It will never happen in a browser that obeys the
+    // spec, so it's really just insurance.  I don't think it actually gets
+    // hit by anything.
+    iframe.contentDocument.appendChild(iframe.contentDocument.implementation.createDocumentType(&quot;html&quot;, &quot;&quot;, &quot;&quot;));
+  }
+  iframe.contentDocument.appendChild(referenceDoc.documentElement.cloneNode(true));
+  iframe.contentWindow.setupRangeTests();
+  iframe.contentWindow.testRangeInput = testRanges[i];
+  iframe.contentWindow.run();
+}
+
+function testCloneContents(i) {
+  restoreIframe(actualIframe, i);
+  restoreIframe(expectedIframe, i);
+
+  var actualRange = actualIframe.contentWindow.testRange;
+  var expectedRange = expectedIframe.contentWindow.testRange;
+  var actualFrag, expectedFrag;
+  var actualRoots, expectedRoots;
+
+  domTests[i].step(function() {
+    assert_equals(actualIframe.contentWindow.unexpectedException, null,
+      &quot;Unexpected exception thrown when setting up Range for actual cloneContents()&quot;);
+    assert_equals(expectedIframe.contentWindow.unexpectedException, null,
+      &quot;Unexpected exception thrown when setting up Range for simulated cloneContents()&quot;);
+    assert_equals(typeof actualRange, &quot;object&quot;,
+      &quot;typeof Range produced in actual iframe&quot;);
+    assert_equals(typeof expectedRange, &quot;object&quot;,
+      &quot;typeof Range produced in expected iframe&quot;);
+
+    // NOTE: We could just assume that cloneContents() doesn't change
+    // anything.  That would simplify these tests, taken in isolation.  But
+    // once we've already set up the whole apparatus for extractContents()
+    // and deleteContents(), we just reuse it here, on the theory of &quot;why
+    // not test some more stuff if it's easy to do&quot;.
+    //
+    // Just to be pedantic, we'll test not only that the tree we're
+    // modifying is the same in expected vs. actual, but also that all the
+    // nodes originally in it were the same.  Typically some nodes will
+    // become detached when the algorithm is run, but they still exist and
+    // references can still be kept to them, so they should also remain the
+    // same.
+    //
+    // We initialize the list to all nodes, and later on remove all the
+    // ones which still have parents, since the parents will presumably be
+    // tested for isEqualNode() and checking the children would be
+    // redundant.
+    var actualAllNodes = [];
+    var node = furthestAncestor(actualRange.startContainer);
+    do {
+      actualAllNodes.push(node);
+    } while (node = nextNode(node));
+
+    var expectedAllNodes = [];
+    var node = furthestAncestor(expectedRange.startContainer);
+    do {
+      expectedAllNodes.push(node);
+    } while (node = nextNode(node));
+
+    expectedFrag = myCloneContents(expectedRange);
+    if (typeof expectedFrag == &quot;string&quot;) {
+      assert_throws(expectedFrag, function() {
+        actualRange.cloneContents();
+      });
+    } else {
+      actualFrag = actualRange.cloneContents();
+    }
+
+    actualRoots = [];
+    for (var j = 0; j &lt; actualAllNodes.length; j++) {
+      if (!actualAllNodes[j].parentNode) {
+        actualRoots.push(actualAllNodes[j]);
+      }
+    }
+
+    expectedRoots = [];
+    for (var j = 0; j &lt; expectedAllNodes.length; j++) {
+      if (!expectedAllNodes[j].parentNode) {
+        expectedRoots.push(expectedAllNodes[j]);
+      }
+    }
+
+    for (var j = 0; j &lt; actualRoots.length; j++) {
+      assertNodesEqual(actualRoots[j], expectedRoots[j], j ? &quot;detached node #&quot; + j : &quot;tree root&quot;);
+
+      if (j == 0) {
+        // Clearly something is wrong if the node lists are different
+        // lengths.  We want to report this only after we've already
+        // checked the main tree for equality, though, so it doesn't
+        // mask more interesting errors.
+        assert_equals(actualRoots.length, expectedRoots.length,
+          &quot;Actual and expected DOMs were broken up into a different number of pieces by cloneContents() (this probably means you created or detached nodes when you weren't supposed to)&quot;);
+      }
+    }
+  });
+  domTests[i].done();
+
+  positionTests[i].step(function() {
+    assert_equals(actualIframe.contentWindow.unexpectedException, null,
+      &quot;Unexpected exception thrown when setting up Range for actual cloneContents()&quot;);
+    assert_equals(expectedIframe.contentWindow.unexpectedException, null,
+      &quot;Unexpected exception thrown when setting up Range for simulated cloneContents()&quot;);
+    assert_equals(typeof actualRange, &quot;object&quot;,
+      &quot;typeof Range produced in actual iframe&quot;);
+    assert_equals(typeof expectedRange, &quot;object&quot;,
+      &quot;typeof Range produced in expected iframe&quot;);
+
+    assert_true(actualRoots[0].isEqualNode(expectedRoots[0]),
+      &quot;The resulting DOMs were not equal, so comparing positions makes no sense&quot;);
+
+    if (typeof expectedFrag == &quot;string&quot;) {
+      // It's no longer true that, e.g., startContainer and endContainer
+      // must always be the same
+      return;
+    }
+
+    assert_equals(actualRange.startOffset, expectedRange.startOffset,
+      &quot;Unexpected startOffset after cloneContents()&quot;);
+    // How do we decide that the two nodes are equal, since they're in
+    // different trees?  Since the DOMs are the same, it's enough to check
+    // that the index in the parent is the same all the way up the tree.
+    // But we can first cheat by just checking they're actually equal.
+    assert_true(actualRange.startContainer.isEqualNode(expectedRange.startContainer),
+      &quot;Unexpected startContainer after cloneContents(), expected &quot; +
+      expectedRange.startContainer.nodeName.toLowerCase() + &quot; but got &quot; +
+      actualRange.startContainer.nodeName.toLowerCase());
+    var currentActual = actualRange.startContainer;
+    var currentExpected = expectedRange.startContainer;
+    var actual = &quot;&quot;;
+    var expected = &quot;&quot;;
+    while (currentActual &amp;&amp; currentExpected) {
+      actual = indexOf(currentActual) + &quot;-&quot; + actual;
+      expected = indexOf(currentExpected) + &quot;-&quot; + expected;
+
+      currentActual = currentActual.parentNode;
+      currentExpected = currentExpected.parentNode;
+    }
+    actual = actual.substr(0, actual.length - 1);
+    expected = expected.substr(0, expected.length - 1);
+    assert_equals(actual, expected,
+      &quot;startContainer superficially looks right but is actually the wrong node if you trace back its index in all its ancestors (I'm surprised this actually happened&quot;);
+  });
+  positionTests[i].done();
+
+  fragTests[i].step(function() {
+    assert_equals(actualIframe.contentWindow.unexpectedException, null,
+      &quot;Unexpected exception thrown when setting up Range for actual cloneContents()&quot;);
+    assert_equals(expectedIframe.contentWindow.unexpectedException, null,
+      &quot;Unexpected exception thrown when setting up Range for simulated cloneContents()&quot;);
+    assert_equals(typeof actualRange, &quot;object&quot;,
+      &quot;typeof Range produced in actual iframe&quot;);
+    assert_equals(typeof expectedRange, &quot;object&quot;,
+      &quot;typeof Range produced in expected iframe&quot;);
+
+    if (typeof expectedFrag == &quot;string&quot;) {
+      // Comparing makes no sense
+      return;
+    }
+    assertNodesEqual(actualFrag, expectedFrag,
+      &quot;returned fragment&quot;);
+  });
+  fragTests[i].done();
+}
+
+// First test a Range that has the no-op detach() called on it, synchronously
+test(function() {
+  var range = document.createRange();
+  range.detach();
+  assert_array_equals(range.cloneContents().childNodes, []);
+}, &quot;Range.detach()&quot;);
+
+var iStart = 0;
+var iStop = testRanges.length;
+
+if (/subtest=[0-9]+/.test(location.search)) {
+  var matches = /subtest=([0-9]+)/.exec(location.search);
+  iStart = Number(matches[1]);
+  iStop = Number(matches[1]) + 1;
+}
+
+var domTests = [];
+var positionTests = [];
+var fragTests = [];
+
+for (var i = iStart; i &lt; iStop; i++) {
+  domTests[i] = async_test(&quot;Resulting DOM for range &quot; + i + &quot; &quot; + testRanges[i]);
+  positionTests[i] = async_test(&quot;Resulting cursor position for range &quot; + i + &quot; &quot; + testRanges[i]);
+  fragTests[i] = async_test(&quot;Returned fragment for range &quot; + i + &quot; &quot; + testRanges[i]);
+}
+
+var referenceDoc = document.implementation.createHTMLDocument(&quot;&quot;);
+referenceDoc.removeChild(referenceDoc.documentElement);
+
+actualIframe.onload = function() {
+  expectedIframe.onload = function() {
+    for (var i = iStart; i &lt; iStop; i++) {
+      testCloneContents(i);
+    }
+  }
+  expectedIframe.src = &quot;Range-test-iframe.html&quot;;
+  referenceDoc.appendChild(actualIframe.contentDocument.documentElement.cloneNode(true));
+}
+actualIframe.src = &quot;Range-test-iframe.html&quot;;
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecloneRangeexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangecloneRangeexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-cloneRange-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-cloneRange-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-cloneRange-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-cloneRange-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,62 @@
</span><ins>+
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Range 13 [document.head, 1, document.head, 1] 
+PASS Range 14 [document.body, 4, document.body, 5] 
+PASS Range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Range 16 [paras[0], 0, paras[0], 1] 
+PASS Range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Range 22 [testDiv, 2, paras[4], 1] 
+PASS Range 23 [document, 0, document, 1] 
+PASS Range 24 [document, 0, document, 2] 
+PASS Range 25 [comment, 2, comment, 3] 
+PASS Range 26 [testDiv, 0, comment, 5] 
+PASS Range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Range 36 [docfrag, 0, docfrag, 0] 
+PASS Range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Range 44 [paras[0], 0, paras[0], 0] 
+PASS Range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Range 47 [document.documentElement, 1, document.body, 0] 
+PASS Range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Range 49 [document, 1, document, 2] 
+PASS Range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Range 51 [paras[3], 1, comment, 8] 
+PASS Range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecloneRangehtmlfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangecloneRangehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-cloneRange.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-cloneRange.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-cloneRange.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-cloneRange.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,112 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Range.cloneRange() and document.createRange() tests&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Aryeh Gregor&quot; href=ayg@aryeh.name&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;script src=../common.js&gt;&lt;/script&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+
+function testCloneRange(rangeEndpoints) {
+  var range;
+  if (rangeEndpoints == &quot;detached&quot;) {
+    range = document.createRange();
+    range.detach();
+    var clonedRange = range.cloneRange();
+    assert_equals(clonedRange.startContainer, range.startContainer,
+      &quot;startContainers must be equal after cloneRange()&quot;);
+    assert_equals(clonedRange.startOffset, range.startOffset,
+      &quot;startOffsets must be equal after cloneRange()&quot;);
+    assert_equals(clonedRange.endContainer, range.endContainer,
+      &quot;endContainers must be equal after cloneRange()&quot;);
+    assert_equals(clonedRange.endOffset, range.endOffset,
+      &quot;endOffsets must be equal after cloneRange()&quot;);
+    return;
+  }
+
+  // Have to account for Ranges involving Documents!  We could just create
+  // the Range from the current document unconditionally, but some browsers
+  // (WebKit) don't implement setStart() and setEnd() per spec and will throw
+  // spurious exceptions at the time of this writing.  No need to mask other
+  // bugs.
+  var ownerDoc = rangeEndpoints[0].nodeType == Node.DOCUMENT_NODE
+    ? rangeEndpoints[0]
+    : rangeEndpoints[0].ownerDocument;
+  range = ownerDoc.createRange();
+  // Here we throw in some createRange() tests, because why not.  Have to
+  // test it someplace.
+  assert_equals(range.startContainer, ownerDoc,
+    &quot;doc.createRange() must create Range whose startContainer is doc&quot;);
+  assert_equals(range.endContainer, ownerDoc,
+    &quot;doc.createRange() must create Range whose endContainer is doc&quot;);
+  assert_equals(range.startOffset, 0,
+    &quot;doc.createRange() must create Range whose startOffset is 0&quot;);
+  assert_equals(range.endOffset, 0,
+    &quot;doc.createRange() must create Range whose endOffset is 0&quot;);
+
+  range.setStart(rangeEndpoints[0], rangeEndpoints[1]);
+  range.setEnd(rangeEndpoints[2], rangeEndpoints[3]);
+
+  // Make sure we bail out now if setStart or setEnd are buggy, so it doesn't
+  // create misleading failures later.
+  assert_equals(range.startContainer, rangeEndpoints[0],
+    &quot;Sanity check on setStart()&quot;);
+  assert_equals(range.startOffset, rangeEndpoints[1],
+    &quot;Sanity check on setStart()&quot;);
+  assert_equals(range.endContainer, rangeEndpoints[2],
+    &quot;Sanity check on setEnd()&quot;);
+  assert_equals(range.endOffset, rangeEndpoints[3],
+    &quot;Sanity check on setEnd()&quot;);
+
+  var clonedRange = range.cloneRange();
+
+  assert_equals(clonedRange.startContainer, range.startContainer,
+    &quot;startContainers must be equal after cloneRange()&quot;);
+  assert_equals(clonedRange.startOffset, range.startOffset,
+    &quot;startOffsets must be equal after cloneRange()&quot;);
+  assert_equals(clonedRange.endContainer, range.endContainer,
+    &quot;endContainers must be equal after cloneRange()&quot;);
+  assert_equals(clonedRange.endOffset, range.endOffset,
+    &quot;endOffsets must be equal after cloneRange()&quot;);
+
+  // Make sure that modifying one doesn't affect the other.
+  var testNode1 = ownerDoc.createTextNode(&quot;testing&quot;);
+  var testNode2 = ownerDoc.createTextNode(&quot;testing with different length&quot;);
+
+  range.setStart(testNode1, 1);
+  range.setEnd(testNode1, 2);
+  assert_equals(clonedRange.startContainer, rangeEndpoints[0],
+    &quot;Modifying a Range must not modify its clone's startContainer&quot;);
+  assert_equals(clonedRange.startOffset, rangeEndpoints[1],
+    &quot;Modifying a Range must not modify its clone's startOffset&quot;);
+  assert_equals(clonedRange.endContainer, rangeEndpoints[2],
+    &quot;Modifying a Range must not modify its clone's endContainer&quot;);
+  assert_equals(clonedRange.endOffset, rangeEndpoints[3],
+    &quot;Modifying a Range must not modify its clone's endOffset&quot;);
+
+  clonedRange.setStart(testNode2, 3);
+  clonedRange.setStart(testNode2, 4);
+
+  assert_equals(range.startContainer, testNode1,
+    &quot;Modifying a clone must not modify the original Range's startContainer&quot;);
+  assert_equals(range.startOffset, 1,
+    &quot;Modifying a clone must not modify the original Range's startOffset&quot;);
+  assert_equals(range.endContainer, testNode1,
+    &quot;Modifying a clone must not modify the original Range's endContainer&quot;);
+  assert_equals(range.endOffset, 2,
+    &quot;Modifying a clone must not modify the original Range's endOffset&quot;);
+}
+
+var tests = [];
+for (var i = 0; i &lt; testRanges.length; i++) {
+  tests.push([
+    &quot;Range &quot; + i + &quot; &quot; + testRanges[i],
+    eval(testRanges[i])
+  ]);
+}
+generate_tests(testCloneRange, tests);
+
+testDiv.style.display = &quot;none&quot;;
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecollapseexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangecollapseexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-collapse-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-collapse-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-collapse-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-collapse-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,182 @@
</span><ins>+
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], toStart true 
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], toStart false 
+PASS Range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], toStart omitted 
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], toStart true 
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], toStart false 
+PASS Range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], toStart omitted 
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], toStart true 
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], toStart false 
+PASS Range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], toStart omitted 
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], toStart true 
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], toStart false 
+PASS Range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], toStart omitted 
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], toStart true 
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], toStart false 
+PASS Range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], toStart omitted 
+PASS Range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], toStart true 
+PASS Range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], toStart false 
+PASS Range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], toStart omitted 
+PASS Range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], toStart true 
+PASS Range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], toStart false 
+PASS Range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], toStart omitted 
+PASS Range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], toStart true 
+PASS Range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], toStart false 
+PASS Range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], toStart omitted 
+PASS Range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], toStart true 
+PASS Range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], toStart false 
+PASS Range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], toStart omitted 
+PASS Range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], toStart true 
+PASS Range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], toStart false 
+PASS Range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], toStart omitted 
+PASS Range 10 [document.documentElement, 0, document.documentElement, 1], toStart true 
+PASS Range 10 [document.documentElement, 0, document.documentElement, 1], toStart false 
+PASS Range 10 [document.documentElement, 0, document.documentElement, 1], toStart omitted 
+PASS Range 11 [document.documentElement, 0, document.documentElement, 2], toStart true 
+PASS Range 11 [document.documentElement, 0, document.documentElement, 2], toStart false 
+PASS Range 11 [document.documentElement, 0, document.documentElement, 2], toStart omitted 
+PASS Range 12 [document.documentElement, 1, document.documentElement, 2], toStart true 
+PASS Range 12 [document.documentElement, 1, document.documentElement, 2], toStart false 
+PASS Range 12 [document.documentElement, 1, document.documentElement, 2], toStart omitted 
+PASS Range 13 [document.head, 1, document.head, 1], toStart true 
+PASS Range 13 [document.head, 1, document.head, 1], toStart false 
+PASS Range 13 [document.head, 1, document.head, 1], toStart omitted 
+PASS Range 14 [document.body, 4, document.body, 5], toStart true 
+PASS Range 14 [document.body, 4, document.body, 5], toStart false 
+PASS Range 14 [document.body, 4, document.body, 5], toStart omitted 
+PASS Range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], toStart true 
+PASS Range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], toStart false 
+PASS Range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], toStart omitted 
+PASS Range 16 [paras[0], 0, paras[0], 1], toStart true 
+PASS Range 16 [paras[0], 0, paras[0], 1], toStart false 
+PASS Range 16 [paras[0], 0, paras[0], 1], toStart omitted 
+PASS Range 17 [detachedPara1, 0, detachedPara1, 1], toStart true 
+PASS Range 17 [detachedPara1, 0, detachedPara1, 1], toStart false 
+PASS Range 17 [detachedPara1, 0, detachedPara1, 1], toStart omitted 
+PASS Range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], toStart true 
+PASS Range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], toStart false 
+PASS Range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], toStart omitted 
+PASS Range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], toStart true 
+PASS Range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], toStart false 
+PASS Range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], toStart omitted 
+PASS Range 20 [paras[0].firstChild, 3, paras[3], 1], toStart true 
+PASS Range 20 [paras[0].firstChild, 3, paras[3], 1], toStart false 
+PASS Range 20 [paras[0].firstChild, 3, paras[3], 1], toStart omitted 
+PASS Range 21 [paras[0], 0, paras[0].firstChild, 7], toStart true 
+PASS Range 21 [paras[0], 0, paras[0].firstChild, 7], toStart false 
+PASS Range 21 [paras[0], 0, paras[0].firstChild, 7], toStart omitted 
+PASS Range 22 [testDiv, 2, paras[4], 1], toStart true 
+PASS Range 22 [testDiv, 2, paras[4], 1], toStart false 
+PASS Range 22 [testDiv, 2, paras[4], 1], toStart omitted 
+PASS Range 23 [document, 0, document, 1], toStart true 
+PASS Range 23 [document, 0, document, 1], toStart false 
+PASS Range 23 [document, 0, document, 1], toStart omitted 
+PASS Range 24 [document, 0, document, 2], toStart true 
+PASS Range 24 [document, 0, document, 2], toStart false 
+PASS Range 24 [document, 0, document, 2], toStart omitted 
+PASS Range 25 [comment, 2, comment, 3], toStart true 
+PASS Range 25 [comment, 2, comment, 3], toStart false 
+PASS Range 25 [comment, 2, comment, 3], toStart omitted 
+PASS Range 26 [testDiv, 0, comment, 5], toStart true 
+PASS Range 26 [testDiv, 0, comment, 5], toStart false 
+PASS Range 26 [testDiv, 0, comment, 5], toStart omitted 
+PASS Range 27 [foreignDoc, 1, foreignComment, 2], toStart true 
+PASS Range 27 [foreignDoc, 1, foreignComment, 2], toStart false 
+PASS Range 27 [foreignDoc, 1, foreignComment, 2], toStart omitted 
+PASS Range 28 [foreignDoc.body, 0, foreignTextNode, 36], toStart true 
+PASS Range 28 [foreignDoc.body, 0, foreignTextNode, 36], toStart false 
+PASS Range 28 [foreignDoc.body, 0, foreignTextNode, 36], toStart omitted 
+PASS Range 29 [xmlDoc, 1, xmlComment, 0], toStart true 
+PASS Range 29 [xmlDoc, 1, xmlComment, 0], toStart false 
+PASS Range 29 [xmlDoc, 1, xmlComment, 0], toStart omitted 
+PASS Range 30 [detachedTextNode, 0, detachedTextNode, 8], toStart true 
+PASS Range 30 [detachedTextNode, 0, detachedTextNode, 8], toStart false 
+PASS Range 30 [detachedTextNode, 0, detachedTextNode, 8], toStart omitted 
+PASS Range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], toStart true 
+PASS Range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], toStart false 
+PASS Range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], toStart omitted 
+PASS Range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], toStart true 
+PASS Range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], toStart false 
+PASS Range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], toStart omitted 
+PASS Range 33 [detachedComment, 3, detachedComment, 4], toStart true 
+PASS Range 33 [detachedComment, 3, detachedComment, 4], toStart false 
+PASS Range 33 [detachedComment, 3, detachedComment, 4], toStart omitted 
+PASS Range 34 [detachedForeignComment, 0, detachedForeignComment, 1], toStart true 
+PASS Range 34 [detachedForeignComment, 0, detachedForeignComment, 1], toStart false 
+PASS Range 34 [detachedForeignComment, 0, detachedForeignComment, 1], toStart omitted 
+PASS Range 35 [detachedXmlComment, 2, detachedXmlComment, 6], toStart true 
+PASS Range 35 [detachedXmlComment, 2, detachedXmlComment, 6], toStart false 
+PASS Range 35 [detachedXmlComment, 2, detachedXmlComment, 6], toStart omitted 
+PASS Range 36 [docfrag, 0, docfrag, 0], toStart true 
+PASS Range 36 [docfrag, 0, docfrag, 0], toStart false 
+PASS Range 36 [docfrag, 0, docfrag, 0], toStart omitted 
+PASS Range 37 [processingInstruction, 0, processingInstruction, 4], toStart true 
+PASS Range 37 [processingInstruction, 0, processingInstruction, 4], toStart false 
+PASS Range 37 [processingInstruction, 0, processingInstruction, 4], toStart omitted 
+PASS Range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1], toStart true 
+PASS Range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1], toStart false 
+PASS Range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1], toStart omitted 
+PASS Range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8], toStart true 
+PASS Range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8], toStart false 
+PASS Range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8], toStart omitted 
+PASS Range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], toStart true 
+PASS Range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], toStart false 
+PASS Range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1], toStart omitted 
+PASS Range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], toStart true 
+PASS Range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], toStart false 
+PASS Range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1], toStart omitted 
+PASS Range 42 [foreignDoc.head, 1, foreignDoc.head, 1], toStart true 
+PASS Range 42 [foreignDoc.head, 1, foreignDoc.head, 1], toStart false 
+PASS Range 42 [foreignDoc.head, 1, foreignDoc.head, 1], toStart omitted 
+PASS Range 43 [foreignDoc.body, 0, foreignDoc.body, 0], toStart true 
+PASS Range 43 [foreignDoc.body, 0, foreignDoc.body, 0], toStart false 
+PASS Range 43 [foreignDoc.body, 0, foreignDoc.body, 0], toStart omitted 
+PASS Range 44 [paras[0], 0, paras[0], 0], toStart true 
+PASS Range 44 [paras[0], 0, paras[0], 0], toStart false 
+PASS Range 44 [paras[0], 0, paras[0], 0], toStart omitted 
+PASS Range 45 [detachedPara1, 0, detachedPara1, 0], toStart true 
+PASS Range 45 [detachedPara1, 0, detachedPara1, 0], toStart false 
+PASS Range 45 [detachedPara1, 0, detachedPara1, 0], toStart omitted 
+PASS Range 46 [testDiv, 1, paras[2].firstChild, 5], toStart true 
+PASS Range 46 [testDiv, 1, paras[2].firstChild, 5], toStart false 
+PASS Range 46 [testDiv, 1, paras[2].firstChild, 5], toStart omitted 
+PASS Range 47 [document.documentElement, 1, document.body, 0], toStart true 
+PASS Range 47 [document.documentElement, 1, document.body, 0], toStart false 
+PASS Range 47 [document.documentElement, 1, document.body, 0], toStart omitted 
+PASS Range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0], toStart true 
+PASS Range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0], toStart false 
+PASS Range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0], toStart omitted 
+PASS Range 49 [document, 1, document, 2], toStart true 
+PASS Range 49 [document, 1, document, 2], toStart false 
+PASS Range 49 [document, 1, document, 2], toStart omitted 
+PASS Range 50 [paras[2].firstChild, 4, comment, 2], toStart true 
+PASS Range 50 [paras[2].firstChild, 4, comment, 2], toStart false 
+PASS Range 50 [paras[2].firstChild, 4, comment, 2], toStart omitted 
+PASS Range 51 [paras[3], 1, comment, 8], toStart true 
+PASS Range 51 [paras[3], 1, comment, 8], toStart false 
+PASS Range 51 [paras[3], 1, comment, 8], toStart omitted 
+PASS Range 52 [foreignDoc, 0, foreignDoc, 0], toStart true 
+PASS Range 52 [foreignDoc, 0, foreignDoc, 0], toStart false 
+PASS Range 52 [foreignDoc, 0, foreignDoc, 0], toStart omitted 
+PASS Range 53 [xmlDoc, 0, xmlDoc, 0], toStart true 
+PASS Range 53 [xmlDoc, 0, xmlDoc, 0], toStart false 
+PASS Range 53 [xmlDoc, 0, xmlDoc, 0], toStart omitted 
+PASS Range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], toStart true 
+PASS Range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], toStart false 
+PASS Range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7], toStart omitted 
+PASS Range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], toStart true 
+PASS Range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], toStart false 
+PASS Range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7], toStart omitted 
+PASS Range 56 [detachedComment, 5, detachedComment, 5], toStart true 
+PASS Range 56 [detachedComment, 5, detachedComment, 5], toStart false 
+PASS Range 56 [detachedComment, 5, detachedComment, 5], toStart omitted 
+PASS Range 57 [detachedForeignComment, 4, detachedForeignComment, 4], toStart true 
+PASS Range 57 [detachedForeignComment, 4, detachedForeignComment, 4], toStart false 
+PASS Range 57 [detachedForeignComment, 4, detachedForeignComment, 4], toStart omitted 
+PASS Range 58 [foreignDocfrag, 0, foreignDocfrag, 0], toStart true 
+PASS Range 58 [foreignDocfrag, 0, foreignDocfrag, 0], toStart false 
+PASS Range 58 [foreignDocfrag, 0, foreignDocfrag, 0], toStart omitted 
+PASS Range 59 [xmlDocfrag, 0, xmlDocfrag, 0], toStart true 
+PASS Range 59 [xmlDocfrag, 0, xmlDocfrag, 0], toStart false 
+PASS Range 59 [xmlDocfrag, 0, xmlDocfrag, 0], toStart omitted 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecollapsehtmlfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangecollapsehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-collapse.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-collapse.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-collapse.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-collapse.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,75 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Range.collapse() and .collapsed tests&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Aryeh Gregor&quot; href=ayg@aryeh.name&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;script src=../common.js&gt;&lt;/script&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+
+function testCollapse(rangeEndpoints, toStart) {
+  var range;
+  if (rangeEndpoints == &quot;detached&quot;) {
+    range = document.createRange();
+    range.detach(); // should be a no-op and therefore the following should not throw
+    range.collapse(toStart);
+    assert_equals(true, range.collapsed);
+  }
+
+  // Have to account for Ranges involving Documents!
+  var ownerDoc = rangeEndpoints[0].nodeType == Node.DOCUMENT_NODE
+    ? rangeEndpoints[0]
+    : rangeEndpoints[0].ownerDocument;
+  range = ownerDoc.createRange();
+  range.setStart(rangeEndpoints[0], rangeEndpoints[1]);
+  range.setEnd(rangeEndpoints[2], rangeEndpoints[3]);
+
+  var expectedContainer = toStart ? range.startContainer : range.endContainer;
+  var expectedOffset = toStart ? range.startOffset : range.endOffset;
+
+  assert_equals(range.collapsed, range.startContainer == range.endContainer
+    &amp;&amp; range.startOffset == range.endOffset,
+    &quot;collapsed must be true if and only if the start and end are equal&quot;);
+
+  if (toStart === undefined) {
+    range.collapse();
+  } else {
+    range.collapse(toStart);
+  }
+
+  assert_equals(range.startContainer, expectedContainer,
+    &quot;Wrong startContainer&quot;);
+  assert_equals(range.endContainer, expectedContainer,
+    &quot;Wrong endContainer&quot;);
+  assert_equals(range.startOffset, expectedOffset,
+    &quot;Wrong startOffset&quot;);
+  assert_equals(range.endOffset, expectedOffset,
+    &quot;Wrong endOffset&quot;);
+  assert_true(range.collapsed,
+    &quot;.collapsed must be set after .collapsed()&quot;);
+}
+
+var tests = [];
+for (var i = 0; i &lt; testRanges.length; i++) {
+  tests.push([
+    &quot;Range &quot; + i + &quot; &quot; + testRanges[i] + &quot;, toStart true&quot;,
+    eval(testRanges[i]),
+    true
+  ]);
+  tests.push([
+    &quot;Range &quot; + i + &quot; &quot; + testRanges[i] + &quot;, toStart false&quot;,
+    eval(testRanges[i]),
+    false
+  ]);
+  tests.push([
+    &quot;Range &quot; + i + &quot; &quot; + testRanges[i] + &quot;, toStart omitted&quot;,
+    eval(testRanges[i]),
+    undefined
+  ]);
+}
+generate_tests(testCollapse, tests);
+
+testDiv.style.display = &quot;none&quot;;
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecommonAncestorContainer2expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangecommonAncestorContainer2expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-commonAncestorContainer-2-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-commonAncestorContainer-2-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-commonAncestorContainer-2-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-commonAncestorContainer-2-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+
+PASS Detached Range 
+PASS Normal Ranges 
+PASS Range.commonAncestorContainer 
+PASS Range.commonAncestorContainer 1 
+PASS Range.commonAncestorContainer 2 
+PASS Range.commonAncestorContainer 3 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecommonAncestorContainer2htmlfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangecommonAncestorContainer2html"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-commonAncestorContainer-2.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-commonAncestorContainer-2.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-commonAncestorContainer-2.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-commonAncestorContainer-2.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,33 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Range.commonAncestorContainer&lt;/title&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  var range = document.createRange();
+  range.detach();
+  assert_equals(range.commonAncestorContainer, document);
+}, &quot;Detached Range&quot;)
+test(function() {
+  var df = document.createDocumentFragment();
+  var foo = df.appendChild(document.createElement(&quot;foo&quot;));
+  foo.appendChild(document.createTextNode(&quot;Foo&quot;));
+  var bar = df.appendChild(document.createElement(&quot;bar&quot;));
+  bar.appendChild(document.createComment(&quot;Bar&quot;));
+  [
+    // start node, start offset, end node, end offset, expected cAC
+    [foo, 0, bar, 0, df],
+    [foo, 0, foo.firstChild, 3, foo],
+    [foo.firstChild, 0, bar, 0, df],
+    [foo.firstChild, 3, bar.firstChild, 2, df]
+  ].forEach(function(t) {
+    test(function() {
+      var range = document.createRange();
+      range.setStart(t[0], t[1]);
+      range.setEnd(t[2], t[3]);
+      assert_equals(range.commonAncestorContainer, t[4]);
+    })
+  });
+}, &quot;Normal Ranges&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecommonAncestorContainerexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangecommonAncestorContainerexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-commonAncestorContainer-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-commonAncestorContainer-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-commonAncestorContainer-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-commonAncestorContainer-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,63 @@
</span><ins>+
+PASS 0: range [detached] 
+PASS 1: range [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS 2: range [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS 3: range [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS 4: range [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS 5: range [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS 6: range [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS 7: range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS 8: range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS 9: range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS 10: range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS 11: range [document.documentElement, 0, document.documentElement, 1] 
+PASS 12: range [document.documentElement, 0, document.documentElement, 2] 
+PASS 13: range [document.documentElement, 1, document.documentElement, 2] 
+PASS 14: range [document.head, 1, document.head, 1] 
+PASS 15: range [document.body, 4, document.body, 5] 
+PASS 16: range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS 17: range [paras[0], 0, paras[0], 1] 
+PASS 18: range [detachedPara1, 0, detachedPara1, 1] 
+PASS 19: range [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS 20: range [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS 21: range [paras[0].firstChild, 3, paras[3], 1] 
+PASS 22: range [paras[0], 0, paras[0].firstChild, 7] 
+PASS 23: range [testDiv, 2, paras[4], 1] 
+PASS 24: range [document, 0, document, 1] 
+PASS 25: range [document, 0, document, 2] 
+PASS 26: range [comment, 2, comment, 3] 
+PASS 27: range [testDiv, 0, comment, 5] 
+PASS 28: range [foreignDoc, 1, foreignComment, 2] 
+PASS 29: range [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS 30: range [xmlDoc, 1, xmlComment, 0] 
+PASS 31: range [detachedTextNode, 0, detachedTextNode, 8] 
+PASS 32: range [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS 33: range [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS 34: range [detachedComment, 3, detachedComment, 4] 
+PASS 35: range [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS 36: range [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS 37: range [docfrag, 0, docfrag, 0] 
+PASS 38: range [processingInstruction, 0, processingInstruction, 4] 
+PASS 39: range [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS 40: range [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS 41: range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS 42: range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS 43: range [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS 44: range [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS 45: range [paras[0], 0, paras[0], 0] 
+PASS 46: range [detachedPara1, 0, detachedPara1, 0] 
+PASS 47: range [testDiv, 1, paras[2].firstChild, 5] 
+PASS 48: range [document.documentElement, 1, document.body, 0] 
+PASS 49: range [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS 50: range [document, 1, document, 2] 
+PASS 51: range [paras[2].firstChild, 4, comment, 2] 
+PASS 52: range [paras[3], 1, comment, 8] 
+PASS 53: range [foreignDoc, 0, foreignDoc, 0] 
+PASS 54: range [xmlDoc, 0, xmlDoc, 0] 
+PASS 55: range [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS 56: range [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS 57: range [detachedComment, 5, detachedComment, 5] 
+PASS 58: range [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS 59: range [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS 60: range [xmlDocfrag, 0, xmlDocfrag, 0] 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecommonAncestorContainerhtmlfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangecommonAncestorContainerhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-commonAncestorContainer.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-commonAncestorContainer.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-commonAncestorContainer.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-commonAncestorContainer.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,40 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Range.commonAncestorContainer tests&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Aryeh Gregor&quot; href=ayg@aryeh.name&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;script src=../common.js&gt;&lt;/script&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+
+testRanges.unshift(&quot;[detached]&quot;);
+
+for (var i = 0; i &lt; testRanges.length; i++) {
+  test(function() {
+    var range;
+    if (i == 0) {
+      range = document.createRange();
+      range.detach();
+    } else {
+      range = rangeFromEndpoints(eval(testRanges[i]));
+    }
+
+    // &quot;Let container be start node.&quot;
+    var container = range.startContainer;
+
+    // &quot;While container is not an inclusive ancestor of end node, let
+    // container be container's parent.&quot;
+    while (container != range.endContainer
+    &amp;&amp; !isAncestor(container, range.endContainer)) {
+      container = container.parentNode;
+    }
+
+    // &quot;Return container.&quot;
+    assert_equals(range.commonAncestorContainer, container);
+  }, i + &quot;: range &quot; + testRanges[i]);
+}
+
+testDiv.style.display = &quot;none&quot;;
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecompareBoundaryPointsexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangecompareBoundaryPointsexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-compareBoundaryPoints-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-compareBoundaryPoints-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-compareBoundaryPoints-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-compareBoundaryPoints-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,8667 @@
</span><ins>+
+PASS 0,0,0: context range 0 [detached], argument range 0 [detached], how 0 
+PASS 0,0,1: context range 0 [detached], argument range 0 [detached], how 1 
+PASS 0,0,2: context range 0 [detached], argument range 0 [detached], how 2 
+PASS 0,0,3: context range 0 [detached], argument range 0 [detached], how 3 
+PASS 0,0,4: context range 0 [detached], argument range 0 [detached], how -1 
+PASS 0,0,5: context range 0 [detached], argument range 0 [detached], how 4 
+PASS 0,0,6: context range 0 [detached], argument range 0 [detached], how 5 
+PASS 0,0,7: context range 0 [detached], argument range 0 [detached], how NaN 
+PASS 0,0,8: context range 0 [detached], argument range 0 [detached], how -0 
+PASS 0,0,9: context range 0 [detached], argument range 0 [detached], how Infinity 
+PASS 0,0,10: context range 0 [detached], argument range 0 [detached], how -Infinity 
+PASS 0,0,11: context range 0 [detached], argument range 0 [detached], how 65535 
+PASS 0,0,12: context range 0 [detached], argument range 0 [detached], how 65536 
+PASS 0,0,13: context range 0 [detached], argument range 0 [detached], how 65537 
+PASS 0,0,14: context range 0 [detached], argument range 0 [detached], how 65538 
+PASS 0,0,15: context range 0 [detached], argument range 0 [detached], how 65539 
+PASS 0,0,16: context range 0 [detached], argument range 0 [detached], how 65540 
+PASS 0,0,17: context range 0 [detached], argument range 0 [detached], how -65537 
+PASS 0,0,18: context range 0 [detached], argument range 0 [detached], how -65536 
+PASS 0,0,19: context range 0 [detached], argument range 0 [detached], how -65535 
+PASS 0,0,20: context range 0 [detached], argument range 0 [detached], how -65534 
+PASS 0,0,21: context range 0 [detached], argument range 0 [detached], how -65533 
+PASS 0,0,22: context range 0 [detached], argument range 0 [detached], how -65532 
+PASS 0,0,23: context range 0 [detached], argument range 0 [detached], how 4294967295 
+PASS 0,0,24: context range 0 [detached], argument range 0 [detached], how 4294967296 
+PASS 0,0,25: context range 0 [detached], argument range 0 [detached], how 4294967297 
+PASS 0,0,26: context range 0 [detached], argument range 0 [detached], how 4294967298 
+PASS 0,0,27: context range 0 [detached], argument range 0 [detached], how 4294967299 
+PASS 0,0,28: context range 0 [detached], argument range 0 [detached], how 4294967300 
+PASS 0,0,29: context range 0 [detached], argument range 0 [detached], how -0.5 
+PASS 0,0,30: context range 0 [detached], argument range 0 [detached], how 0.5 
+PASS 0,0,31: context range 0 [detached], argument range 0 [detached], how 1.5 
+PASS 0,0,32: context range 0 [detached], argument range 0 [detached], how 2.5 
+PASS 0,0,33: context range 0 [detached], argument range 0 [detached], how 3.5 
+PASS 0,0,34: context range 0 [detached], argument range 0 [detached], how 4.5 
+PASS 0,0,35: context range 0 [detached], argument range 0 [detached], how -1.5 
+PASS 0,0,36: context range 0 [detached], argument range 0 [detached], how -0.5 
+PASS 0,0,37: context range 0 [detached], argument range 0 [detached], how 0.5 
+PASS 0,0,38: context range 0 [detached], argument range 0 [detached], how 1.5 
+PASS 0,0,39: context range 0 [detached], argument range 0 [detached], how 2.5 
+PASS 0,0,40: context range 0 [detached], argument range 0 [detached], how 3.5 
+PASS 0,0,41: context range 0 [detached], argument range 0 [detached], how -73.5 
+PASS 0,0,42: context range 0 [detached], argument range 0 [detached], how -72.5 
+PASS 0,0,43: context range 0 [detached], argument range 0 [detached], how -71.5 
+PASS 0,0,44: context range 0 [detached], argument range 0 [detached], how -70.5 
+PASS 0,0,45: context range 0 [detached], argument range 0 [detached], how -69.5 
+PASS 0,0,46: context range 0 [detached], argument range 0 [detached], how -68.5 
+PASS 0,0,47: context range 0 [detached], argument range 0 [detached], how &quot;0&quot; 
+PASS 0,0,48: context range 0 [detached], argument range 0 [detached], how &quot;1&quot; 
+PASS 0,0,49: context range 0 [detached], argument range 0 [detached], how &quot;2&quot; 
+PASS 0,0,50: context range 0 [detached], argument range 0 [detached], how &quot;3&quot; 
+PASS 0,0,51: context range 0 [detached], argument range 0 [detached], how &quot;-1&quot; 
+PASS 0,0,52: context range 0 [detached], argument range 0 [detached], how &quot;4&quot; 
+PASS 0,0,53: context range 0 [detached], argument range 0 [detached], how &quot;5&quot; 
+PASS 0,0,54: context range 0 [detached], argument range 0 [detached], how &quot;NaN&quot; 
+PASS 0,0,55: context range 0 [detached], argument range 0 [detached], how &quot;0&quot; 
+PASS 0,0,56: context range 0 [detached], argument range 0 [detached], how &quot;Infinity&quot; 
+PASS 0,0,57: context range 0 [detached], argument range 0 [detached], how &quot;-Infinity&quot; 
+PASS 0,0,58: context range 0 [detached], argument range 0 [detached], how &quot;65535&quot; 
+PASS 0,0,59: context range 0 [detached], argument range 0 [detached], how &quot;65536&quot; 
+PASS 0,0,60: context range 0 [detached], argument range 0 [detached], how &quot;65537&quot; 
+PASS 0,0,61: context range 0 [detached], argument range 0 [detached], how &quot;65538&quot; 
+PASS 0,0,62: context range 0 [detached], argument range 0 [detached], how &quot;65539&quot; 
+PASS 0,0,63: context range 0 [detached], argument range 0 [detached], how &quot;65540&quot; 
+PASS 0,0,64: context range 0 [detached], argument range 0 [detached], how &quot;-65537&quot; 
+PASS 0,0,65: context range 0 [detached], argument range 0 [detached], how &quot;-65536&quot; 
+PASS 0,0,66: context range 0 [detached], argument range 0 [detached], how &quot;-65535&quot; 
+PASS 0,0,67: context range 0 [detached], argument range 0 [detached], how &quot;-65534&quot; 
+PASS 0,0,68: context range 0 [detached], argument range 0 [detached], how &quot;-65533&quot; 
+PASS 0,0,69: context range 0 [detached], argument range 0 [detached], how &quot;-65532&quot; 
+PASS 0,0,70: context range 0 [detached], argument range 0 [detached], how &quot;4294967295&quot; 
+PASS 0,0,71: context range 0 [detached], argument range 0 [detached], how &quot;4294967296&quot; 
+PASS 0,0,72: context range 0 [detached], argument range 0 [detached], how &quot;4294967297&quot; 
+PASS 0,0,73: context range 0 [detached], argument range 0 [detached], how &quot;4294967298&quot; 
+PASS 0,0,74: context range 0 [detached], argument range 0 [detached], how &quot;4294967299&quot; 
+PASS 0,0,75: context range 0 [detached], argument range 0 [detached], how &quot;4294967300&quot; 
+PASS 0,0,76: context range 0 [detached], argument range 0 [detached], how &quot;-0.5&quot; 
+PASS 0,0,77: context range 0 [detached], argument range 0 [detached], how &quot;0.5&quot; 
+PASS 0,0,78: context range 0 [detached], argument range 0 [detached], how &quot;1.5&quot; 
+PASS 0,0,79: context range 0 [detached], argument range 0 [detached], how &quot;2.5&quot; 
+PASS 0,0,80: context range 0 [detached], argument range 0 [detached], how &quot;3.5&quot; 
+PASS 0,0,81: context range 0 [detached], argument range 0 [detached], how &quot;4.5&quot; 
+PASS 0,0,82: context range 0 [detached], argument range 0 [detached], how &quot;-1.5&quot; 
+PASS 0,0,83: context range 0 [detached], argument range 0 [detached], how &quot;-0.5&quot; 
+PASS 0,0,84: context range 0 [detached], argument range 0 [detached], how &quot;0.5&quot; 
+PASS 0,0,85: context range 0 [detached], argument range 0 [detached], how &quot;1.5&quot; 
+PASS 0,0,86: context range 0 [detached], argument range 0 [detached], how &quot;2.5&quot; 
+PASS 0,0,87: context range 0 [detached], argument range 0 [detached], how &quot;3.5&quot; 
+PASS 0,0,88: context range 0 [detached], argument range 0 [detached], how &quot;-73.5&quot; 
+PASS 0,0,89: context range 0 [detached], argument range 0 [detached], how &quot;-72.5&quot; 
+PASS 0,0,90: context range 0 [detached], argument range 0 [detached], how &quot;-71.5&quot; 
+PASS 0,0,91: context range 0 [detached], argument range 0 [detached], how &quot;-70.5&quot; 
+PASS 0,0,92: context range 0 [detached], argument range 0 [detached], how &quot;-69.5&quot; 
+PASS 0,0,93: context range 0 [detached], argument range 0 [detached], how &quot;-68.5&quot; 
+PASS 0,0,94: context range 0 [detached], argument range 0 [detached], how &quot;6.5536e4&quot; 
+PASS 0,0,95: context range 0 [detached], argument range 0 [detached], how null 
+PASS 0,0,96: context range 0 [detached], argument range 0 [detached], how undefined 
+PASS 0,0,97: context range 0 [detached], argument range 0 [detached], how true 
+PASS 0,0,98: context range 0 [detached], argument range 0 [detached], how false 
+PASS 0,0,99: context range 0 [detached], argument range 0 [detached], how &quot;&quot; 
+PASS 0,0,100: context range 0 [detached], argument range 0 [detached], how &quot;quasit&quot; 
+PASS 0,1,0: context range 0 [detached], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 0,1,1: context range 0 [detached], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 0,1,2: context range 0 [detached], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 0,1,3: context range 0 [detached], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 0,2,0: context range 0 [detached], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 0,2,1: context range 0 [detached], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 0,2,2: context range 0 [detached], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 0,2,3: context range 0 [detached], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 0,3,0: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 0,3,1: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 0,3,2: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 0,3,3: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 0,3,4: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -1 
+PASS 0,3,5: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4 
+PASS 0,3,6: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 5 
+PASS 0,3,7: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how NaN 
+PASS 0,3,8: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -0 
+PASS 0,3,9: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how Infinity 
+PASS 0,3,10: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -Infinity 
+PASS 0,3,11: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65535 
+PASS 0,3,12: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65536 
+PASS 0,3,13: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65537 
+PASS 0,3,14: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65538 
+PASS 0,3,15: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65539 
+PASS 0,3,16: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65540 
+PASS 0,3,17: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65537 
+PASS 0,3,18: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65536 
+PASS 0,3,19: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65535 
+PASS 0,3,20: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65534 
+PASS 0,3,21: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65533 
+PASS 0,3,22: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65532 
+PASS 0,3,23: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967295 
+PASS 0,3,24: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967296 
+PASS 0,3,25: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967297 
+PASS 0,3,26: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967298 
+PASS 0,3,27: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967299 
+PASS 0,3,28: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967300 
+PASS 0,3,29: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -0.5 
+PASS 0,3,30: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0.5 
+PASS 0,3,31: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1.5 
+PASS 0,3,32: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2.5 
+PASS 0,3,33: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3.5 
+PASS 0,3,34: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4.5 
+PASS 0,3,35: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -1.5 
+PASS 0,3,36: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -0.5 
+PASS 0,3,37: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0.5 
+PASS 0,3,38: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1.5 
+PASS 0,3,39: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2.5 
+PASS 0,3,40: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3.5 
+PASS 0,3,41: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -73.5 
+PASS 0,3,42: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -72.5 
+PASS 0,3,43: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -71.5 
+PASS 0,3,44: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -70.5 
+PASS 0,3,45: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -69.5 
+PASS 0,3,46: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -68.5 
+PASS 0,3,47: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;0&quot; 
+PASS 0,3,48: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;1&quot; 
+PASS 0,3,49: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;2&quot; 
+PASS 0,3,50: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;3&quot; 
+PASS 0,3,51: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-1&quot; 
+PASS 0,3,52: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4&quot; 
+PASS 0,3,53: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;5&quot; 
+PASS 0,3,54: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;NaN&quot; 
+PASS 0,3,55: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;0&quot; 
+PASS 0,3,56: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;Infinity&quot; 
+PASS 0,3,57: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-Infinity&quot; 
+PASS 0,3,58: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65535&quot; 
+PASS 0,3,59: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65536&quot; 
+PASS 0,3,60: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65537&quot; 
+PASS 0,3,61: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65538&quot; 
+PASS 0,3,62: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65539&quot; 
+PASS 0,3,63: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65540&quot; 
+PASS 0,3,64: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65537&quot; 
+PASS 0,3,65: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65536&quot; 
+PASS 0,3,66: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65535&quot; 
+PASS 0,3,67: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65534&quot; 
+PASS 0,3,68: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65533&quot; 
+PASS 0,3,69: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65532&quot; 
+PASS 0,3,70: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967295&quot; 
+PASS 0,3,71: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967296&quot; 
+PASS 0,3,72: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967297&quot; 
+PASS 0,3,73: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967298&quot; 
+PASS 0,3,74: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967299&quot; 
+PASS 0,3,75: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967300&quot; 
+PASS 0,3,76: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-0.5&quot; 
+PASS 0,3,77: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;0.5&quot; 
+PASS 0,3,78: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;1.5&quot; 
+PASS 0,3,79: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;2.5&quot; 
+PASS 0,3,80: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;3.5&quot; 
+PASS 0,3,81: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4.5&quot; 
+PASS 0,3,82: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-1.5&quot; 
+PASS 0,3,83: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-0.5&quot; 
+PASS 0,3,84: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;0.5&quot; 
+PASS 0,3,85: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;1.5&quot; 
+PASS 0,3,86: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;2.5&quot; 
+PASS 0,3,87: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;3.5&quot; 
+PASS 0,3,88: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-73.5&quot; 
+PASS 0,3,89: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-72.5&quot; 
+PASS 0,3,90: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-71.5&quot; 
+PASS 0,3,91: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-70.5&quot; 
+PASS 0,3,92: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-69.5&quot; 
+PASS 0,3,93: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-68.5&quot; 
+PASS 0,3,94: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;6.5536e4&quot; 
+PASS 0,3,95: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how null 
+PASS 0,3,96: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how undefined 
+PASS 0,3,97: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how true 
+PASS 0,3,98: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how false 
+PASS 0,3,99: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;&quot; 
+PASS 0,3,100: context range 0 [detached], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;quasit&quot; 
+PASS 0,4,0: context range 0 [detached], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 0,4,1: context range 0 [detached], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 0,4,2: context range 0 [detached], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 0,4,3: context range 0 [detached], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 0,5,0: context range 0 [detached], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 0,5,1: context range 0 [detached], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 0,5,2: context range 0 [detached], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 0,5,3: context range 0 [detached], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 0,6,0: context range 0 [detached], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 0,6,1: context range 0 [detached], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 0,6,2: context range 0 [detached], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 0,6,3: context range 0 [detached], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 0,7,0: context range 0 [detached], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 0,7,1: context range 0 [detached], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 0,7,2: context range 0 [detached], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 0,7,3: context range 0 [detached], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 0,8,0: context range 0 [detached], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 0,8,1: context range 0 [detached], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 0,8,2: context range 0 [detached], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 0,8,3: context range 0 [detached], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 0,9,0: context range 0 [detached], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 0,9,1: context range 0 [detached], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 0,9,2: context range 0 [detached], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 0,9,3: context range 0 [detached], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 0,10,0: context range 0 [detached], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 0,10,1: context range 0 [detached], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 0,10,2: context range 0 [detached], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 0,10,3: context range 0 [detached], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 0,11,0: context range 0 [detached], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 0,11,1: context range 0 [detached], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 0,11,2: context range 0 [detached], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 0,11,3: context range 0 [detached], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 0,12,0: context range 0 [detached], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 0,12,1: context range 0 [detached], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 0,12,2: context range 0 [detached], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 0,12,3: context range 0 [detached], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 0,13,0: context range 0 [detached], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 0,13,1: context range 0 [detached], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 0,13,2: context range 0 [detached], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 0,13,3: context range 0 [detached], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 0,14,0: context range 0 [detached], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 0,14,1: context range 0 [detached], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 0,14,2: context range 0 [detached], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 0,14,3: context range 0 [detached], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 0,15,0: context range 0 [detached], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 0,15,1: context range 0 [detached], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 0,15,2: context range 0 [detached], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 0,15,3: context range 0 [detached], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 0,16,0: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 0,16,1: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 0,16,2: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 0,16,3: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 0,16,4: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -1 
+PASS 0,16,5: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4 
+PASS 0,16,6: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 5 
+PASS 0,16,7: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how NaN 
+PASS 0,16,8: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -0 
+PASS 0,16,9: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how Infinity 
+PASS 0,16,10: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -Infinity 
+PASS 0,16,11: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65535 
+PASS 0,16,12: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65536 
+PASS 0,16,13: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65537 
+PASS 0,16,14: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65538 
+PASS 0,16,15: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65539 
+PASS 0,16,16: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65540 
+PASS 0,16,17: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65537 
+PASS 0,16,18: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65536 
+PASS 0,16,19: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65535 
+PASS 0,16,20: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65534 
+PASS 0,16,21: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65533 
+PASS 0,16,22: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65532 
+PASS 0,16,23: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967295 
+PASS 0,16,24: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967296 
+PASS 0,16,25: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967297 
+PASS 0,16,26: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967298 
+PASS 0,16,27: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967299 
+PASS 0,16,28: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967300 
+PASS 0,16,29: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -0.5 
+PASS 0,16,30: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0.5 
+PASS 0,16,31: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1.5 
+PASS 0,16,32: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2.5 
+PASS 0,16,33: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3.5 
+PASS 0,16,34: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4.5 
+PASS 0,16,35: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -1.5 
+PASS 0,16,36: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -0.5 
+PASS 0,16,37: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0.5 
+PASS 0,16,38: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1.5 
+PASS 0,16,39: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2.5 
+PASS 0,16,40: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3.5 
+PASS 0,16,41: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -73.5 
+PASS 0,16,42: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -72.5 
+PASS 0,16,43: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -71.5 
+PASS 0,16,44: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -70.5 
+PASS 0,16,45: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -69.5 
+PASS 0,16,46: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -68.5 
+PASS 0,16,47: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;0&quot; 
+PASS 0,16,48: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;1&quot; 
+PASS 0,16,49: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;2&quot; 
+PASS 0,16,50: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;3&quot; 
+PASS 0,16,51: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-1&quot; 
+PASS 0,16,52: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4&quot; 
+PASS 0,16,53: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;5&quot; 
+PASS 0,16,54: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;NaN&quot; 
+PASS 0,16,55: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;0&quot; 
+PASS 0,16,56: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;Infinity&quot; 
+PASS 0,16,57: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-Infinity&quot; 
+PASS 0,16,58: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65535&quot; 
+PASS 0,16,59: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65536&quot; 
+PASS 0,16,60: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65537&quot; 
+PASS 0,16,61: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65538&quot; 
+PASS 0,16,62: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65539&quot; 
+PASS 0,16,63: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65540&quot; 
+PASS 0,16,64: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65537&quot; 
+PASS 0,16,65: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65536&quot; 
+PASS 0,16,66: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65535&quot; 
+PASS 0,16,67: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65534&quot; 
+PASS 0,16,68: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65533&quot; 
+PASS 0,16,69: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65532&quot; 
+PASS 0,16,70: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967295&quot; 
+PASS 0,16,71: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967296&quot; 
+PASS 0,16,72: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967297&quot; 
+PASS 0,16,73: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967298&quot; 
+PASS 0,16,74: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967299&quot; 
+PASS 0,16,75: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967300&quot; 
+PASS 0,16,76: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-0.5&quot; 
+PASS 0,16,77: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;0.5&quot; 
+PASS 0,16,78: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;1.5&quot; 
+PASS 0,16,79: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;2.5&quot; 
+PASS 0,16,80: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;3.5&quot; 
+PASS 0,16,81: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4.5&quot; 
+PASS 0,16,82: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-1.5&quot; 
+PASS 0,16,83: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-0.5&quot; 
+PASS 0,16,84: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;0.5&quot; 
+PASS 0,16,85: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;1.5&quot; 
+PASS 0,16,86: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;2.5&quot; 
+PASS 0,16,87: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;3.5&quot; 
+PASS 0,16,88: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-73.5&quot; 
+PASS 0,16,89: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-72.5&quot; 
+PASS 0,16,90: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-71.5&quot; 
+PASS 0,16,91: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-70.5&quot; 
+PASS 0,16,92: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-69.5&quot; 
+PASS 0,16,93: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-68.5&quot; 
+PASS 0,16,94: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;6.5536e4&quot; 
+PASS 0,16,95: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how null 
+PASS 0,16,96: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how undefined 
+PASS 0,16,97: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how true 
+PASS 0,16,98: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how false 
+PASS 0,16,99: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;&quot; 
+PASS 0,16,100: context range 0 [detached], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;quasit&quot; 
+PASS 0,17,0: context range 0 [detached], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 0,17,1: context range 0 [detached], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 0,17,2: context range 0 [detached], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 0,17,3: context range 0 [detached], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 0,18,0: context range 0 [detached], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 0,18,1: context range 0 [detached], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 0,18,2: context range 0 [detached], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 0,18,3: context range 0 [detached], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 0,19,0: context range 0 [detached], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 0,19,1: context range 0 [detached], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 0,19,2: context range 0 [detached], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 0,19,3: context range 0 [detached], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 0,20,0: context range 0 [detached], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 0,20,1: context range 0 [detached], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 0,20,2: context range 0 [detached], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 0,20,3: context range 0 [detached], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 0,21,0: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 0,21,1: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 0,21,2: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 0,21,3: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 0,21,4: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -1 
+PASS 0,21,5: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4 
+PASS 0,21,6: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 5 
+PASS 0,21,7: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how NaN 
+PASS 0,21,8: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -0 
+PASS 0,21,9: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how Infinity 
+PASS 0,21,10: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -Infinity 
+PASS 0,21,11: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65535 
+PASS 0,21,12: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65536 
+PASS 0,21,13: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65537 
+PASS 0,21,14: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65538 
+PASS 0,21,15: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65539 
+PASS 0,21,16: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65540 
+PASS 0,21,17: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65537 
+PASS 0,21,18: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65536 
+PASS 0,21,19: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65535 
+PASS 0,21,20: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65534 
+PASS 0,21,21: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65533 
+PASS 0,21,22: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65532 
+PASS 0,21,23: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967295 
+PASS 0,21,24: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967296 
+PASS 0,21,25: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967297 
+PASS 0,21,26: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967298 
+PASS 0,21,27: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967299 
+PASS 0,21,28: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967300 
+PASS 0,21,29: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -0.5 
+PASS 0,21,30: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0.5 
+PASS 0,21,31: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1.5 
+PASS 0,21,32: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2.5 
+PASS 0,21,33: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3.5 
+PASS 0,21,34: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4.5 
+PASS 0,21,35: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -1.5 
+PASS 0,21,36: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -0.5 
+PASS 0,21,37: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0.5 
+PASS 0,21,38: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1.5 
+PASS 0,21,39: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2.5 
+PASS 0,21,40: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3.5 
+PASS 0,21,41: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -73.5 
+PASS 0,21,42: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -72.5 
+PASS 0,21,43: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -71.5 
+PASS 0,21,44: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -70.5 
+PASS 0,21,45: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -69.5 
+PASS 0,21,46: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -68.5 
+PASS 0,21,47: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;0&quot; 
+PASS 0,21,48: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;1&quot; 
+PASS 0,21,49: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;2&quot; 
+PASS 0,21,50: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;3&quot; 
+PASS 0,21,51: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-1&quot; 
+PASS 0,21,52: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4&quot; 
+PASS 0,21,53: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;5&quot; 
+PASS 0,21,54: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;NaN&quot; 
+PASS 0,21,55: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;0&quot; 
+PASS 0,21,56: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;Infinity&quot; 
+PASS 0,21,57: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-Infinity&quot; 
+PASS 0,21,58: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65535&quot; 
+PASS 0,21,59: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65536&quot; 
+PASS 0,21,60: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65537&quot; 
+PASS 0,21,61: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65538&quot; 
+PASS 0,21,62: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65539&quot; 
+PASS 0,21,63: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65540&quot; 
+PASS 0,21,64: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65537&quot; 
+PASS 0,21,65: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65536&quot; 
+PASS 0,21,66: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65535&quot; 
+PASS 0,21,67: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65534&quot; 
+PASS 0,21,68: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65533&quot; 
+PASS 0,21,69: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65532&quot; 
+PASS 0,21,70: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967295&quot; 
+PASS 0,21,71: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967296&quot; 
+PASS 0,21,72: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967297&quot; 
+PASS 0,21,73: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967298&quot; 
+PASS 0,21,74: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967299&quot; 
+PASS 0,21,75: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967300&quot; 
+PASS 0,21,76: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-0.5&quot; 
+PASS 0,21,77: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;0.5&quot; 
+PASS 0,21,78: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;1.5&quot; 
+PASS 0,21,79: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;2.5&quot; 
+PASS 0,21,80: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;3.5&quot; 
+PASS 0,21,81: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4.5&quot; 
+PASS 0,21,82: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-1.5&quot; 
+PASS 0,21,83: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-0.5&quot; 
+PASS 0,21,84: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;0.5&quot; 
+PASS 0,21,85: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;1.5&quot; 
+PASS 0,21,86: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;2.5&quot; 
+PASS 0,21,87: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;3.5&quot; 
+PASS 0,21,88: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-73.5&quot; 
+PASS 0,21,89: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-72.5&quot; 
+PASS 0,21,90: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-71.5&quot; 
+PASS 0,21,91: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-70.5&quot; 
+PASS 0,21,92: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-69.5&quot; 
+PASS 0,21,93: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-68.5&quot; 
+PASS 0,21,94: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;6.5536e4&quot; 
+PASS 0,21,95: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how null 
+PASS 0,21,96: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how undefined 
+PASS 0,21,97: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how true 
+PASS 0,21,98: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how false 
+PASS 0,21,99: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;&quot; 
+PASS 0,21,100: context range 0 [detached], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;quasit&quot; 
+PASS 0,22,0: context range 0 [detached], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 0,22,1: context range 0 [detached], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 0,22,2: context range 0 [detached], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 0,22,3: context range 0 [detached], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 0,23,0: context range 0 [detached], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 0,23,1: context range 0 [detached], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 0,23,2: context range 0 [detached], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 0,23,3: context range 0 [detached], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 0,24,0: context range 0 [detached], argument range 24 [document, 0, document, 1], how 0 
+PASS 0,24,1: context range 0 [detached], argument range 24 [document, 0, document, 1], how 1 
+PASS 0,24,2: context range 0 [detached], argument range 24 [document, 0, document, 1], how 2 
+PASS 0,24,3: context range 0 [detached], argument range 24 [document, 0, document, 1], how 3 
+PASS 0,25,0: context range 0 [detached], argument range 25 [document, 0, document, 2], how 0 
+PASS 0,25,1: context range 0 [detached], argument range 25 [document, 0, document, 2], how 1 
+PASS 0,25,2: context range 0 [detached], argument range 25 [document, 0, document, 2], how 2 
+PASS 0,25,3: context range 0 [detached], argument range 25 [document, 0, document, 2], how 3 
+PASS 0,26,0: context range 0 [detached], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 0,26,1: context range 0 [detached], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 0,26,2: context range 0 [detached], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 0,26,3: context range 0 [detached], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 0,27,0: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 0,27,1: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 0,27,2: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 0,27,3: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 0,27,4: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how -1 
+PASS 0,27,5: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how 4 
+PASS 0,27,6: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how 5 
+PASS 0,27,7: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how NaN 
+PASS 0,27,8: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how -0 
+PASS 0,27,9: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how Infinity 
+PASS 0,27,10: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how -Infinity 
+PASS 0,27,11: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how 65535 
+PASS 0,27,12: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how 65536 
+PASS 0,27,13: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how 65537 
+PASS 0,27,14: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how 65538 
+PASS 0,27,15: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how 65539 
+PASS 0,27,16: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how 65540 
+PASS 0,27,17: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how -65537 
+PASS 0,27,18: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how -65536 
+PASS 0,27,19: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how -65535 
+PASS 0,27,20: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how -65534 
+PASS 0,27,21: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how -65533 
+PASS 0,27,22: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how -65532 
+PASS 0,27,23: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how 4294967295 
+PASS 0,27,24: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how 4294967296 
+PASS 0,27,25: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how 4294967297 
+PASS 0,27,26: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how 4294967298 
+PASS 0,27,27: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how 4294967299 
+PASS 0,27,28: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how 4294967300 
+PASS 0,27,29: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how -0.5 
+PASS 0,27,30: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how 0.5 
+PASS 0,27,31: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how 1.5 
+PASS 0,27,32: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how 2.5 
+PASS 0,27,33: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how 3.5 
+PASS 0,27,34: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how 4.5 
+PASS 0,27,35: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how -1.5 
+PASS 0,27,36: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how -0.5 
+PASS 0,27,37: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how 0.5 
+PASS 0,27,38: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how 1.5 
+PASS 0,27,39: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how 2.5 
+PASS 0,27,40: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how 3.5 
+PASS 0,27,41: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how -73.5 
+PASS 0,27,42: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how -72.5 
+PASS 0,27,43: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how -71.5 
+PASS 0,27,44: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how -70.5 
+PASS 0,27,45: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how -69.5 
+PASS 0,27,46: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how -68.5 
+PASS 0,27,47: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;0&quot; 
+PASS 0,27,48: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;1&quot; 
+PASS 0,27,49: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;2&quot; 
+PASS 0,27,50: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;3&quot; 
+PASS 0,27,51: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;-1&quot; 
+PASS 0,27,52: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;4&quot; 
+PASS 0,27,53: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;5&quot; 
+PASS 0,27,54: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;NaN&quot; 
+PASS 0,27,55: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;0&quot; 
+PASS 0,27,56: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;Infinity&quot; 
+PASS 0,27,57: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;-Infinity&quot; 
+PASS 0,27,58: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;65535&quot; 
+PASS 0,27,59: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;65536&quot; 
+PASS 0,27,60: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;65537&quot; 
+PASS 0,27,61: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;65538&quot; 
+PASS 0,27,62: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;65539&quot; 
+PASS 0,27,63: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;65540&quot; 
+PASS 0,27,64: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;-65537&quot; 
+PASS 0,27,65: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;-65536&quot; 
+PASS 0,27,66: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;-65535&quot; 
+PASS 0,27,67: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;-65534&quot; 
+PASS 0,27,68: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;-65533&quot; 
+PASS 0,27,69: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;-65532&quot; 
+PASS 0,27,70: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967295&quot; 
+PASS 0,27,71: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967296&quot; 
+PASS 0,27,72: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967297&quot; 
+PASS 0,27,73: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967298&quot; 
+PASS 0,27,74: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967299&quot; 
+PASS 0,27,75: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967300&quot; 
+PASS 0,27,76: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;-0.5&quot; 
+PASS 0,27,77: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;0.5&quot; 
+PASS 0,27,78: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;1.5&quot; 
+PASS 0,27,79: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;2.5&quot; 
+PASS 0,27,80: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;3.5&quot; 
+PASS 0,27,81: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;4.5&quot; 
+PASS 0,27,82: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;-1.5&quot; 
+PASS 0,27,83: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;-0.5&quot; 
+PASS 0,27,84: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;0.5&quot; 
+PASS 0,27,85: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;1.5&quot; 
+PASS 0,27,86: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;2.5&quot; 
+PASS 0,27,87: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;3.5&quot; 
+PASS 0,27,88: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;-73.5&quot; 
+PASS 0,27,89: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;-72.5&quot; 
+PASS 0,27,90: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;-71.5&quot; 
+PASS 0,27,91: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;-70.5&quot; 
+PASS 0,27,92: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;-69.5&quot; 
+PASS 0,27,93: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;-68.5&quot; 
+PASS 0,27,94: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;6.5536e4&quot; 
+PASS 0,27,95: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how null 
+PASS 0,27,96: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how undefined 
+PASS 0,27,97: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how true 
+PASS 0,27,98: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how false 
+PASS 0,27,99: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;&quot; 
+PASS 0,27,100: context range 0 [detached], argument range 27 [testDiv, 0, comment, 5], how &quot;quasit&quot; 
+PASS 0,28,0: context range 0 [detached], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 0,28,1: context range 0 [detached], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 0,28,2: context range 0 [detached], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 0,28,3: context range 0 [detached], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 0,29,0: context range 0 [detached], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 0,29,1: context range 0 [detached], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 0,29,2: context range 0 [detached], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 0,29,3: context range 0 [detached], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 0,30,0: context range 0 [detached], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 0,30,1: context range 0 [detached], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 0,30,2: context range 0 [detached], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 0,30,3: context range 0 [detached], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 0,31,0: context range 0 [detached], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 0,31,1: context range 0 [detached], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 0,31,2: context range 0 [detached], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 0,31,3: context range 0 [detached], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 0,32,0: context range 0 [detached], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 0,32,1: context range 0 [detached], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 0,32,2: context range 0 [detached], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 0,32,3: context range 0 [detached], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 0,33,0: context range 0 [detached], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 0,33,1: context range 0 [detached], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 0,33,2: context range 0 [detached], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 0,33,3: context range 0 [detached], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 0,34,0: context range 0 [detached], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 0,34,1: context range 0 [detached], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 0,34,2: context range 0 [detached], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 0,34,3: context range 0 [detached], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 0,35,0: context range 0 [detached], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 0,35,1: context range 0 [detached], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 0,35,2: context range 0 [detached], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 0,35,3: context range 0 [detached], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 0,36,0: context range 0 [detached], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 0,36,1: context range 0 [detached], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 0,36,2: context range 0 [detached], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 0,36,3: context range 0 [detached], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 0,37,0: context range 0 [detached], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 0,37,1: context range 0 [detached], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 0,37,2: context range 0 [detached], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 0,37,3: context range 0 [detached], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 0,38,0: context range 0 [detached], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 0,38,1: context range 0 [detached], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 0,38,2: context range 0 [detached], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 0,38,3: context range 0 [detached], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 0,39,0: context range 0 [detached], argument range same as first range, how 0 
+PASS 0,39,1: context range 0 [detached], argument range same as first range, how 1 
+PASS 0,39,2: context range 0 [detached], argument range same as first range, how 2 
+PASS 0,39,3: context range 0 [detached], argument range same as first range, how 3 
+PASS 1,0,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 0 [detached], how 0 
+PASS 1,0,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 0 [detached], how 1 
+PASS 1,0,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 0 [detached], how 2 
+PASS 1,0,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 0 [detached], how 3 
+PASS 1,1,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 1,1,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 1,1,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 1,1,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 1,2,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 1,2,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 1,2,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 1,2,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 1,3,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 1,3,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 1,3,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 1,3,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 1,4,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 1,4,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 1,4,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 1,4,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 1,5,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 1,5,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 1,5,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 1,5,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 1,6,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 1,6,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 1,6,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 1,6,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 1,7,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 1,7,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 1,7,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 1,7,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 1,8,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 1,8,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 1,8,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 1,8,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 1,9,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 1,9,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 1,9,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 1,9,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 1,10,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 1,10,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 1,10,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 1,10,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 1,11,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 1,11,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 1,11,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 1,11,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 1,12,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 1,12,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 1,12,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 1,12,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 1,13,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 1,13,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 1,13,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 1,13,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 1,14,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 1,14,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 1,14,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 1,14,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 1,15,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 1,15,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 1,15,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 1,15,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 1,16,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 1,16,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 1,16,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 1,16,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 1,17,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 1,17,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 1,17,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 1,17,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 1,18,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 1,18,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 1,18,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 1,18,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 1,19,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 1,19,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 1,19,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 1,19,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 1,20,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 1,20,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 1,20,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 1,20,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 1,21,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 1,21,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 1,21,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 1,21,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 1,22,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 1,22,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 1,22,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 1,22,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 1,23,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 1,23,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 1,23,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 1,23,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 1,24,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 24 [document, 0, document, 1], how 0 
+PASS 1,24,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 24 [document, 0, document, 1], how 1 
+PASS 1,24,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 24 [document, 0, document, 1], how 2 
+PASS 1,24,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 24 [document, 0, document, 1], how 3 
+PASS 1,25,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 25 [document, 0, document, 2], how 0 
+PASS 1,25,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 25 [document, 0, document, 2], how 1 
+PASS 1,25,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 25 [document, 0, document, 2], how 2 
+PASS 1,25,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 25 [document, 0, document, 2], how 3 
+PASS 1,26,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 1,26,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 1,26,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 1,26,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 1,27,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 1,27,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 1,27,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 1,27,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 1,28,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 1,28,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 1,28,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 1,28,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 1,29,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 1,29,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 1,29,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 1,29,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 1,30,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 1,30,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 1,30,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 1,30,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 1,31,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 1,31,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 1,31,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 1,31,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 1,32,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 1,32,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 1,32,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 1,32,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 1,33,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 1,33,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 1,33,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 1,33,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 1,34,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 1,34,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 1,34,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 1,34,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 1,35,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 1,35,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 1,35,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 1,35,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 1,36,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 1,36,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 1,36,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 1,36,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 1,37,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 1,37,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 1,37,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 1,37,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 1,38,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 1,38,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 1,38,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 1,38,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 1,39,0: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range same as first range, how 0 
+PASS 1,39,1: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range same as first range, how 1 
+PASS 1,39,2: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range same as first range, how 2 
+PASS 1,39,3: context range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], argument range same as first range, how 3 
+PASS 2,0,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 0 [detached], how 0 
+PASS 2,0,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 0 [detached], how 1 
+PASS 2,0,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 0 [detached], how 2 
+PASS 2,0,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 0 [detached], how 3 
+PASS 2,1,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 2,1,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 2,1,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 2,1,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 2,2,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 2,2,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 2,2,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 2,2,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 2,3,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 2,3,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 2,3,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 2,3,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 2,4,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 2,4,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 2,4,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 2,4,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 2,5,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 2,5,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 2,5,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 2,5,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 2,6,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 2,6,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 2,6,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 2,6,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 2,7,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 2,7,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 2,7,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 2,7,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 2,8,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 2,8,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 2,8,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 2,8,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 2,9,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 2,9,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 2,9,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 2,9,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 2,10,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 2,10,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 2,10,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 2,10,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 2,11,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 2,11,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 2,11,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 2,11,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 2,12,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 2,12,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 2,12,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 2,12,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 2,13,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 2,13,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 2,13,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 2,13,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 2,14,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 2,14,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 2,14,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 2,14,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 2,15,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 2,15,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 2,15,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 2,15,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 2,16,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 2,16,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 2,16,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 2,16,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 2,17,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 2,17,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 2,17,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 2,17,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 2,18,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 2,18,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 2,18,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 2,18,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 2,19,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 2,19,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 2,19,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 2,19,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 2,20,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 2,20,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 2,20,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 2,20,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 2,21,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 2,21,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 2,21,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 2,21,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 2,22,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 2,22,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 2,22,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 2,22,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 2,23,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 2,23,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 2,23,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 2,23,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 2,24,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 24 [document, 0, document, 1], how 0 
+PASS 2,24,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 24 [document, 0, document, 1], how 1 
+PASS 2,24,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 24 [document, 0, document, 1], how 2 
+PASS 2,24,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 24 [document, 0, document, 1], how 3 
+PASS 2,25,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 25 [document, 0, document, 2], how 0 
+PASS 2,25,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 25 [document, 0, document, 2], how 1 
+PASS 2,25,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 25 [document, 0, document, 2], how 2 
+PASS 2,25,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 25 [document, 0, document, 2], how 3 
+PASS 2,26,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 2,26,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 2,26,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 2,26,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 2,27,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 2,27,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 2,27,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 2,27,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 2,28,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 2,28,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 2,28,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 2,28,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 2,29,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 2,29,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 2,29,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 2,29,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 2,30,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 2,30,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 2,30,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 2,30,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 2,31,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 2,31,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 2,31,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 2,31,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 2,32,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 2,32,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 2,32,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 2,32,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 2,33,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 2,33,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 2,33,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 2,33,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 2,34,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 2,34,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 2,34,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 2,34,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 2,35,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 2,35,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 2,35,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 2,35,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 2,36,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 2,36,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 2,36,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 2,36,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 2,37,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 2,37,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 2,37,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 2,37,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 2,38,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 2,38,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 2,38,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 2,38,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 2,39,0: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range same as first range, how 0 
+PASS 2,39,1: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range same as first range, how 1 
+PASS 2,39,2: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range same as first range, how 2 
+PASS 2,39,3: context range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], argument range same as first range, how 3 
+PASS 3,0,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 0 
+PASS 3,0,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 1 
+PASS 3,0,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 2 
+PASS 3,0,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 3 
+PASS 3,0,4: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -1 
+PASS 3,0,5: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 4 
+PASS 3,0,6: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 5 
+PASS 3,0,7: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how NaN 
+PASS 3,0,8: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -0 
+PASS 3,0,9: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how Infinity 
+PASS 3,0,10: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -Infinity 
+PASS 3,0,11: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 65535 
+PASS 3,0,12: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 65536 
+PASS 3,0,13: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 65537 
+PASS 3,0,14: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 65538 
+PASS 3,0,15: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 65539 
+PASS 3,0,16: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 65540 
+PASS 3,0,17: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -65537 
+PASS 3,0,18: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -65536 
+PASS 3,0,19: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -65535 
+PASS 3,0,20: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -65534 
+PASS 3,0,21: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -65533 
+PASS 3,0,22: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -65532 
+PASS 3,0,23: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 4294967295 
+PASS 3,0,24: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 4294967296 
+PASS 3,0,25: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 4294967297 
+PASS 3,0,26: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 4294967298 
+PASS 3,0,27: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 4294967299 
+PASS 3,0,28: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 4294967300 
+PASS 3,0,29: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -0.5 
+PASS 3,0,30: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 0.5 
+PASS 3,0,31: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 1.5 
+PASS 3,0,32: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 2.5 
+PASS 3,0,33: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 3.5 
+PASS 3,0,34: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 4.5 
+PASS 3,0,35: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -1.5 
+PASS 3,0,36: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -0.5 
+PASS 3,0,37: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 0.5 
+PASS 3,0,38: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 1.5 
+PASS 3,0,39: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 2.5 
+PASS 3,0,40: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how 3.5 
+PASS 3,0,41: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -73.5 
+PASS 3,0,42: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -72.5 
+PASS 3,0,43: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -71.5 
+PASS 3,0,44: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -70.5 
+PASS 3,0,45: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -69.5 
+PASS 3,0,46: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how -68.5 
+PASS 3,0,47: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;0&quot; 
+PASS 3,0,48: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;1&quot; 
+PASS 3,0,49: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;2&quot; 
+PASS 3,0,50: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;3&quot; 
+PASS 3,0,51: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;-1&quot; 
+PASS 3,0,52: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;4&quot; 
+PASS 3,0,53: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;5&quot; 
+PASS 3,0,54: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;NaN&quot; 
+PASS 3,0,55: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;0&quot; 
+PASS 3,0,56: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;Infinity&quot; 
+PASS 3,0,57: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;-Infinity&quot; 
+PASS 3,0,58: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;65535&quot; 
+PASS 3,0,59: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;65536&quot; 
+PASS 3,0,60: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;65537&quot; 
+PASS 3,0,61: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;65538&quot; 
+PASS 3,0,62: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;65539&quot; 
+PASS 3,0,63: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;65540&quot; 
+PASS 3,0,64: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;-65537&quot; 
+PASS 3,0,65: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;-65536&quot; 
+PASS 3,0,66: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;-65535&quot; 
+PASS 3,0,67: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;-65534&quot; 
+PASS 3,0,68: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;-65533&quot; 
+PASS 3,0,69: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;-65532&quot; 
+PASS 3,0,70: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;4294967295&quot; 
+PASS 3,0,71: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;4294967296&quot; 
+PASS 3,0,72: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;4294967297&quot; 
+PASS 3,0,73: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;4294967298&quot; 
+PASS 3,0,74: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;4294967299&quot; 
+PASS 3,0,75: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;4294967300&quot; 
+PASS 3,0,76: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;-0.5&quot; 
+PASS 3,0,77: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;0.5&quot; 
+PASS 3,0,78: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;1.5&quot; 
+PASS 3,0,79: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;2.5&quot; 
+PASS 3,0,80: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;3.5&quot; 
+PASS 3,0,81: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;4.5&quot; 
+PASS 3,0,82: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;-1.5&quot; 
+PASS 3,0,83: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;-0.5&quot; 
+PASS 3,0,84: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;0.5&quot; 
+PASS 3,0,85: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;1.5&quot; 
+PASS 3,0,86: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;2.5&quot; 
+PASS 3,0,87: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;3.5&quot; 
+PASS 3,0,88: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;-73.5&quot; 
+PASS 3,0,89: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;-72.5&quot; 
+PASS 3,0,90: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;-71.5&quot; 
+PASS 3,0,91: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;-70.5&quot; 
+PASS 3,0,92: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;-69.5&quot; 
+PASS 3,0,93: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;-68.5&quot; 
+PASS 3,0,94: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;6.5536e4&quot; 
+PASS 3,0,95: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how null 
+PASS 3,0,96: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how undefined 
+PASS 3,0,97: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how true 
+PASS 3,0,98: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how false 
+PASS 3,0,99: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;&quot; 
+PASS 3,0,100: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 0 [detached], how &quot;quasit&quot; 
+PASS 3,1,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 3,1,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 3,1,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 3,1,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 3,2,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 3,2,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 3,2,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 3,2,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 3,3,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 3,3,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 3,3,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 3,3,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 3,3,4: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -1 
+PASS 3,3,5: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4 
+PASS 3,3,6: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 5 
+PASS 3,3,7: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how NaN 
+PASS 3,3,8: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -0 
+PASS 3,3,9: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how Infinity 
+PASS 3,3,10: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -Infinity 
+PASS 3,3,11: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65535 
+PASS 3,3,12: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65536 
+PASS 3,3,13: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65537 
+PASS 3,3,14: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65538 
+PASS 3,3,15: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65539 
+PASS 3,3,16: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65540 
+PASS 3,3,17: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65537 
+PASS 3,3,18: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65536 
+PASS 3,3,19: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65535 
+PASS 3,3,20: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65534 
+PASS 3,3,21: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65533 
+PASS 3,3,22: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65532 
+PASS 3,3,23: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967295 
+PASS 3,3,24: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967296 
+PASS 3,3,25: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967297 
+PASS 3,3,26: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967298 
+PASS 3,3,27: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967299 
+PASS 3,3,28: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967300 
+PASS 3,3,29: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -0.5 
+PASS 3,3,30: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0.5 
+PASS 3,3,31: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1.5 
+PASS 3,3,32: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2.5 
+PASS 3,3,33: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3.5 
+PASS 3,3,34: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4.5 
+PASS 3,3,35: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -1.5 
+PASS 3,3,36: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -0.5 
+PASS 3,3,37: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0.5 
+PASS 3,3,38: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1.5 
+PASS 3,3,39: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2.5 
+PASS 3,3,40: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3.5 
+PASS 3,3,41: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -73.5 
+PASS 3,3,42: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -72.5 
+PASS 3,3,43: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -71.5 
+PASS 3,3,44: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -70.5 
+PASS 3,3,45: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -69.5 
+PASS 3,3,46: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -68.5 
+PASS 3,3,47: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;0&quot; 
+PASS 3,3,48: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;1&quot; 
+PASS 3,3,49: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;2&quot; 
+PASS 3,3,50: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;3&quot; 
+PASS 3,3,51: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-1&quot; 
+PASS 3,3,52: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4&quot; 
+PASS 3,3,53: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;5&quot; 
+PASS 3,3,54: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;NaN&quot; 
+PASS 3,3,55: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;0&quot; 
+PASS 3,3,56: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;Infinity&quot; 
+PASS 3,3,57: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-Infinity&quot; 
+PASS 3,3,58: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65535&quot; 
+PASS 3,3,59: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65536&quot; 
+PASS 3,3,60: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65537&quot; 
+PASS 3,3,61: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65538&quot; 
+PASS 3,3,62: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65539&quot; 
+PASS 3,3,63: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65540&quot; 
+PASS 3,3,64: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65537&quot; 
+PASS 3,3,65: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65536&quot; 
+PASS 3,3,66: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65535&quot; 
+PASS 3,3,67: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65534&quot; 
+PASS 3,3,68: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65533&quot; 
+PASS 3,3,69: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65532&quot; 
+PASS 3,3,70: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967295&quot; 
+PASS 3,3,71: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967296&quot; 
+PASS 3,3,72: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967297&quot; 
+PASS 3,3,73: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967298&quot; 
+PASS 3,3,74: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967299&quot; 
+PASS 3,3,75: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967300&quot; 
+PASS 3,3,76: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-0.5&quot; 
+PASS 3,3,77: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;0.5&quot; 
+PASS 3,3,78: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;1.5&quot; 
+PASS 3,3,79: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;2.5&quot; 
+PASS 3,3,80: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;3.5&quot; 
+PASS 3,3,81: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4.5&quot; 
+PASS 3,3,82: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-1.5&quot; 
+PASS 3,3,83: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-0.5&quot; 
+PASS 3,3,84: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;0.5&quot; 
+PASS 3,3,85: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;1.5&quot; 
+PASS 3,3,86: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;2.5&quot; 
+PASS 3,3,87: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;3.5&quot; 
+PASS 3,3,88: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-73.5&quot; 
+PASS 3,3,89: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-72.5&quot; 
+PASS 3,3,90: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-71.5&quot; 
+PASS 3,3,91: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-70.5&quot; 
+PASS 3,3,92: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-69.5&quot; 
+PASS 3,3,93: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-68.5&quot; 
+PASS 3,3,94: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;6.5536e4&quot; 
+PASS 3,3,95: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how null 
+PASS 3,3,96: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how undefined 
+PASS 3,3,97: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how true 
+PASS 3,3,98: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how false 
+PASS 3,3,99: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;&quot; 
+PASS 3,3,100: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;quasit&quot; 
+PASS 3,4,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 3,4,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 3,4,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 3,4,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 3,5,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 3,5,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 3,5,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 3,5,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 3,6,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 3,6,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 3,6,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 3,6,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 3,7,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 3,7,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 3,7,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 3,7,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 3,8,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 3,8,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 3,8,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 3,8,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 3,9,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 3,9,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 3,9,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 3,9,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 3,10,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 3,10,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 3,10,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 3,10,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 3,11,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 3,11,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 3,11,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 3,11,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 3,12,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 3,12,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 3,12,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 3,12,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 3,13,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 3,13,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 3,13,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 3,13,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 3,14,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 3,14,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 3,14,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 3,14,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 3,15,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 3,15,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 3,15,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 3,15,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 3,16,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 3,16,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 3,16,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 3,16,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 3,16,4: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -1 
+PASS 3,16,5: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4 
+PASS 3,16,6: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 5 
+PASS 3,16,7: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how NaN 
+PASS 3,16,8: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -0 
+PASS 3,16,9: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how Infinity 
+PASS 3,16,10: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -Infinity 
+PASS 3,16,11: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65535 
+PASS 3,16,12: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65536 
+PASS 3,16,13: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65537 
+PASS 3,16,14: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65538 
+PASS 3,16,15: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65539 
+PASS 3,16,16: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65540 
+PASS 3,16,17: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65537 
+PASS 3,16,18: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65536 
+PASS 3,16,19: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65535 
+PASS 3,16,20: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65534 
+PASS 3,16,21: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65533 
+PASS 3,16,22: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65532 
+PASS 3,16,23: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967295 
+PASS 3,16,24: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967296 
+PASS 3,16,25: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967297 
+PASS 3,16,26: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967298 
+PASS 3,16,27: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967299 
+PASS 3,16,28: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967300 
+PASS 3,16,29: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -0.5 
+PASS 3,16,30: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0.5 
+PASS 3,16,31: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1.5 
+PASS 3,16,32: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2.5 
+PASS 3,16,33: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3.5 
+PASS 3,16,34: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4.5 
+PASS 3,16,35: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -1.5 
+PASS 3,16,36: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -0.5 
+PASS 3,16,37: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0.5 
+PASS 3,16,38: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1.5 
+PASS 3,16,39: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2.5 
+PASS 3,16,40: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3.5 
+PASS 3,16,41: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -73.5 
+PASS 3,16,42: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -72.5 
+PASS 3,16,43: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -71.5 
+PASS 3,16,44: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -70.5 
+PASS 3,16,45: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -69.5 
+PASS 3,16,46: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -68.5 
+PASS 3,16,47: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;0&quot; 
+PASS 3,16,48: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;1&quot; 
+PASS 3,16,49: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;2&quot; 
+PASS 3,16,50: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;3&quot; 
+PASS 3,16,51: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-1&quot; 
+PASS 3,16,52: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4&quot; 
+PASS 3,16,53: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;5&quot; 
+PASS 3,16,54: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;NaN&quot; 
+PASS 3,16,55: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;0&quot; 
+PASS 3,16,56: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;Infinity&quot; 
+PASS 3,16,57: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-Infinity&quot; 
+PASS 3,16,58: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65535&quot; 
+PASS 3,16,59: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65536&quot; 
+PASS 3,16,60: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65537&quot; 
+PASS 3,16,61: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65538&quot; 
+PASS 3,16,62: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65539&quot; 
+PASS 3,16,63: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65540&quot; 
+PASS 3,16,64: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65537&quot; 
+PASS 3,16,65: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65536&quot; 
+PASS 3,16,66: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65535&quot; 
+PASS 3,16,67: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65534&quot; 
+PASS 3,16,68: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65533&quot; 
+PASS 3,16,69: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65532&quot; 
+PASS 3,16,70: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967295&quot; 
+PASS 3,16,71: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967296&quot; 
+PASS 3,16,72: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967297&quot; 
+PASS 3,16,73: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967298&quot; 
+PASS 3,16,74: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967299&quot; 
+PASS 3,16,75: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967300&quot; 
+PASS 3,16,76: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-0.5&quot; 
+PASS 3,16,77: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;0.5&quot; 
+PASS 3,16,78: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;1.5&quot; 
+PASS 3,16,79: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;2.5&quot; 
+PASS 3,16,80: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;3.5&quot; 
+PASS 3,16,81: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4.5&quot; 
+PASS 3,16,82: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-1.5&quot; 
+PASS 3,16,83: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-0.5&quot; 
+PASS 3,16,84: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;0.5&quot; 
+PASS 3,16,85: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;1.5&quot; 
+PASS 3,16,86: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;2.5&quot; 
+PASS 3,16,87: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;3.5&quot; 
+PASS 3,16,88: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-73.5&quot; 
+PASS 3,16,89: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-72.5&quot; 
+PASS 3,16,90: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-71.5&quot; 
+PASS 3,16,91: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-70.5&quot; 
+PASS 3,16,92: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-69.5&quot; 
+PASS 3,16,93: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-68.5&quot; 
+PASS 3,16,94: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;6.5536e4&quot; 
+PASS 3,16,95: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how null 
+PASS 3,16,96: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how undefined 
+PASS 3,16,97: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how true 
+PASS 3,16,98: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how false 
+PASS 3,16,99: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;&quot; 
+PASS 3,16,100: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;quasit&quot; 
+PASS 3,17,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 3,17,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 3,17,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 3,17,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 3,18,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 3,18,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 3,18,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 3,18,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 3,19,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 3,19,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 3,19,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 3,19,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 3,20,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 3,20,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 3,20,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 3,20,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 3,21,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 3,21,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 3,21,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 3,21,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 3,21,4: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -1 
+PASS 3,21,5: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4 
+PASS 3,21,6: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 5 
+PASS 3,21,7: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how NaN 
+PASS 3,21,8: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -0 
+PASS 3,21,9: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how Infinity 
+PASS 3,21,10: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -Infinity 
+PASS 3,21,11: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65535 
+PASS 3,21,12: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65536 
+PASS 3,21,13: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65537 
+PASS 3,21,14: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65538 
+PASS 3,21,15: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65539 
+PASS 3,21,16: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65540 
+PASS 3,21,17: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65537 
+PASS 3,21,18: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65536 
+PASS 3,21,19: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65535 
+PASS 3,21,20: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65534 
+PASS 3,21,21: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65533 
+PASS 3,21,22: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65532 
+PASS 3,21,23: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967295 
+PASS 3,21,24: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967296 
+PASS 3,21,25: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967297 
+PASS 3,21,26: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967298 
+PASS 3,21,27: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967299 
+PASS 3,21,28: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967300 
+PASS 3,21,29: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -0.5 
+PASS 3,21,30: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0.5 
+PASS 3,21,31: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1.5 
+PASS 3,21,32: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2.5 
+PASS 3,21,33: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3.5 
+PASS 3,21,34: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4.5 
+PASS 3,21,35: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -1.5 
+PASS 3,21,36: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -0.5 
+PASS 3,21,37: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0.5 
+PASS 3,21,38: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1.5 
+PASS 3,21,39: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2.5 
+PASS 3,21,40: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3.5 
+PASS 3,21,41: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -73.5 
+PASS 3,21,42: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -72.5 
+PASS 3,21,43: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -71.5 
+PASS 3,21,44: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -70.5 
+PASS 3,21,45: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -69.5 
+PASS 3,21,46: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -68.5 
+PASS 3,21,47: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;0&quot; 
+PASS 3,21,48: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;1&quot; 
+PASS 3,21,49: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;2&quot; 
+PASS 3,21,50: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;3&quot; 
+PASS 3,21,51: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-1&quot; 
+PASS 3,21,52: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4&quot; 
+PASS 3,21,53: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;5&quot; 
+PASS 3,21,54: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;NaN&quot; 
+PASS 3,21,55: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;0&quot; 
+PASS 3,21,56: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;Infinity&quot; 
+PASS 3,21,57: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-Infinity&quot; 
+PASS 3,21,58: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65535&quot; 
+PASS 3,21,59: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65536&quot; 
+PASS 3,21,60: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65537&quot; 
+PASS 3,21,61: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65538&quot; 
+PASS 3,21,62: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65539&quot; 
+PASS 3,21,63: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65540&quot; 
+PASS 3,21,64: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65537&quot; 
+PASS 3,21,65: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65536&quot; 
+PASS 3,21,66: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65535&quot; 
+PASS 3,21,67: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65534&quot; 
+PASS 3,21,68: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65533&quot; 
+PASS 3,21,69: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65532&quot; 
+PASS 3,21,70: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967295&quot; 
+PASS 3,21,71: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967296&quot; 
+PASS 3,21,72: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967297&quot; 
+PASS 3,21,73: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967298&quot; 
+PASS 3,21,74: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967299&quot; 
+PASS 3,21,75: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967300&quot; 
+PASS 3,21,76: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-0.5&quot; 
+PASS 3,21,77: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;0.5&quot; 
+PASS 3,21,78: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;1.5&quot; 
+PASS 3,21,79: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;2.5&quot; 
+PASS 3,21,80: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;3.5&quot; 
+PASS 3,21,81: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4.5&quot; 
+PASS 3,21,82: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-1.5&quot; 
+PASS 3,21,83: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-0.5&quot; 
+PASS 3,21,84: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;0.5&quot; 
+PASS 3,21,85: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;1.5&quot; 
+PASS 3,21,86: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;2.5&quot; 
+PASS 3,21,87: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;3.5&quot; 
+PASS 3,21,88: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-73.5&quot; 
+PASS 3,21,89: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-72.5&quot; 
+PASS 3,21,90: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-71.5&quot; 
+PASS 3,21,91: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-70.5&quot; 
+PASS 3,21,92: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-69.5&quot; 
+PASS 3,21,93: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-68.5&quot; 
+PASS 3,21,94: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;6.5536e4&quot; 
+PASS 3,21,95: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how null 
+PASS 3,21,96: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how undefined 
+PASS 3,21,97: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how true 
+PASS 3,21,98: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how false 
+PASS 3,21,99: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;&quot; 
+PASS 3,21,100: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;quasit&quot; 
+PASS 3,22,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 3,22,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 3,22,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 3,22,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 3,23,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 3,23,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 3,23,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 3,23,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 3,24,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 24 [document, 0, document, 1], how 0 
+PASS 3,24,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 24 [document, 0, document, 1], how 1 
+PASS 3,24,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 24 [document, 0, document, 1], how 2 
+PASS 3,24,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 24 [document, 0, document, 1], how 3 
+PASS 3,25,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 25 [document, 0, document, 2], how 0 
+PASS 3,25,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 25 [document, 0, document, 2], how 1 
+PASS 3,25,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 25 [document, 0, document, 2], how 2 
+PASS 3,25,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 25 [document, 0, document, 2], how 3 
+PASS 3,26,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 3,26,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 3,26,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 3,26,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 3,27,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 3,27,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 3,27,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 3,27,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 3,27,4: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how -1 
+PASS 3,27,5: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 4 
+PASS 3,27,6: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 5 
+PASS 3,27,7: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how NaN 
+PASS 3,27,8: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how -0 
+PASS 3,27,9: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how Infinity 
+PASS 3,27,10: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how -Infinity 
+PASS 3,27,11: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 65535 
+PASS 3,27,12: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 65536 
+PASS 3,27,13: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 65537 
+PASS 3,27,14: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 65538 
+PASS 3,27,15: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 65539 
+PASS 3,27,16: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 65540 
+PASS 3,27,17: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how -65537 
+PASS 3,27,18: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how -65536 
+PASS 3,27,19: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how -65535 
+PASS 3,27,20: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how -65534 
+PASS 3,27,21: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how -65533 
+PASS 3,27,22: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how -65532 
+PASS 3,27,23: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 4294967295 
+PASS 3,27,24: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 4294967296 
+PASS 3,27,25: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 4294967297 
+PASS 3,27,26: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 4294967298 
+PASS 3,27,27: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 4294967299 
+PASS 3,27,28: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 4294967300 
+PASS 3,27,29: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how -0.5 
+PASS 3,27,30: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 0.5 
+PASS 3,27,31: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 1.5 
+PASS 3,27,32: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 2.5 
+PASS 3,27,33: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 3.5 
+PASS 3,27,34: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 4.5 
+PASS 3,27,35: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how -1.5 
+PASS 3,27,36: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how -0.5 
+PASS 3,27,37: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 0.5 
+PASS 3,27,38: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 1.5 
+PASS 3,27,39: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 2.5 
+PASS 3,27,40: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 3.5 
+PASS 3,27,41: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how -73.5 
+PASS 3,27,42: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how -72.5 
+PASS 3,27,43: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how -71.5 
+PASS 3,27,44: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how -70.5 
+PASS 3,27,45: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how -69.5 
+PASS 3,27,46: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how -68.5 
+PASS 3,27,47: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;0&quot; 
+PASS 3,27,48: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;1&quot; 
+PASS 3,27,49: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;2&quot; 
+PASS 3,27,50: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;3&quot; 
+PASS 3,27,51: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;-1&quot; 
+PASS 3,27,52: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;4&quot; 
+PASS 3,27,53: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;5&quot; 
+PASS 3,27,54: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;NaN&quot; 
+PASS 3,27,55: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;0&quot; 
+PASS 3,27,56: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;Infinity&quot; 
+PASS 3,27,57: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;-Infinity&quot; 
+PASS 3,27,58: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;65535&quot; 
+PASS 3,27,59: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;65536&quot; 
+PASS 3,27,60: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;65537&quot; 
+PASS 3,27,61: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;65538&quot; 
+PASS 3,27,62: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;65539&quot; 
+PASS 3,27,63: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;65540&quot; 
+PASS 3,27,64: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;-65537&quot; 
+PASS 3,27,65: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;-65536&quot; 
+PASS 3,27,66: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;-65535&quot; 
+PASS 3,27,67: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;-65534&quot; 
+PASS 3,27,68: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;-65533&quot; 
+PASS 3,27,69: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;-65532&quot; 
+PASS 3,27,70: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967295&quot; 
+PASS 3,27,71: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967296&quot; 
+PASS 3,27,72: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967297&quot; 
+PASS 3,27,73: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967298&quot; 
+PASS 3,27,74: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967299&quot; 
+PASS 3,27,75: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967300&quot; 
+PASS 3,27,76: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;-0.5&quot; 
+PASS 3,27,77: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;0.5&quot; 
+PASS 3,27,78: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;1.5&quot; 
+PASS 3,27,79: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;2.5&quot; 
+PASS 3,27,80: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;3.5&quot; 
+PASS 3,27,81: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;4.5&quot; 
+PASS 3,27,82: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;-1.5&quot; 
+PASS 3,27,83: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;-0.5&quot; 
+PASS 3,27,84: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;0.5&quot; 
+PASS 3,27,85: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;1.5&quot; 
+PASS 3,27,86: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;2.5&quot; 
+PASS 3,27,87: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;3.5&quot; 
+PASS 3,27,88: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;-73.5&quot; 
+PASS 3,27,89: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;-72.5&quot; 
+PASS 3,27,90: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;-71.5&quot; 
+PASS 3,27,91: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;-70.5&quot; 
+PASS 3,27,92: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;-69.5&quot; 
+PASS 3,27,93: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;-68.5&quot; 
+PASS 3,27,94: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;6.5536e4&quot; 
+PASS 3,27,95: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how null 
+PASS 3,27,96: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how undefined 
+PASS 3,27,97: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how true 
+PASS 3,27,98: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how false 
+PASS 3,27,99: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;&quot; 
+PASS 3,27,100: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how &quot;quasit&quot; 
+PASS 3,28,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 3,28,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 3,28,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 3,28,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 3,29,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 3,29,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 3,29,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 3,29,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 3,30,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 3,30,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 3,30,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 3,30,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 3,31,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 3,31,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 3,31,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 3,31,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 3,32,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 3,32,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 3,32,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 3,32,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 3,33,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 3,33,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 3,33,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 3,33,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 3,34,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 3,34,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 3,34,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 3,34,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 3,35,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 3,35,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 3,35,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 3,35,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 3,36,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 3,36,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 3,36,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 3,36,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 3,37,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 3,37,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 3,37,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 3,37,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 3,38,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 3,38,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 3,38,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 3,38,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 3,39,0: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range same as first range, how 0 
+PASS 3,39,1: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range same as first range, how 1 
+PASS 3,39,2: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range same as first range, how 2 
+PASS 3,39,3: context range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], argument range same as first range, how 3 
+PASS 4,0,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 0 [detached], how 0 
+PASS 4,0,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 0 [detached], how 1 
+PASS 4,0,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 0 [detached], how 2 
+PASS 4,0,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 0 [detached], how 3 
+PASS 4,1,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 4,1,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 4,1,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 4,1,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 4,2,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 4,2,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 4,2,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 4,2,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 4,3,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 4,3,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 4,3,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 4,3,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 4,4,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 4,4,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 4,4,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 4,4,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 4,5,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 4,5,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 4,5,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 4,5,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 4,6,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 4,6,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 4,6,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 4,6,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 4,7,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 4,7,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 4,7,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 4,7,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 4,8,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 4,8,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 4,8,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 4,8,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 4,9,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 4,9,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 4,9,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 4,9,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 4,10,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 4,10,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 4,10,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 4,10,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 4,11,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 4,11,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 4,11,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 4,11,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 4,12,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 4,12,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 4,12,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 4,12,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 4,13,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 4,13,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 4,13,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 4,13,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 4,14,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 4,14,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 4,14,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 4,14,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 4,15,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 4,15,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 4,15,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 4,15,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 4,16,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 4,16,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 4,16,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 4,16,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 4,17,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 4,17,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 4,17,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 4,17,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 4,18,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 4,18,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 4,18,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 4,18,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 4,19,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 4,19,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 4,19,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 4,19,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 4,20,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 4,20,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 4,20,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 4,20,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 4,21,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 4,21,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 4,21,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 4,21,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 4,22,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 4,22,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 4,22,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 4,22,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 4,23,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 4,23,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 4,23,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 4,23,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 4,24,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 24 [document, 0, document, 1], how 0 
+PASS 4,24,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 24 [document, 0, document, 1], how 1 
+PASS 4,24,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 24 [document, 0, document, 1], how 2 
+PASS 4,24,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 24 [document, 0, document, 1], how 3 
+PASS 4,25,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 25 [document, 0, document, 2], how 0 
+PASS 4,25,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 25 [document, 0, document, 2], how 1 
+PASS 4,25,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 25 [document, 0, document, 2], how 2 
+PASS 4,25,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 25 [document, 0, document, 2], how 3 
+PASS 4,26,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 4,26,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 4,26,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 4,26,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 4,27,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 4,27,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 4,27,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 4,27,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 4,28,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 4,28,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 4,28,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 4,28,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 4,29,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 4,29,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 4,29,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 4,29,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 4,30,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 4,30,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 4,30,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 4,30,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 4,31,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 4,31,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 4,31,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 4,31,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 4,32,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 4,32,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 4,32,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 4,32,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 4,33,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 4,33,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 4,33,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 4,33,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 4,34,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 4,34,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 4,34,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 4,34,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 4,35,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 4,35,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 4,35,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 4,35,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 4,36,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 4,36,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 4,36,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 4,36,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 4,37,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 4,37,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 4,37,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 4,37,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 4,38,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 4,38,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 4,38,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 4,38,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 4,39,0: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range same as first range, how 0 
+PASS 4,39,1: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range same as first range, how 1 
+PASS 4,39,2: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range same as first range, how 2 
+PASS 4,39,3: context range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], argument range same as first range, how 3 
+PASS 5,0,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 0 [detached], how 0 
+PASS 5,0,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 0 [detached], how 1 
+PASS 5,0,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 0 [detached], how 2 
+PASS 5,0,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 0 [detached], how 3 
+PASS 5,1,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 5,1,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 5,1,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 5,1,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 5,2,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 5,2,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 5,2,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 5,2,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 5,3,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 5,3,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 5,3,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 5,3,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 5,4,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 5,4,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 5,4,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 5,4,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 5,5,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 5,5,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 5,5,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 5,5,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 5,6,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 5,6,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 5,6,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 5,6,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 5,7,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 5,7,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 5,7,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 5,7,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 5,8,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 5,8,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 5,8,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 5,8,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 5,9,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 5,9,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 5,9,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 5,9,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 5,10,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 5,10,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 5,10,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 5,10,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 5,11,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 5,11,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 5,11,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 5,11,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 5,12,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 5,12,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 5,12,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 5,12,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 5,13,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 5,13,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 5,13,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 5,13,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 5,14,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 5,14,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 5,14,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 5,14,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 5,15,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 5,15,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 5,15,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 5,15,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 5,16,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 5,16,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 5,16,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 5,16,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 5,17,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 5,17,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 5,17,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 5,17,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 5,18,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 5,18,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 5,18,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 5,18,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 5,19,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 5,19,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 5,19,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 5,19,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 5,20,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 5,20,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 5,20,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 5,20,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 5,21,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 5,21,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 5,21,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 5,21,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 5,22,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 5,22,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 5,22,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 5,22,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 5,23,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 5,23,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 5,23,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 5,23,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 5,24,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 24 [document, 0, document, 1], how 0 
+PASS 5,24,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 24 [document, 0, document, 1], how 1 
+PASS 5,24,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 24 [document, 0, document, 1], how 2 
+PASS 5,24,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 24 [document, 0, document, 1], how 3 
+PASS 5,25,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 25 [document, 0, document, 2], how 0 
+PASS 5,25,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 25 [document, 0, document, 2], how 1 
+PASS 5,25,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 25 [document, 0, document, 2], how 2 
+PASS 5,25,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 25 [document, 0, document, 2], how 3 
+PASS 5,26,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 5,26,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 5,26,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 5,26,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 5,27,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 5,27,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 5,27,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 5,27,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 5,28,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 5,28,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 5,28,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 5,28,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 5,29,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 5,29,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 5,29,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 5,29,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 5,30,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 5,30,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 5,30,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 5,30,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 5,31,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 5,31,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 5,31,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 5,31,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 5,32,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 5,32,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 5,32,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 5,32,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 5,33,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 5,33,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 5,33,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 5,33,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 5,34,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 5,34,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 5,34,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 5,34,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 5,35,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 5,35,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 5,35,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 5,35,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 5,36,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 5,36,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 5,36,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 5,36,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 5,37,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 5,37,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 5,37,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 5,37,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 5,38,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 5,38,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 5,38,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 5,38,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 5,39,0: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range same as first range, how 0 
+PASS 5,39,1: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range same as first range, how 1 
+PASS 5,39,2: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range same as first range, how 2 
+PASS 5,39,3: context range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], argument range same as first range, how 3 
+PASS 6,0,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 0 [detached], how 0 
+PASS 6,0,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 0 [detached], how 1 
+PASS 6,0,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 0 [detached], how 2 
+PASS 6,0,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 0 [detached], how 3 
+PASS 6,1,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 6,1,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 6,1,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 6,1,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 6,2,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 6,2,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 6,2,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 6,2,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 6,3,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 6,3,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 6,3,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 6,3,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 6,4,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 6,4,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 6,4,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 6,4,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 6,5,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 6,5,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 6,5,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 6,5,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 6,6,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 6,6,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 6,6,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 6,6,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 6,7,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 6,7,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 6,7,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 6,7,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 6,8,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 6,8,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 6,8,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 6,8,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 6,9,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 6,9,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 6,9,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 6,9,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 6,10,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 6,10,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 6,10,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 6,10,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 6,11,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 6,11,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 6,11,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 6,11,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 6,12,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 6,12,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 6,12,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 6,12,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 6,13,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 6,13,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 6,13,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 6,13,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 6,14,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 6,14,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 6,14,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 6,14,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 6,15,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 6,15,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 6,15,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 6,15,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 6,16,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 6,16,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 6,16,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 6,16,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 6,17,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 6,17,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 6,17,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 6,17,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 6,18,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 6,18,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 6,18,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 6,18,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 6,19,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 6,19,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 6,19,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 6,19,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 6,20,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 6,20,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 6,20,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 6,20,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 6,21,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 6,21,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 6,21,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 6,21,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 6,22,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 6,22,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 6,22,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 6,22,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 6,23,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 6,23,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 6,23,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 6,23,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 6,24,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 24 [document, 0, document, 1], how 0 
+PASS 6,24,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 24 [document, 0, document, 1], how 1 
+PASS 6,24,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 24 [document, 0, document, 1], how 2 
+PASS 6,24,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 24 [document, 0, document, 1], how 3 
+PASS 6,25,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 25 [document, 0, document, 2], how 0 
+PASS 6,25,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 25 [document, 0, document, 2], how 1 
+PASS 6,25,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 25 [document, 0, document, 2], how 2 
+PASS 6,25,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 25 [document, 0, document, 2], how 3 
+PASS 6,26,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 6,26,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 6,26,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 6,26,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 6,27,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 6,27,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 6,27,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 6,27,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 6,28,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 6,28,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 6,28,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 6,28,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 6,29,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 6,29,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 6,29,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 6,29,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 6,30,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 6,30,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 6,30,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 6,30,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 6,31,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 6,31,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 6,31,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 6,31,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 6,32,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 6,32,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 6,32,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 6,32,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 6,33,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 6,33,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 6,33,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 6,33,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 6,34,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 6,34,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 6,34,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 6,34,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 6,35,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 6,35,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 6,35,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 6,35,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 6,36,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 6,36,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 6,36,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 6,36,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 6,37,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 6,37,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 6,37,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 6,37,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 6,38,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 6,38,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 6,38,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 6,38,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 6,39,0: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range same as first range, how 0 
+PASS 6,39,1: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range same as first range, how 1 
+PASS 6,39,2: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range same as first range, how 2 
+PASS 6,39,3: context range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], argument range same as first range, how 3 
+PASS 7,0,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 0 [detached], how 0 
+PASS 7,0,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 0 [detached], how 1 
+PASS 7,0,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 0 [detached], how 2 
+PASS 7,0,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 0 [detached], how 3 
+PASS 7,1,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 7,1,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 7,1,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 7,1,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 7,2,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 7,2,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 7,2,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 7,2,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 7,3,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 7,3,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 7,3,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 7,3,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 7,4,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 7,4,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 7,4,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 7,4,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 7,5,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 7,5,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 7,5,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 7,5,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 7,6,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 7,6,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 7,6,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 7,6,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 7,7,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 7,7,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 7,7,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 7,7,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 7,8,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 7,8,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 7,8,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 7,8,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 7,9,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 7,9,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 7,9,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 7,9,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 7,10,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 7,10,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 7,10,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 7,10,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 7,11,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 7,11,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 7,11,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 7,11,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 7,12,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 7,12,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 7,12,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 7,12,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 7,13,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 7,13,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 7,13,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 7,13,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 7,14,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 7,14,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 7,14,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 7,14,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 7,15,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 7,15,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 7,15,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 7,15,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 7,16,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 7,16,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 7,16,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 7,16,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 7,17,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 7,17,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 7,17,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 7,17,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 7,18,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 7,18,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 7,18,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 7,18,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 7,19,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 7,19,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 7,19,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 7,19,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 7,20,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 7,20,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 7,20,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 7,20,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 7,21,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 7,21,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 7,21,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 7,21,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 7,22,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 7,22,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 7,22,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 7,22,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 7,23,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 7,23,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 7,23,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 7,23,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 7,24,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 24 [document, 0, document, 1], how 0 
+PASS 7,24,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 24 [document, 0, document, 1], how 1 
+PASS 7,24,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 24 [document, 0, document, 1], how 2 
+PASS 7,24,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 24 [document, 0, document, 1], how 3 
+PASS 7,25,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 25 [document, 0, document, 2], how 0 
+PASS 7,25,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 25 [document, 0, document, 2], how 1 
+PASS 7,25,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 25 [document, 0, document, 2], how 2 
+PASS 7,25,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 25 [document, 0, document, 2], how 3 
+PASS 7,26,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 7,26,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 7,26,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 7,26,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 7,27,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 7,27,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 7,27,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 7,27,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 7,28,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 7,28,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 7,28,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 7,28,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 7,29,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 7,29,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 7,29,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 7,29,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 7,30,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 7,30,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 7,30,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 7,30,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 7,31,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 7,31,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 7,31,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 7,31,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 7,32,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 7,32,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 7,32,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 7,32,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 7,33,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 7,33,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 7,33,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 7,33,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 7,34,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 7,34,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 7,34,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 7,34,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 7,35,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 7,35,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 7,35,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 7,35,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 7,36,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 7,36,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 7,36,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 7,36,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 7,37,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 7,37,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 7,37,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 7,37,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 7,38,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 7,38,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 7,38,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 7,38,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 7,39,0: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range same as first range, how 0 
+PASS 7,39,1: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range same as first range, how 1 
+PASS 7,39,2: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range same as first range, how 2 
+PASS 7,39,3: context range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], argument range same as first range, how 3 
+PASS 8,0,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 0 [detached], how 0 
+PASS 8,0,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 0 [detached], how 1 
+PASS 8,0,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 0 [detached], how 2 
+PASS 8,0,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 0 [detached], how 3 
+PASS 8,1,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 8,1,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 8,1,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 8,1,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 8,2,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 8,2,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 8,2,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 8,2,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 8,3,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 8,3,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 8,3,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 8,3,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 8,4,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 8,4,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 8,4,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 8,4,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 8,5,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 8,5,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 8,5,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 8,5,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 8,6,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 8,6,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 8,6,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 8,6,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 8,7,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 8,7,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 8,7,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 8,7,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 8,8,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 8,8,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 8,8,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 8,8,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 8,9,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 8,9,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 8,9,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 8,9,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 8,10,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 8,10,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 8,10,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 8,10,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 8,11,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 8,11,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 8,11,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 8,11,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 8,12,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 8,12,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 8,12,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 8,12,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 8,13,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 8,13,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 8,13,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 8,13,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 8,14,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 8,14,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 8,14,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 8,14,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 8,15,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 8,15,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 8,15,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 8,15,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 8,16,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 8,16,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 8,16,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 8,16,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 8,17,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 8,17,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 8,17,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 8,17,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 8,18,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 8,18,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 8,18,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 8,18,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 8,19,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 8,19,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 8,19,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 8,19,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 8,20,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 8,20,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 8,20,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 8,20,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 8,21,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 8,21,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 8,21,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 8,21,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 8,22,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 8,22,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 8,22,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 8,22,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 8,23,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 8,23,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 8,23,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 8,23,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 8,24,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 24 [document, 0, document, 1], how 0 
+PASS 8,24,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 24 [document, 0, document, 1], how 1 
+PASS 8,24,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 24 [document, 0, document, 1], how 2 
+PASS 8,24,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 24 [document, 0, document, 1], how 3 
+PASS 8,25,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 25 [document, 0, document, 2], how 0 
+PASS 8,25,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 25 [document, 0, document, 2], how 1 
+PASS 8,25,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 25 [document, 0, document, 2], how 2 
+PASS 8,25,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 25 [document, 0, document, 2], how 3 
+PASS 8,26,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 8,26,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 8,26,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 8,26,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 8,27,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 8,27,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 8,27,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 8,27,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 8,28,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 8,28,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 8,28,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 8,28,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 8,29,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 8,29,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 8,29,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 8,29,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 8,30,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 8,30,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 8,30,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 8,30,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 8,31,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 8,31,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 8,31,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 8,31,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 8,32,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 8,32,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 8,32,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 8,32,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 8,33,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 8,33,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 8,33,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 8,33,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 8,34,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 8,34,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 8,34,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 8,34,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 8,35,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 8,35,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 8,35,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 8,35,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 8,36,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 8,36,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 8,36,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 8,36,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 8,37,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 8,37,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 8,37,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 8,37,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 8,38,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 8,38,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 8,38,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 8,38,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 8,39,0: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range same as first range, how 0 
+PASS 8,39,1: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range same as first range, how 1 
+PASS 8,39,2: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range same as first range, how 2 
+PASS 8,39,3: context range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], argument range same as first range, how 3 
+PASS 9,0,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 0 [detached], how 0 
+PASS 9,0,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 0 [detached], how 1 
+PASS 9,0,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 0 [detached], how 2 
+PASS 9,0,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 0 [detached], how 3 
+PASS 9,1,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 9,1,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 9,1,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 9,1,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 9,2,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 9,2,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 9,2,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 9,2,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 9,3,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 9,3,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 9,3,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 9,3,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 9,4,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 9,4,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 9,4,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 9,4,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 9,5,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 9,5,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 9,5,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 9,5,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 9,6,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 9,6,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 9,6,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 9,6,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 9,7,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 9,7,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 9,7,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 9,7,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 9,8,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 9,8,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 9,8,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 9,8,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 9,9,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 9,9,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 9,9,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 9,9,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 9,10,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 9,10,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 9,10,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 9,10,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 9,11,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 9,11,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 9,11,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 9,11,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 9,12,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 9,12,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 9,12,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 9,12,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 9,13,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 9,13,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 9,13,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 9,13,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 9,14,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 9,14,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 9,14,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 9,14,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 9,15,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 9,15,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 9,15,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 9,15,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 9,16,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 9,16,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 9,16,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 9,16,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 9,17,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 9,17,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 9,17,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 9,17,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 9,18,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 9,18,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 9,18,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 9,18,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 9,19,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 9,19,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 9,19,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 9,19,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 9,20,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 9,20,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 9,20,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 9,20,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 9,21,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 9,21,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 9,21,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 9,21,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 9,22,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 9,22,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 9,22,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 9,22,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 9,23,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 9,23,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 9,23,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 9,23,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 9,24,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 24 [document, 0, document, 1], how 0 
+PASS 9,24,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 24 [document, 0, document, 1], how 1 
+PASS 9,24,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 24 [document, 0, document, 1], how 2 
+PASS 9,24,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 24 [document, 0, document, 1], how 3 
+PASS 9,25,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 25 [document, 0, document, 2], how 0 
+PASS 9,25,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 25 [document, 0, document, 2], how 1 
+PASS 9,25,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 25 [document, 0, document, 2], how 2 
+PASS 9,25,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 25 [document, 0, document, 2], how 3 
+PASS 9,26,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 9,26,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 9,26,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 9,26,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 9,27,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 9,27,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 9,27,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 9,27,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 9,28,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 9,28,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 9,28,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 9,28,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 9,29,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 9,29,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 9,29,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 9,29,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 9,30,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 9,30,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 9,30,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 9,30,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 9,31,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 9,31,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 9,31,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 9,31,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 9,32,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 9,32,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 9,32,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 9,32,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 9,33,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 9,33,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 9,33,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 9,33,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 9,34,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 9,34,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 9,34,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 9,34,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 9,35,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 9,35,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 9,35,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 9,35,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 9,36,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 9,36,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 9,36,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 9,36,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 9,37,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 9,37,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 9,37,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 9,37,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 9,38,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 9,38,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 9,38,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 9,38,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 9,39,0: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range same as first range, how 0 
+PASS 9,39,1: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range same as first range, how 1 
+PASS 9,39,2: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range same as first range, how 2 
+PASS 9,39,3: context range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], argument range same as first range, how 3 
+PASS 10,0,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 0 [detached], how 0 
+PASS 10,0,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 0 [detached], how 1 
+PASS 10,0,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 0 [detached], how 2 
+PASS 10,0,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 0 [detached], how 3 
+PASS 10,1,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 10,1,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 10,1,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 10,1,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 10,2,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 10,2,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 10,2,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 10,2,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 10,3,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 10,3,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 10,3,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 10,3,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 10,4,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 10,4,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 10,4,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 10,4,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 10,5,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 10,5,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 10,5,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 10,5,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 10,6,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 10,6,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 10,6,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 10,6,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 10,7,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 10,7,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 10,7,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 10,7,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 10,8,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 10,8,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 10,8,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 10,8,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 10,9,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 10,9,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 10,9,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 10,9,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 10,10,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 10,10,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 10,10,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 10,10,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 10,11,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 10,11,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 10,11,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 10,11,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 10,12,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 10,12,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 10,12,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 10,12,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 10,13,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 10,13,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 10,13,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 10,13,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 10,14,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 10,14,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 10,14,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 10,14,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 10,15,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 10,15,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 10,15,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 10,15,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 10,16,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 10,16,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 10,16,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 10,16,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 10,17,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 10,17,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 10,17,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 10,17,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 10,18,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 10,18,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 10,18,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 10,18,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 10,19,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 10,19,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 10,19,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 10,19,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 10,20,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 10,20,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 10,20,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 10,20,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 10,21,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 10,21,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 10,21,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 10,21,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 10,22,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 10,22,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 10,22,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 10,22,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 10,23,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 10,23,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 10,23,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 10,23,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 10,24,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 24 [document, 0, document, 1], how 0 
+PASS 10,24,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 24 [document, 0, document, 1], how 1 
+PASS 10,24,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 24 [document, 0, document, 1], how 2 
+PASS 10,24,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 24 [document, 0, document, 1], how 3 
+PASS 10,25,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 25 [document, 0, document, 2], how 0 
+PASS 10,25,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 25 [document, 0, document, 2], how 1 
+PASS 10,25,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 25 [document, 0, document, 2], how 2 
+PASS 10,25,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 25 [document, 0, document, 2], how 3 
+PASS 10,26,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 10,26,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 10,26,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 10,26,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 10,27,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 10,27,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 10,27,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 10,27,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 10,28,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 10,28,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 10,28,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 10,28,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 10,29,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 10,29,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 10,29,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 10,29,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 10,30,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 10,30,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 10,30,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 10,30,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 10,31,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 10,31,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 10,31,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 10,31,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 10,32,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 10,32,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 10,32,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 10,32,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 10,33,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 10,33,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 10,33,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 10,33,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 10,34,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 10,34,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 10,34,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 10,34,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 10,35,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 10,35,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 10,35,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 10,35,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 10,36,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 10,36,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 10,36,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 10,36,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 10,37,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 10,37,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 10,37,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 10,37,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 10,38,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 10,38,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 10,38,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 10,38,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 10,39,0: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range same as first range, how 0 
+PASS 10,39,1: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range same as first range, how 1 
+PASS 10,39,2: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range same as first range, how 2 
+PASS 10,39,3: context range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], argument range same as first range, how 3 
+PASS 11,0,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 0 [detached], how 0 
+PASS 11,0,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 0 [detached], how 1 
+PASS 11,0,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 0 [detached], how 2 
+PASS 11,0,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 0 [detached], how 3 
+PASS 11,1,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 11,1,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 11,1,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 11,1,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 11,2,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 11,2,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 11,2,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 11,2,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 11,3,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 11,3,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 11,3,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 11,3,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 11,4,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 11,4,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 11,4,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 11,4,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 11,5,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 11,5,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 11,5,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 11,5,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 11,6,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 11,6,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 11,6,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 11,6,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 11,7,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 11,7,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 11,7,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 11,7,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 11,8,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 11,8,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 11,8,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 11,8,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 11,9,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 11,9,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 11,9,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 11,9,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 11,10,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 11,10,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 11,10,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 11,10,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 11,11,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 11,11,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 11,11,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 11,11,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 11,12,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 11,12,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 11,12,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 11,12,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 11,13,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 11,13,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 11,13,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 11,13,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 11,14,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 11,14,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 11,14,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 11,14,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 11,15,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 11,15,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 11,15,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 11,15,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 11,16,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 11,16,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 11,16,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 11,16,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 11,17,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 11,17,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 11,17,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 11,17,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 11,18,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 11,18,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 11,18,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 11,18,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 11,19,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 11,19,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 11,19,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 11,19,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 11,20,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 11,20,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 11,20,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 11,20,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 11,21,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 11,21,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 11,21,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 11,21,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 11,22,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 11,22,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 11,22,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 11,22,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 11,23,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 11,23,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 11,23,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 11,23,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 11,24,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 24 [document, 0, document, 1], how 0 
+PASS 11,24,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 24 [document, 0, document, 1], how 1 
+PASS 11,24,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 24 [document, 0, document, 1], how 2 
+PASS 11,24,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 24 [document, 0, document, 1], how 3 
+PASS 11,25,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 25 [document, 0, document, 2], how 0 
+PASS 11,25,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 25 [document, 0, document, 2], how 1 
+PASS 11,25,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 25 [document, 0, document, 2], how 2 
+PASS 11,25,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 25 [document, 0, document, 2], how 3 
+PASS 11,26,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 11,26,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 11,26,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 11,26,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 11,27,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 11,27,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 11,27,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 11,27,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 11,28,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 11,28,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 11,28,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 11,28,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 11,29,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 11,29,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 11,29,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 11,29,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 11,30,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 11,30,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 11,30,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 11,30,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 11,31,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 11,31,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 11,31,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 11,31,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 11,32,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 11,32,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 11,32,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 11,32,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 11,33,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 11,33,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 11,33,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 11,33,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 11,34,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 11,34,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 11,34,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 11,34,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 11,35,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 11,35,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 11,35,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 11,35,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 11,36,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 11,36,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 11,36,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 11,36,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 11,37,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 11,37,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 11,37,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 11,37,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 11,38,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 11,38,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 11,38,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 11,38,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 11,39,0: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range same as first range, how 0 
+PASS 11,39,1: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range same as first range, how 1 
+PASS 11,39,2: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range same as first range, how 2 
+PASS 11,39,3: context range 11 [document.documentElement, 0, document.documentElement, 1], argument range same as first range, how 3 
+PASS 12,0,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 0 [detached], how 0 
+PASS 12,0,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 0 [detached], how 1 
+PASS 12,0,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 0 [detached], how 2 
+PASS 12,0,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 0 [detached], how 3 
+PASS 12,1,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 12,1,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 12,1,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 12,1,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 12,2,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 12,2,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 12,2,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 12,2,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 12,3,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 12,3,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 12,3,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 12,3,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 12,4,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 12,4,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 12,4,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 12,4,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 12,5,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 12,5,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 12,5,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 12,5,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 12,6,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 12,6,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 12,6,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 12,6,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 12,7,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 12,7,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 12,7,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 12,7,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 12,8,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 12,8,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 12,8,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 12,8,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 12,9,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 12,9,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 12,9,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 12,9,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 12,10,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 12,10,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 12,10,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 12,10,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 12,11,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 12,11,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 12,11,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 12,11,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 12,12,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 12,12,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 12,12,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 12,12,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 12,13,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 12,13,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 12,13,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 12,13,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 12,14,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 12,14,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 12,14,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 12,14,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 12,15,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 12,15,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 12,15,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 12,15,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 12,16,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 12,16,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 12,16,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 12,16,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 12,17,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 12,17,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 12,17,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 12,17,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 12,18,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 12,18,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 12,18,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 12,18,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 12,19,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 12,19,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 12,19,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 12,19,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 12,20,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 12,20,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 12,20,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 12,20,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 12,21,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 12,21,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 12,21,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 12,21,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 12,22,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 12,22,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 12,22,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 12,22,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 12,23,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 12,23,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 12,23,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 12,23,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 12,24,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 24 [document, 0, document, 1], how 0 
+PASS 12,24,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 24 [document, 0, document, 1], how 1 
+PASS 12,24,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 24 [document, 0, document, 1], how 2 
+PASS 12,24,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 24 [document, 0, document, 1], how 3 
+PASS 12,25,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 25 [document, 0, document, 2], how 0 
+PASS 12,25,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 25 [document, 0, document, 2], how 1 
+PASS 12,25,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 25 [document, 0, document, 2], how 2 
+PASS 12,25,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 25 [document, 0, document, 2], how 3 
+PASS 12,26,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 12,26,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 12,26,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 12,26,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 12,27,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 12,27,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 12,27,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 12,27,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 12,28,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 12,28,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 12,28,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 12,28,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 12,29,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 12,29,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 12,29,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 12,29,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 12,30,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 12,30,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 12,30,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 12,30,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 12,31,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 12,31,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 12,31,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 12,31,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 12,32,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 12,32,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 12,32,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 12,32,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 12,33,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 12,33,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 12,33,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 12,33,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 12,34,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 12,34,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 12,34,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 12,34,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 12,35,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 12,35,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 12,35,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 12,35,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 12,36,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 12,36,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 12,36,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 12,36,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 12,37,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 12,37,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 12,37,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 12,37,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 12,38,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 12,38,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 12,38,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 12,38,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 12,39,0: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range same as first range, how 0 
+PASS 12,39,1: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range same as first range, how 1 
+PASS 12,39,2: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range same as first range, how 2 
+PASS 12,39,3: context range 12 [document.documentElement, 0, document.documentElement, 2], argument range same as first range, how 3 
+PASS 13,0,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 0 [detached], how 0 
+PASS 13,0,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 0 [detached], how 1 
+PASS 13,0,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 0 [detached], how 2 
+PASS 13,0,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 0 [detached], how 3 
+PASS 13,1,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 13,1,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 13,1,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 13,1,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 13,2,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 13,2,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 13,2,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 13,2,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 13,3,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 13,3,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 13,3,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 13,3,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 13,4,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 13,4,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 13,4,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 13,4,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 13,5,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 13,5,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 13,5,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 13,5,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 13,6,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 13,6,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 13,6,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 13,6,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 13,7,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 13,7,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 13,7,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 13,7,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 13,8,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 13,8,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 13,8,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 13,8,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 13,9,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 13,9,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 13,9,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 13,9,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 13,10,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 13,10,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 13,10,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 13,10,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 13,11,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 13,11,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 13,11,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 13,11,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 13,12,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 13,12,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 13,12,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 13,12,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 13,13,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 13,13,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 13,13,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 13,13,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 13,14,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 13,14,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 13,14,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 13,14,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 13,15,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 13,15,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 13,15,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 13,15,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 13,16,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 13,16,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 13,16,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 13,16,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 13,17,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 13,17,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 13,17,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 13,17,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 13,18,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 13,18,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 13,18,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 13,18,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 13,19,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 13,19,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 13,19,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 13,19,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 13,20,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 13,20,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 13,20,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 13,20,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 13,21,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 13,21,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 13,21,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 13,21,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 13,22,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 13,22,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 13,22,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 13,22,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 13,23,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 13,23,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 13,23,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 13,23,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 13,24,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 24 [document, 0, document, 1], how 0 
+PASS 13,24,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 24 [document, 0, document, 1], how 1 
+PASS 13,24,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 24 [document, 0, document, 1], how 2 
+PASS 13,24,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 24 [document, 0, document, 1], how 3 
+PASS 13,25,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 25 [document, 0, document, 2], how 0 
+PASS 13,25,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 25 [document, 0, document, 2], how 1 
+PASS 13,25,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 25 [document, 0, document, 2], how 2 
+PASS 13,25,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 25 [document, 0, document, 2], how 3 
+PASS 13,26,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 13,26,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 13,26,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 13,26,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 13,27,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 13,27,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 13,27,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 13,27,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 13,28,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 13,28,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 13,28,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 13,28,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 13,29,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 13,29,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 13,29,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 13,29,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 13,30,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 13,30,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 13,30,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 13,30,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 13,31,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 13,31,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 13,31,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 13,31,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 13,32,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 13,32,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 13,32,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 13,32,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 13,33,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 13,33,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 13,33,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 13,33,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 13,34,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 13,34,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 13,34,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 13,34,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 13,35,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 13,35,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 13,35,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 13,35,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 13,36,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 13,36,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 13,36,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 13,36,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 13,37,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 13,37,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 13,37,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 13,37,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 13,38,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 13,38,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 13,38,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 13,38,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 13,39,0: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range same as first range, how 0 
+PASS 13,39,1: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range same as first range, how 1 
+PASS 13,39,2: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range same as first range, how 2 
+PASS 13,39,3: context range 13 [document.documentElement, 1, document.documentElement, 2], argument range same as first range, how 3 
+PASS 14,0,0: context range 14 [document.head, 1, document.head, 1], argument range 0 [detached], how 0 
+PASS 14,0,1: context range 14 [document.head, 1, document.head, 1], argument range 0 [detached], how 1 
+PASS 14,0,2: context range 14 [document.head, 1, document.head, 1], argument range 0 [detached], how 2 
+PASS 14,0,3: context range 14 [document.head, 1, document.head, 1], argument range 0 [detached], how 3 
+PASS 14,1,0: context range 14 [document.head, 1, document.head, 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 14,1,1: context range 14 [document.head, 1, document.head, 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 14,1,2: context range 14 [document.head, 1, document.head, 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 14,1,3: context range 14 [document.head, 1, document.head, 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 14,2,0: context range 14 [document.head, 1, document.head, 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 14,2,1: context range 14 [document.head, 1, document.head, 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 14,2,2: context range 14 [document.head, 1, document.head, 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 14,2,3: context range 14 [document.head, 1, document.head, 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 14,3,0: context range 14 [document.head, 1, document.head, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 14,3,1: context range 14 [document.head, 1, document.head, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 14,3,2: context range 14 [document.head, 1, document.head, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 14,3,3: context range 14 [document.head, 1, document.head, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 14,4,0: context range 14 [document.head, 1, document.head, 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 14,4,1: context range 14 [document.head, 1, document.head, 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 14,4,2: context range 14 [document.head, 1, document.head, 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 14,4,3: context range 14 [document.head, 1, document.head, 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 14,5,0: context range 14 [document.head, 1, document.head, 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 14,5,1: context range 14 [document.head, 1, document.head, 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 14,5,2: context range 14 [document.head, 1, document.head, 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 14,5,3: context range 14 [document.head, 1, document.head, 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 14,6,0: context range 14 [document.head, 1, document.head, 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 14,6,1: context range 14 [document.head, 1, document.head, 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 14,6,2: context range 14 [document.head, 1, document.head, 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 14,6,3: context range 14 [document.head, 1, document.head, 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 14,7,0: context range 14 [document.head, 1, document.head, 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 14,7,1: context range 14 [document.head, 1, document.head, 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 14,7,2: context range 14 [document.head, 1, document.head, 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 14,7,3: context range 14 [document.head, 1, document.head, 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 14,8,0: context range 14 [document.head, 1, document.head, 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 14,8,1: context range 14 [document.head, 1, document.head, 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 14,8,2: context range 14 [document.head, 1, document.head, 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 14,8,3: context range 14 [document.head, 1, document.head, 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 14,9,0: context range 14 [document.head, 1, document.head, 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 14,9,1: context range 14 [document.head, 1, document.head, 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 14,9,2: context range 14 [document.head, 1, document.head, 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 14,9,3: context range 14 [document.head, 1, document.head, 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 14,10,0: context range 14 [document.head, 1, document.head, 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 14,10,1: context range 14 [document.head, 1, document.head, 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 14,10,2: context range 14 [document.head, 1, document.head, 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 14,10,3: context range 14 [document.head, 1, document.head, 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 14,11,0: context range 14 [document.head, 1, document.head, 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 14,11,1: context range 14 [document.head, 1, document.head, 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 14,11,2: context range 14 [document.head, 1, document.head, 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 14,11,3: context range 14 [document.head, 1, document.head, 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 14,12,0: context range 14 [document.head, 1, document.head, 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 14,12,1: context range 14 [document.head, 1, document.head, 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 14,12,2: context range 14 [document.head, 1, document.head, 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 14,12,3: context range 14 [document.head, 1, document.head, 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 14,13,0: context range 14 [document.head, 1, document.head, 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 14,13,1: context range 14 [document.head, 1, document.head, 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 14,13,2: context range 14 [document.head, 1, document.head, 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 14,13,3: context range 14 [document.head, 1, document.head, 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 14,14,0: context range 14 [document.head, 1, document.head, 1], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 14,14,1: context range 14 [document.head, 1, document.head, 1], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 14,14,2: context range 14 [document.head, 1, document.head, 1], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 14,14,3: context range 14 [document.head, 1, document.head, 1], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 14,15,0: context range 14 [document.head, 1, document.head, 1], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 14,15,1: context range 14 [document.head, 1, document.head, 1], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 14,15,2: context range 14 [document.head, 1, document.head, 1], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 14,15,3: context range 14 [document.head, 1, document.head, 1], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 14,16,0: context range 14 [document.head, 1, document.head, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 14,16,1: context range 14 [document.head, 1, document.head, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 14,16,2: context range 14 [document.head, 1, document.head, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 14,16,3: context range 14 [document.head, 1, document.head, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 14,17,0: context range 14 [document.head, 1, document.head, 1], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 14,17,1: context range 14 [document.head, 1, document.head, 1], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 14,17,2: context range 14 [document.head, 1, document.head, 1], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 14,17,3: context range 14 [document.head, 1, document.head, 1], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 14,18,0: context range 14 [document.head, 1, document.head, 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 14,18,1: context range 14 [document.head, 1, document.head, 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 14,18,2: context range 14 [document.head, 1, document.head, 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 14,18,3: context range 14 [document.head, 1, document.head, 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 14,19,0: context range 14 [document.head, 1, document.head, 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 14,19,1: context range 14 [document.head, 1, document.head, 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 14,19,2: context range 14 [document.head, 1, document.head, 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 14,19,3: context range 14 [document.head, 1, document.head, 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 14,20,0: context range 14 [document.head, 1, document.head, 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 14,20,1: context range 14 [document.head, 1, document.head, 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 14,20,2: context range 14 [document.head, 1, document.head, 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 14,20,3: context range 14 [document.head, 1, document.head, 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 14,21,0: context range 14 [document.head, 1, document.head, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 14,21,1: context range 14 [document.head, 1, document.head, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 14,21,2: context range 14 [document.head, 1, document.head, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 14,21,3: context range 14 [document.head, 1, document.head, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 14,22,0: context range 14 [document.head, 1, document.head, 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 14,22,1: context range 14 [document.head, 1, document.head, 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 14,22,2: context range 14 [document.head, 1, document.head, 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 14,22,3: context range 14 [document.head, 1, document.head, 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 14,23,0: context range 14 [document.head, 1, document.head, 1], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 14,23,1: context range 14 [document.head, 1, document.head, 1], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 14,23,2: context range 14 [document.head, 1, document.head, 1], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 14,23,3: context range 14 [document.head, 1, document.head, 1], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 14,24,0: context range 14 [document.head, 1, document.head, 1], argument range 24 [document, 0, document, 1], how 0 
+PASS 14,24,1: context range 14 [document.head, 1, document.head, 1], argument range 24 [document, 0, document, 1], how 1 
+PASS 14,24,2: context range 14 [document.head, 1, document.head, 1], argument range 24 [document, 0, document, 1], how 2 
+PASS 14,24,3: context range 14 [document.head, 1, document.head, 1], argument range 24 [document, 0, document, 1], how 3 
+PASS 14,25,0: context range 14 [document.head, 1, document.head, 1], argument range 25 [document, 0, document, 2], how 0 
+PASS 14,25,1: context range 14 [document.head, 1, document.head, 1], argument range 25 [document, 0, document, 2], how 1 
+PASS 14,25,2: context range 14 [document.head, 1, document.head, 1], argument range 25 [document, 0, document, 2], how 2 
+PASS 14,25,3: context range 14 [document.head, 1, document.head, 1], argument range 25 [document, 0, document, 2], how 3 
+PASS 14,26,0: context range 14 [document.head, 1, document.head, 1], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 14,26,1: context range 14 [document.head, 1, document.head, 1], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 14,26,2: context range 14 [document.head, 1, document.head, 1], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 14,26,3: context range 14 [document.head, 1, document.head, 1], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 14,27,0: context range 14 [document.head, 1, document.head, 1], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 14,27,1: context range 14 [document.head, 1, document.head, 1], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 14,27,2: context range 14 [document.head, 1, document.head, 1], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 14,27,3: context range 14 [document.head, 1, document.head, 1], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 14,28,0: context range 14 [document.head, 1, document.head, 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 14,28,1: context range 14 [document.head, 1, document.head, 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 14,28,2: context range 14 [document.head, 1, document.head, 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 14,28,3: context range 14 [document.head, 1, document.head, 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 14,29,0: context range 14 [document.head, 1, document.head, 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 14,29,1: context range 14 [document.head, 1, document.head, 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 14,29,2: context range 14 [document.head, 1, document.head, 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 14,29,3: context range 14 [document.head, 1, document.head, 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 14,30,0: context range 14 [document.head, 1, document.head, 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 14,30,1: context range 14 [document.head, 1, document.head, 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 14,30,2: context range 14 [document.head, 1, document.head, 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 14,30,3: context range 14 [document.head, 1, document.head, 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 14,31,0: context range 14 [document.head, 1, document.head, 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 14,31,1: context range 14 [document.head, 1, document.head, 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 14,31,2: context range 14 [document.head, 1, document.head, 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 14,31,3: context range 14 [document.head, 1, document.head, 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 14,32,0: context range 14 [document.head, 1, document.head, 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 14,32,1: context range 14 [document.head, 1, document.head, 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 14,32,2: context range 14 [document.head, 1, document.head, 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 14,32,3: context range 14 [document.head, 1, document.head, 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 14,33,0: context range 14 [document.head, 1, document.head, 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 14,33,1: context range 14 [document.head, 1, document.head, 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 14,33,2: context range 14 [document.head, 1, document.head, 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 14,33,3: context range 14 [document.head, 1, document.head, 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 14,34,0: context range 14 [document.head, 1, document.head, 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 14,34,1: context range 14 [document.head, 1, document.head, 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 14,34,2: context range 14 [document.head, 1, document.head, 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 14,34,3: context range 14 [document.head, 1, document.head, 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 14,35,0: context range 14 [document.head, 1, document.head, 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 14,35,1: context range 14 [document.head, 1, document.head, 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 14,35,2: context range 14 [document.head, 1, document.head, 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 14,35,3: context range 14 [document.head, 1, document.head, 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 14,36,0: context range 14 [document.head, 1, document.head, 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 14,36,1: context range 14 [document.head, 1, document.head, 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 14,36,2: context range 14 [document.head, 1, document.head, 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 14,36,3: context range 14 [document.head, 1, document.head, 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 14,37,0: context range 14 [document.head, 1, document.head, 1], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 14,37,1: context range 14 [document.head, 1, document.head, 1], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 14,37,2: context range 14 [document.head, 1, document.head, 1], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 14,37,3: context range 14 [document.head, 1, document.head, 1], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 14,38,0: context range 14 [document.head, 1, document.head, 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 14,38,1: context range 14 [document.head, 1, document.head, 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 14,38,2: context range 14 [document.head, 1, document.head, 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 14,38,3: context range 14 [document.head, 1, document.head, 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 14,39,0: context range 14 [document.head, 1, document.head, 1], argument range same as first range, how 0 
+PASS 14,39,1: context range 14 [document.head, 1, document.head, 1], argument range same as first range, how 1 
+PASS 14,39,2: context range 14 [document.head, 1, document.head, 1], argument range same as first range, how 2 
+PASS 14,39,3: context range 14 [document.head, 1, document.head, 1], argument range same as first range, how 3 
+PASS 15,0,0: context range 15 [document.body, 4, document.body, 5], argument range 0 [detached], how 0 
+PASS 15,0,1: context range 15 [document.body, 4, document.body, 5], argument range 0 [detached], how 1 
+PASS 15,0,2: context range 15 [document.body, 4, document.body, 5], argument range 0 [detached], how 2 
+PASS 15,0,3: context range 15 [document.body, 4, document.body, 5], argument range 0 [detached], how 3 
+PASS 15,1,0: context range 15 [document.body, 4, document.body, 5], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 15,1,1: context range 15 [document.body, 4, document.body, 5], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 15,1,2: context range 15 [document.body, 4, document.body, 5], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 15,1,3: context range 15 [document.body, 4, document.body, 5], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 15,2,0: context range 15 [document.body, 4, document.body, 5], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 15,2,1: context range 15 [document.body, 4, document.body, 5], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 15,2,2: context range 15 [document.body, 4, document.body, 5], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 15,2,3: context range 15 [document.body, 4, document.body, 5], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 15,3,0: context range 15 [document.body, 4, document.body, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 15,3,1: context range 15 [document.body, 4, document.body, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 15,3,2: context range 15 [document.body, 4, document.body, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 15,3,3: context range 15 [document.body, 4, document.body, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 15,4,0: context range 15 [document.body, 4, document.body, 5], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 15,4,1: context range 15 [document.body, 4, document.body, 5], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 15,4,2: context range 15 [document.body, 4, document.body, 5], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 15,4,3: context range 15 [document.body, 4, document.body, 5], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 15,5,0: context range 15 [document.body, 4, document.body, 5], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 15,5,1: context range 15 [document.body, 4, document.body, 5], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 15,5,2: context range 15 [document.body, 4, document.body, 5], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 15,5,3: context range 15 [document.body, 4, document.body, 5], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 15,6,0: context range 15 [document.body, 4, document.body, 5], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 15,6,1: context range 15 [document.body, 4, document.body, 5], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 15,6,2: context range 15 [document.body, 4, document.body, 5], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 15,6,3: context range 15 [document.body, 4, document.body, 5], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 15,7,0: context range 15 [document.body, 4, document.body, 5], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 15,7,1: context range 15 [document.body, 4, document.body, 5], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 15,7,2: context range 15 [document.body, 4, document.body, 5], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 15,7,3: context range 15 [document.body, 4, document.body, 5], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 15,8,0: context range 15 [document.body, 4, document.body, 5], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 15,8,1: context range 15 [document.body, 4, document.body, 5], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 15,8,2: context range 15 [document.body, 4, document.body, 5], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 15,8,3: context range 15 [document.body, 4, document.body, 5], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 15,9,0: context range 15 [document.body, 4, document.body, 5], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 15,9,1: context range 15 [document.body, 4, document.body, 5], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 15,9,2: context range 15 [document.body, 4, document.body, 5], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 15,9,3: context range 15 [document.body, 4, document.body, 5], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 15,10,0: context range 15 [document.body, 4, document.body, 5], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 15,10,1: context range 15 [document.body, 4, document.body, 5], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 15,10,2: context range 15 [document.body, 4, document.body, 5], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 15,10,3: context range 15 [document.body, 4, document.body, 5], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 15,11,0: context range 15 [document.body, 4, document.body, 5], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 15,11,1: context range 15 [document.body, 4, document.body, 5], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 15,11,2: context range 15 [document.body, 4, document.body, 5], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 15,11,3: context range 15 [document.body, 4, document.body, 5], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 15,12,0: context range 15 [document.body, 4, document.body, 5], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 15,12,1: context range 15 [document.body, 4, document.body, 5], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 15,12,2: context range 15 [document.body, 4, document.body, 5], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 15,12,3: context range 15 [document.body, 4, document.body, 5], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 15,13,0: context range 15 [document.body, 4, document.body, 5], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 15,13,1: context range 15 [document.body, 4, document.body, 5], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 15,13,2: context range 15 [document.body, 4, document.body, 5], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 15,13,3: context range 15 [document.body, 4, document.body, 5], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 15,14,0: context range 15 [document.body, 4, document.body, 5], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 15,14,1: context range 15 [document.body, 4, document.body, 5], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 15,14,2: context range 15 [document.body, 4, document.body, 5], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 15,14,3: context range 15 [document.body, 4, document.body, 5], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 15,15,0: context range 15 [document.body, 4, document.body, 5], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 15,15,1: context range 15 [document.body, 4, document.body, 5], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 15,15,2: context range 15 [document.body, 4, document.body, 5], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 15,15,3: context range 15 [document.body, 4, document.body, 5], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 15,16,0: context range 15 [document.body, 4, document.body, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 15,16,1: context range 15 [document.body, 4, document.body, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 15,16,2: context range 15 [document.body, 4, document.body, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 15,16,3: context range 15 [document.body, 4, document.body, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 15,17,0: context range 15 [document.body, 4, document.body, 5], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 15,17,1: context range 15 [document.body, 4, document.body, 5], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 15,17,2: context range 15 [document.body, 4, document.body, 5], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 15,17,3: context range 15 [document.body, 4, document.body, 5], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 15,18,0: context range 15 [document.body, 4, document.body, 5], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 15,18,1: context range 15 [document.body, 4, document.body, 5], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 15,18,2: context range 15 [document.body, 4, document.body, 5], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 15,18,3: context range 15 [document.body, 4, document.body, 5], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 15,19,0: context range 15 [document.body, 4, document.body, 5], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 15,19,1: context range 15 [document.body, 4, document.body, 5], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 15,19,2: context range 15 [document.body, 4, document.body, 5], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 15,19,3: context range 15 [document.body, 4, document.body, 5], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 15,20,0: context range 15 [document.body, 4, document.body, 5], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 15,20,1: context range 15 [document.body, 4, document.body, 5], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 15,20,2: context range 15 [document.body, 4, document.body, 5], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 15,20,3: context range 15 [document.body, 4, document.body, 5], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 15,21,0: context range 15 [document.body, 4, document.body, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 15,21,1: context range 15 [document.body, 4, document.body, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 15,21,2: context range 15 [document.body, 4, document.body, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 15,21,3: context range 15 [document.body, 4, document.body, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 15,22,0: context range 15 [document.body, 4, document.body, 5], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 15,22,1: context range 15 [document.body, 4, document.body, 5], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 15,22,2: context range 15 [document.body, 4, document.body, 5], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 15,22,3: context range 15 [document.body, 4, document.body, 5], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 15,23,0: context range 15 [document.body, 4, document.body, 5], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 15,23,1: context range 15 [document.body, 4, document.body, 5], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 15,23,2: context range 15 [document.body, 4, document.body, 5], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 15,23,3: context range 15 [document.body, 4, document.body, 5], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 15,24,0: context range 15 [document.body, 4, document.body, 5], argument range 24 [document, 0, document, 1], how 0 
+PASS 15,24,1: context range 15 [document.body, 4, document.body, 5], argument range 24 [document, 0, document, 1], how 1 
+PASS 15,24,2: context range 15 [document.body, 4, document.body, 5], argument range 24 [document, 0, document, 1], how 2 
+PASS 15,24,3: context range 15 [document.body, 4, document.body, 5], argument range 24 [document, 0, document, 1], how 3 
+PASS 15,25,0: context range 15 [document.body, 4, document.body, 5], argument range 25 [document, 0, document, 2], how 0 
+PASS 15,25,1: context range 15 [document.body, 4, document.body, 5], argument range 25 [document, 0, document, 2], how 1 
+PASS 15,25,2: context range 15 [document.body, 4, document.body, 5], argument range 25 [document, 0, document, 2], how 2 
+PASS 15,25,3: context range 15 [document.body, 4, document.body, 5], argument range 25 [document, 0, document, 2], how 3 
+PASS 15,26,0: context range 15 [document.body, 4, document.body, 5], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 15,26,1: context range 15 [document.body, 4, document.body, 5], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 15,26,2: context range 15 [document.body, 4, document.body, 5], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 15,26,3: context range 15 [document.body, 4, document.body, 5], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 15,27,0: context range 15 [document.body, 4, document.body, 5], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 15,27,1: context range 15 [document.body, 4, document.body, 5], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 15,27,2: context range 15 [document.body, 4, document.body, 5], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 15,27,3: context range 15 [document.body, 4, document.body, 5], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 15,28,0: context range 15 [document.body, 4, document.body, 5], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 15,28,1: context range 15 [document.body, 4, document.body, 5], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 15,28,2: context range 15 [document.body, 4, document.body, 5], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 15,28,3: context range 15 [document.body, 4, document.body, 5], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 15,29,0: context range 15 [document.body, 4, document.body, 5], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 15,29,1: context range 15 [document.body, 4, document.body, 5], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 15,29,2: context range 15 [document.body, 4, document.body, 5], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 15,29,3: context range 15 [document.body, 4, document.body, 5], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 15,30,0: context range 15 [document.body, 4, document.body, 5], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 15,30,1: context range 15 [document.body, 4, document.body, 5], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 15,30,2: context range 15 [document.body, 4, document.body, 5], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 15,30,3: context range 15 [document.body, 4, document.body, 5], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 15,31,0: context range 15 [document.body, 4, document.body, 5], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 15,31,1: context range 15 [document.body, 4, document.body, 5], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 15,31,2: context range 15 [document.body, 4, document.body, 5], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 15,31,3: context range 15 [document.body, 4, document.body, 5], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 15,32,0: context range 15 [document.body, 4, document.body, 5], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 15,32,1: context range 15 [document.body, 4, document.body, 5], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 15,32,2: context range 15 [document.body, 4, document.body, 5], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 15,32,3: context range 15 [document.body, 4, document.body, 5], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 15,33,0: context range 15 [document.body, 4, document.body, 5], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 15,33,1: context range 15 [document.body, 4, document.body, 5], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 15,33,2: context range 15 [document.body, 4, document.body, 5], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 15,33,3: context range 15 [document.body, 4, document.body, 5], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 15,34,0: context range 15 [document.body, 4, document.body, 5], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 15,34,1: context range 15 [document.body, 4, document.body, 5], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 15,34,2: context range 15 [document.body, 4, document.body, 5], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 15,34,3: context range 15 [document.body, 4, document.body, 5], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 15,35,0: context range 15 [document.body, 4, document.body, 5], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 15,35,1: context range 15 [document.body, 4, document.body, 5], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 15,35,2: context range 15 [document.body, 4, document.body, 5], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 15,35,3: context range 15 [document.body, 4, document.body, 5], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 15,36,0: context range 15 [document.body, 4, document.body, 5], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 15,36,1: context range 15 [document.body, 4, document.body, 5], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 15,36,2: context range 15 [document.body, 4, document.body, 5], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 15,36,3: context range 15 [document.body, 4, document.body, 5], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 15,37,0: context range 15 [document.body, 4, document.body, 5], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 15,37,1: context range 15 [document.body, 4, document.body, 5], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 15,37,2: context range 15 [document.body, 4, document.body, 5], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 15,37,3: context range 15 [document.body, 4, document.body, 5], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 15,38,0: context range 15 [document.body, 4, document.body, 5], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 15,38,1: context range 15 [document.body, 4, document.body, 5], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 15,38,2: context range 15 [document.body, 4, document.body, 5], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 15,38,3: context range 15 [document.body, 4, document.body, 5], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 15,39,0: context range 15 [document.body, 4, document.body, 5], argument range same as first range, how 0 
+PASS 15,39,1: context range 15 [document.body, 4, document.body, 5], argument range same as first range, how 1 
+PASS 15,39,2: context range 15 [document.body, 4, document.body, 5], argument range same as first range, how 2 
+PASS 15,39,3: context range 15 [document.body, 4, document.body, 5], argument range same as first range, how 3 
+PASS 16,0,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 0 
+PASS 16,0,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 1 
+PASS 16,0,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 2 
+PASS 16,0,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 3 
+PASS 16,0,4: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -1 
+PASS 16,0,5: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 4 
+PASS 16,0,6: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 5 
+PASS 16,0,7: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how NaN 
+PASS 16,0,8: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -0 
+PASS 16,0,9: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how Infinity 
+PASS 16,0,10: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -Infinity 
+PASS 16,0,11: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 65535 
+PASS 16,0,12: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 65536 
+PASS 16,0,13: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 65537 
+PASS 16,0,14: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 65538 
+PASS 16,0,15: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 65539 
+PASS 16,0,16: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 65540 
+PASS 16,0,17: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -65537 
+PASS 16,0,18: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -65536 
+PASS 16,0,19: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -65535 
+PASS 16,0,20: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -65534 
+PASS 16,0,21: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -65533 
+PASS 16,0,22: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -65532 
+PASS 16,0,23: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 4294967295 
+PASS 16,0,24: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 4294967296 
+PASS 16,0,25: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 4294967297 
+PASS 16,0,26: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 4294967298 
+PASS 16,0,27: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 4294967299 
+PASS 16,0,28: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 4294967300 
+PASS 16,0,29: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -0.5 
+PASS 16,0,30: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 0.5 
+PASS 16,0,31: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 1.5 
+PASS 16,0,32: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 2.5 
+PASS 16,0,33: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 3.5 
+PASS 16,0,34: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 4.5 
+PASS 16,0,35: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -1.5 
+PASS 16,0,36: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -0.5 
+PASS 16,0,37: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 0.5 
+PASS 16,0,38: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 1.5 
+PASS 16,0,39: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 2.5 
+PASS 16,0,40: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how 3.5 
+PASS 16,0,41: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -73.5 
+PASS 16,0,42: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -72.5 
+PASS 16,0,43: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -71.5 
+PASS 16,0,44: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -70.5 
+PASS 16,0,45: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -69.5 
+PASS 16,0,46: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how -68.5 
+PASS 16,0,47: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;0&quot; 
+PASS 16,0,48: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;1&quot; 
+PASS 16,0,49: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;2&quot; 
+PASS 16,0,50: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;3&quot; 
+PASS 16,0,51: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;-1&quot; 
+PASS 16,0,52: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;4&quot; 
+PASS 16,0,53: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;5&quot; 
+PASS 16,0,54: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;NaN&quot; 
+PASS 16,0,55: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;0&quot; 
+PASS 16,0,56: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;Infinity&quot; 
+PASS 16,0,57: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;-Infinity&quot; 
+PASS 16,0,58: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;65535&quot; 
+PASS 16,0,59: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;65536&quot; 
+PASS 16,0,60: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;65537&quot; 
+PASS 16,0,61: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;65538&quot; 
+PASS 16,0,62: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;65539&quot; 
+PASS 16,0,63: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;65540&quot; 
+PASS 16,0,64: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;-65537&quot; 
+PASS 16,0,65: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;-65536&quot; 
+PASS 16,0,66: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;-65535&quot; 
+PASS 16,0,67: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;-65534&quot; 
+PASS 16,0,68: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;-65533&quot; 
+PASS 16,0,69: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;-65532&quot; 
+PASS 16,0,70: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;4294967295&quot; 
+PASS 16,0,71: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;4294967296&quot; 
+PASS 16,0,72: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;4294967297&quot; 
+PASS 16,0,73: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;4294967298&quot; 
+PASS 16,0,74: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;4294967299&quot; 
+PASS 16,0,75: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;4294967300&quot; 
+PASS 16,0,76: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;-0.5&quot; 
+PASS 16,0,77: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;0.5&quot; 
+PASS 16,0,78: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;1.5&quot; 
+PASS 16,0,79: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;2.5&quot; 
+PASS 16,0,80: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;3.5&quot; 
+PASS 16,0,81: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;4.5&quot; 
+PASS 16,0,82: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;-1.5&quot; 
+PASS 16,0,83: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;-0.5&quot; 
+PASS 16,0,84: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;0.5&quot; 
+PASS 16,0,85: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;1.5&quot; 
+PASS 16,0,86: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;2.5&quot; 
+PASS 16,0,87: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;3.5&quot; 
+PASS 16,0,88: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;-73.5&quot; 
+PASS 16,0,89: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;-72.5&quot; 
+PASS 16,0,90: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;-71.5&quot; 
+PASS 16,0,91: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;-70.5&quot; 
+PASS 16,0,92: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;-69.5&quot; 
+PASS 16,0,93: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;-68.5&quot; 
+PASS 16,0,94: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;6.5536e4&quot; 
+PASS 16,0,95: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how null 
+PASS 16,0,96: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how undefined 
+PASS 16,0,97: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how true 
+PASS 16,0,98: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how false 
+PASS 16,0,99: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;&quot; 
+PASS 16,0,100: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 0 [detached], how &quot;quasit&quot; 
+PASS 16,1,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 16,1,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 16,1,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 16,1,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 16,2,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 16,2,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 16,2,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 16,2,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 16,3,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 16,3,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 16,3,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 16,3,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 16,3,4: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -1 
+PASS 16,3,5: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4 
+PASS 16,3,6: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 5 
+PASS 16,3,7: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how NaN 
+PASS 16,3,8: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -0 
+PASS 16,3,9: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how Infinity 
+PASS 16,3,10: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -Infinity 
+PASS 16,3,11: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65535 
+PASS 16,3,12: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65536 
+PASS 16,3,13: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65537 
+PASS 16,3,14: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65538 
+PASS 16,3,15: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65539 
+PASS 16,3,16: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65540 
+PASS 16,3,17: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65537 
+PASS 16,3,18: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65536 
+PASS 16,3,19: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65535 
+PASS 16,3,20: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65534 
+PASS 16,3,21: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65533 
+PASS 16,3,22: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65532 
+PASS 16,3,23: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967295 
+PASS 16,3,24: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967296 
+PASS 16,3,25: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967297 
+PASS 16,3,26: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967298 
+PASS 16,3,27: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967299 
+PASS 16,3,28: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967300 
+PASS 16,3,29: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -0.5 
+PASS 16,3,30: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0.5 
+PASS 16,3,31: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1.5 
+PASS 16,3,32: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2.5 
+PASS 16,3,33: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3.5 
+PASS 16,3,34: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4.5 
+PASS 16,3,35: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -1.5 
+PASS 16,3,36: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -0.5 
+PASS 16,3,37: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0.5 
+PASS 16,3,38: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1.5 
+PASS 16,3,39: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2.5 
+PASS 16,3,40: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3.5 
+PASS 16,3,41: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -73.5 
+PASS 16,3,42: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -72.5 
+PASS 16,3,43: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -71.5 
+PASS 16,3,44: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -70.5 
+PASS 16,3,45: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -69.5 
+PASS 16,3,46: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -68.5 
+PASS 16,3,47: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;0&quot; 
+PASS 16,3,48: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;1&quot; 
+PASS 16,3,49: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;2&quot; 
+PASS 16,3,50: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;3&quot; 
+PASS 16,3,51: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-1&quot; 
+PASS 16,3,52: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4&quot; 
+PASS 16,3,53: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;5&quot; 
+PASS 16,3,54: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;NaN&quot; 
+PASS 16,3,55: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;0&quot; 
+PASS 16,3,56: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;Infinity&quot; 
+PASS 16,3,57: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-Infinity&quot; 
+PASS 16,3,58: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65535&quot; 
+PASS 16,3,59: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65536&quot; 
+PASS 16,3,60: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65537&quot; 
+PASS 16,3,61: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65538&quot; 
+PASS 16,3,62: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65539&quot; 
+PASS 16,3,63: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65540&quot; 
+PASS 16,3,64: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65537&quot; 
+PASS 16,3,65: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65536&quot; 
+PASS 16,3,66: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65535&quot; 
+PASS 16,3,67: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65534&quot; 
+PASS 16,3,68: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65533&quot; 
+PASS 16,3,69: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65532&quot; 
+PASS 16,3,70: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967295&quot; 
+PASS 16,3,71: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967296&quot; 
+PASS 16,3,72: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967297&quot; 
+PASS 16,3,73: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967298&quot; 
+PASS 16,3,74: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967299&quot; 
+PASS 16,3,75: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967300&quot; 
+PASS 16,3,76: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-0.5&quot; 
+PASS 16,3,77: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;0.5&quot; 
+PASS 16,3,78: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;1.5&quot; 
+PASS 16,3,79: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;2.5&quot; 
+PASS 16,3,80: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;3.5&quot; 
+PASS 16,3,81: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4.5&quot; 
+PASS 16,3,82: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-1.5&quot; 
+PASS 16,3,83: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-0.5&quot; 
+PASS 16,3,84: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;0.5&quot; 
+PASS 16,3,85: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;1.5&quot; 
+PASS 16,3,86: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;2.5&quot; 
+PASS 16,3,87: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;3.5&quot; 
+PASS 16,3,88: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-73.5&quot; 
+PASS 16,3,89: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-72.5&quot; 
+PASS 16,3,90: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-71.5&quot; 
+PASS 16,3,91: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-70.5&quot; 
+PASS 16,3,92: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-69.5&quot; 
+PASS 16,3,93: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-68.5&quot; 
+PASS 16,3,94: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;6.5536e4&quot; 
+PASS 16,3,95: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how null 
+PASS 16,3,96: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how undefined 
+PASS 16,3,97: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how true 
+PASS 16,3,98: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how false 
+PASS 16,3,99: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;&quot; 
+PASS 16,3,100: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;quasit&quot; 
+PASS 16,4,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 16,4,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 16,4,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 16,4,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 16,5,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 16,5,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 16,5,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 16,5,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 16,6,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 16,6,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 16,6,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 16,6,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 16,7,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 16,7,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 16,7,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 16,7,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 16,8,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 16,8,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 16,8,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 16,8,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 16,9,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 16,9,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 16,9,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 16,9,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 16,10,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 16,10,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 16,10,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 16,10,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 16,11,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 16,11,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 16,11,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 16,11,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 16,12,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 16,12,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 16,12,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 16,12,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 16,13,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 16,13,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 16,13,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 16,13,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 16,14,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 16,14,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 16,14,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 16,14,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 16,15,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 16,15,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 16,15,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 16,15,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 16,16,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 16,16,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 16,16,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 16,16,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 16,16,4: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -1 
+PASS 16,16,5: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4 
+PASS 16,16,6: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 5 
+PASS 16,16,7: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how NaN 
+PASS 16,16,8: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -0 
+PASS 16,16,9: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how Infinity 
+PASS 16,16,10: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -Infinity 
+PASS 16,16,11: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65535 
+PASS 16,16,12: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65536 
+PASS 16,16,13: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65537 
+PASS 16,16,14: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65538 
+PASS 16,16,15: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65539 
+PASS 16,16,16: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65540 
+PASS 16,16,17: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65537 
+PASS 16,16,18: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65536 
+PASS 16,16,19: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65535 
+PASS 16,16,20: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65534 
+PASS 16,16,21: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65533 
+PASS 16,16,22: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65532 
+PASS 16,16,23: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967295 
+PASS 16,16,24: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967296 
+PASS 16,16,25: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967297 
+PASS 16,16,26: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967298 
+PASS 16,16,27: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967299 
+PASS 16,16,28: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967300 
+PASS 16,16,29: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -0.5 
+PASS 16,16,30: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0.5 
+PASS 16,16,31: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1.5 
+PASS 16,16,32: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2.5 
+PASS 16,16,33: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3.5 
+PASS 16,16,34: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4.5 
+PASS 16,16,35: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -1.5 
+PASS 16,16,36: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -0.5 
+PASS 16,16,37: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0.5 
+PASS 16,16,38: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1.5 
+PASS 16,16,39: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2.5 
+PASS 16,16,40: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3.5 
+PASS 16,16,41: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -73.5 
+PASS 16,16,42: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -72.5 
+PASS 16,16,43: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -71.5 
+PASS 16,16,44: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -70.5 
+PASS 16,16,45: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -69.5 
+PASS 16,16,46: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -68.5 
+PASS 16,16,47: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;0&quot; 
+PASS 16,16,48: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;1&quot; 
+PASS 16,16,49: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;2&quot; 
+PASS 16,16,50: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;3&quot; 
+PASS 16,16,51: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-1&quot; 
+PASS 16,16,52: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4&quot; 
+PASS 16,16,53: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;5&quot; 
+PASS 16,16,54: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;NaN&quot; 
+PASS 16,16,55: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;0&quot; 
+PASS 16,16,56: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;Infinity&quot; 
+PASS 16,16,57: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-Infinity&quot; 
+PASS 16,16,58: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65535&quot; 
+PASS 16,16,59: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65536&quot; 
+PASS 16,16,60: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65537&quot; 
+PASS 16,16,61: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65538&quot; 
+PASS 16,16,62: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65539&quot; 
+PASS 16,16,63: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65540&quot; 
+PASS 16,16,64: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65537&quot; 
+PASS 16,16,65: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65536&quot; 
+PASS 16,16,66: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65535&quot; 
+PASS 16,16,67: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65534&quot; 
+PASS 16,16,68: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65533&quot; 
+PASS 16,16,69: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65532&quot; 
+PASS 16,16,70: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967295&quot; 
+PASS 16,16,71: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967296&quot; 
+PASS 16,16,72: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967297&quot; 
+PASS 16,16,73: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967298&quot; 
+PASS 16,16,74: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967299&quot; 
+PASS 16,16,75: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967300&quot; 
+PASS 16,16,76: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-0.5&quot; 
+PASS 16,16,77: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;0.5&quot; 
+PASS 16,16,78: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;1.5&quot; 
+PASS 16,16,79: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;2.5&quot; 
+PASS 16,16,80: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;3.5&quot; 
+PASS 16,16,81: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4.5&quot; 
+PASS 16,16,82: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-1.5&quot; 
+PASS 16,16,83: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-0.5&quot; 
+PASS 16,16,84: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;0.5&quot; 
+PASS 16,16,85: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;1.5&quot; 
+PASS 16,16,86: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;2.5&quot; 
+PASS 16,16,87: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;3.5&quot; 
+PASS 16,16,88: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-73.5&quot; 
+PASS 16,16,89: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-72.5&quot; 
+PASS 16,16,90: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-71.5&quot; 
+PASS 16,16,91: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-70.5&quot; 
+PASS 16,16,92: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-69.5&quot; 
+PASS 16,16,93: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-68.5&quot; 
+PASS 16,16,94: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;6.5536e4&quot; 
+PASS 16,16,95: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how null 
+PASS 16,16,96: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how undefined 
+PASS 16,16,97: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how true 
+PASS 16,16,98: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how false 
+PASS 16,16,99: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;&quot; 
+PASS 16,16,100: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;quasit&quot; 
+PASS 16,17,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 16,17,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 16,17,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 16,17,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 16,18,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 16,18,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 16,18,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 16,18,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 16,19,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 16,19,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 16,19,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 16,19,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 16,20,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 16,20,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 16,20,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 16,20,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 16,21,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 16,21,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 16,21,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 16,21,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 16,21,4: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -1 
+PASS 16,21,5: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4 
+PASS 16,21,6: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 5 
+PASS 16,21,7: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how NaN 
+PASS 16,21,8: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -0 
+PASS 16,21,9: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how Infinity 
+PASS 16,21,10: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -Infinity 
+PASS 16,21,11: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65535 
+PASS 16,21,12: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65536 
+PASS 16,21,13: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65537 
+PASS 16,21,14: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65538 
+PASS 16,21,15: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65539 
+PASS 16,21,16: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65540 
+PASS 16,21,17: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65537 
+PASS 16,21,18: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65536 
+PASS 16,21,19: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65535 
+PASS 16,21,20: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65534 
+PASS 16,21,21: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65533 
+PASS 16,21,22: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65532 
+PASS 16,21,23: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967295 
+PASS 16,21,24: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967296 
+PASS 16,21,25: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967297 
+PASS 16,21,26: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967298 
+PASS 16,21,27: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967299 
+PASS 16,21,28: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967300 
+PASS 16,21,29: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -0.5 
+PASS 16,21,30: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0.5 
+PASS 16,21,31: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1.5 
+PASS 16,21,32: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2.5 
+PASS 16,21,33: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3.5 
+PASS 16,21,34: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4.5 
+PASS 16,21,35: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -1.5 
+PASS 16,21,36: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -0.5 
+PASS 16,21,37: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0.5 
+PASS 16,21,38: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1.5 
+PASS 16,21,39: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2.5 
+PASS 16,21,40: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3.5 
+PASS 16,21,41: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -73.5 
+PASS 16,21,42: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -72.5 
+PASS 16,21,43: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -71.5 
+PASS 16,21,44: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -70.5 
+PASS 16,21,45: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -69.5 
+PASS 16,21,46: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -68.5 
+PASS 16,21,47: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;0&quot; 
+PASS 16,21,48: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;1&quot; 
+PASS 16,21,49: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;2&quot; 
+PASS 16,21,50: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;3&quot; 
+PASS 16,21,51: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-1&quot; 
+PASS 16,21,52: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4&quot; 
+PASS 16,21,53: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;5&quot; 
+PASS 16,21,54: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;NaN&quot; 
+PASS 16,21,55: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;0&quot; 
+PASS 16,21,56: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;Infinity&quot; 
+PASS 16,21,57: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-Infinity&quot; 
+PASS 16,21,58: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65535&quot; 
+PASS 16,21,59: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65536&quot; 
+PASS 16,21,60: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65537&quot; 
+PASS 16,21,61: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65538&quot; 
+PASS 16,21,62: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65539&quot; 
+PASS 16,21,63: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65540&quot; 
+PASS 16,21,64: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65537&quot; 
+PASS 16,21,65: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65536&quot; 
+PASS 16,21,66: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65535&quot; 
+PASS 16,21,67: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65534&quot; 
+PASS 16,21,68: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65533&quot; 
+PASS 16,21,69: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65532&quot; 
+PASS 16,21,70: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967295&quot; 
+PASS 16,21,71: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967296&quot; 
+PASS 16,21,72: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967297&quot; 
+PASS 16,21,73: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967298&quot; 
+PASS 16,21,74: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967299&quot; 
+PASS 16,21,75: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967300&quot; 
+PASS 16,21,76: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-0.5&quot; 
+PASS 16,21,77: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;0.5&quot; 
+PASS 16,21,78: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;1.5&quot; 
+PASS 16,21,79: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;2.5&quot; 
+PASS 16,21,80: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;3.5&quot; 
+PASS 16,21,81: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4.5&quot; 
+PASS 16,21,82: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-1.5&quot; 
+PASS 16,21,83: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-0.5&quot; 
+PASS 16,21,84: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;0.5&quot; 
+PASS 16,21,85: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;1.5&quot; 
+PASS 16,21,86: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;2.5&quot; 
+PASS 16,21,87: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;3.5&quot; 
+PASS 16,21,88: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-73.5&quot; 
+PASS 16,21,89: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-72.5&quot; 
+PASS 16,21,90: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-71.5&quot; 
+PASS 16,21,91: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-70.5&quot; 
+PASS 16,21,92: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-69.5&quot; 
+PASS 16,21,93: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-68.5&quot; 
+PASS 16,21,94: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;6.5536e4&quot; 
+PASS 16,21,95: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how null 
+PASS 16,21,96: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how undefined 
+PASS 16,21,97: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how true 
+PASS 16,21,98: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how false 
+PASS 16,21,99: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;&quot; 
+PASS 16,21,100: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;quasit&quot; 
+PASS 16,22,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 16,22,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 16,22,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 16,22,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 16,23,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 16,23,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 16,23,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 16,23,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 16,24,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 24 [document, 0, document, 1], how 0 
+PASS 16,24,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 24 [document, 0, document, 1], how 1 
+PASS 16,24,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 24 [document, 0, document, 1], how 2 
+PASS 16,24,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 24 [document, 0, document, 1], how 3 
+PASS 16,25,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 25 [document, 0, document, 2], how 0 
+PASS 16,25,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 25 [document, 0, document, 2], how 1 
+PASS 16,25,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 25 [document, 0, document, 2], how 2 
+PASS 16,25,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 25 [document, 0, document, 2], how 3 
+PASS 16,26,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 16,26,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 16,26,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 16,26,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 16,27,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 16,27,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 16,27,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 16,27,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 16,27,4: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how -1 
+PASS 16,27,5: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 4 
+PASS 16,27,6: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 5 
+PASS 16,27,7: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how NaN 
+PASS 16,27,8: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how -0 
+PASS 16,27,9: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how Infinity 
+PASS 16,27,10: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how -Infinity 
+PASS 16,27,11: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 65535 
+PASS 16,27,12: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 65536 
+PASS 16,27,13: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 65537 
+PASS 16,27,14: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 65538 
+PASS 16,27,15: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 65539 
+PASS 16,27,16: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 65540 
+PASS 16,27,17: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how -65537 
+PASS 16,27,18: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how -65536 
+PASS 16,27,19: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how -65535 
+PASS 16,27,20: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how -65534 
+PASS 16,27,21: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how -65533 
+PASS 16,27,22: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how -65532 
+PASS 16,27,23: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 4294967295 
+PASS 16,27,24: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 4294967296 
+PASS 16,27,25: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 4294967297 
+PASS 16,27,26: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 4294967298 
+PASS 16,27,27: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 4294967299 
+PASS 16,27,28: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 4294967300 
+PASS 16,27,29: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how -0.5 
+PASS 16,27,30: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 0.5 
+PASS 16,27,31: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 1.5 
+PASS 16,27,32: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 2.5 
+PASS 16,27,33: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 3.5 
+PASS 16,27,34: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 4.5 
+PASS 16,27,35: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how -1.5 
+PASS 16,27,36: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how -0.5 
+PASS 16,27,37: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 0.5 
+PASS 16,27,38: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 1.5 
+PASS 16,27,39: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 2.5 
+PASS 16,27,40: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how 3.5 
+PASS 16,27,41: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how -73.5 
+PASS 16,27,42: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how -72.5 
+PASS 16,27,43: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how -71.5 
+PASS 16,27,44: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how -70.5 
+PASS 16,27,45: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how -69.5 
+PASS 16,27,46: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how -68.5 
+PASS 16,27,47: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;0&quot; 
+PASS 16,27,48: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;1&quot; 
+PASS 16,27,49: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;2&quot; 
+PASS 16,27,50: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;3&quot; 
+PASS 16,27,51: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-1&quot; 
+PASS 16,27,52: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;4&quot; 
+PASS 16,27,53: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;5&quot; 
+PASS 16,27,54: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;NaN&quot; 
+PASS 16,27,55: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;0&quot; 
+PASS 16,27,56: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;Infinity&quot; 
+PASS 16,27,57: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-Infinity&quot; 
+PASS 16,27,58: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;65535&quot; 
+PASS 16,27,59: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;65536&quot; 
+PASS 16,27,60: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;65537&quot; 
+PASS 16,27,61: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;65538&quot; 
+PASS 16,27,62: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;65539&quot; 
+PASS 16,27,63: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;65540&quot; 
+PASS 16,27,64: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-65537&quot; 
+PASS 16,27,65: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-65536&quot; 
+PASS 16,27,66: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-65535&quot; 
+PASS 16,27,67: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-65534&quot; 
+PASS 16,27,68: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-65533&quot; 
+PASS 16,27,69: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-65532&quot; 
+PASS 16,27,70: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967295&quot; 
+PASS 16,27,71: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967296&quot; 
+PASS 16,27,72: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967297&quot; 
+PASS 16,27,73: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967298&quot; 
+PASS 16,27,74: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967299&quot; 
+PASS 16,27,75: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967300&quot; 
+PASS 16,27,76: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-0.5&quot; 
+PASS 16,27,77: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;0.5&quot; 
+PASS 16,27,78: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;1.5&quot; 
+PASS 16,27,79: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;2.5&quot; 
+PASS 16,27,80: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;3.5&quot; 
+PASS 16,27,81: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;4.5&quot; 
+PASS 16,27,82: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-1.5&quot; 
+PASS 16,27,83: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-0.5&quot; 
+PASS 16,27,84: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;0.5&quot; 
+PASS 16,27,85: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;1.5&quot; 
+PASS 16,27,86: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;2.5&quot; 
+PASS 16,27,87: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;3.5&quot; 
+PASS 16,27,88: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-73.5&quot; 
+PASS 16,27,89: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-72.5&quot; 
+PASS 16,27,90: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-71.5&quot; 
+PASS 16,27,91: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-70.5&quot; 
+PASS 16,27,92: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-69.5&quot; 
+PASS 16,27,93: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-68.5&quot; 
+PASS 16,27,94: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;6.5536e4&quot; 
+PASS 16,27,95: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how null 
+PASS 16,27,96: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how undefined 
+PASS 16,27,97: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how true 
+PASS 16,27,98: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how false 
+PASS 16,27,99: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;&quot; 
+PASS 16,27,100: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 27 [testDiv, 0, comment, 5], how &quot;quasit&quot; 
+PASS 16,28,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 16,28,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 16,28,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 16,28,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 16,29,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 16,29,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 16,29,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 16,29,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 16,30,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 16,30,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 16,30,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 16,30,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 16,31,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 16,31,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 16,31,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 16,31,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 16,32,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 16,32,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 16,32,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 16,32,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 16,33,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 16,33,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 16,33,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 16,33,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 16,34,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 16,34,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 16,34,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 16,34,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 16,35,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 16,35,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 16,35,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 16,35,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 16,36,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 16,36,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 16,36,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 16,36,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 16,37,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 16,37,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 16,37,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 16,37,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 16,38,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 16,38,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 16,38,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 16,38,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 16,39,0: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range same as first range, how 0 
+PASS 16,39,1: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range same as first range, how 1 
+PASS 16,39,2: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range same as first range, how 2 
+PASS 16,39,3: context range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], argument range same as first range, how 3 
+PASS 17,0,0: context range 17 [paras[0], 0, paras[0], 1], argument range 0 [detached], how 0 
+PASS 17,0,1: context range 17 [paras[0], 0, paras[0], 1], argument range 0 [detached], how 1 
+PASS 17,0,2: context range 17 [paras[0], 0, paras[0], 1], argument range 0 [detached], how 2 
+PASS 17,0,3: context range 17 [paras[0], 0, paras[0], 1], argument range 0 [detached], how 3 
+PASS 17,1,0: context range 17 [paras[0], 0, paras[0], 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 17,1,1: context range 17 [paras[0], 0, paras[0], 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 17,1,2: context range 17 [paras[0], 0, paras[0], 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 17,1,3: context range 17 [paras[0], 0, paras[0], 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 17,2,0: context range 17 [paras[0], 0, paras[0], 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 17,2,1: context range 17 [paras[0], 0, paras[0], 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 17,2,2: context range 17 [paras[0], 0, paras[0], 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 17,2,3: context range 17 [paras[0], 0, paras[0], 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 17,3,0: context range 17 [paras[0], 0, paras[0], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 17,3,1: context range 17 [paras[0], 0, paras[0], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 17,3,2: context range 17 [paras[0], 0, paras[0], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 17,3,3: context range 17 [paras[0], 0, paras[0], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 17,4,0: context range 17 [paras[0], 0, paras[0], 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 17,4,1: context range 17 [paras[0], 0, paras[0], 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 17,4,2: context range 17 [paras[0], 0, paras[0], 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 17,4,3: context range 17 [paras[0], 0, paras[0], 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 17,5,0: context range 17 [paras[0], 0, paras[0], 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 17,5,1: context range 17 [paras[0], 0, paras[0], 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 17,5,2: context range 17 [paras[0], 0, paras[0], 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 17,5,3: context range 17 [paras[0], 0, paras[0], 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 17,6,0: context range 17 [paras[0], 0, paras[0], 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 17,6,1: context range 17 [paras[0], 0, paras[0], 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 17,6,2: context range 17 [paras[0], 0, paras[0], 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 17,6,3: context range 17 [paras[0], 0, paras[0], 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 17,7,0: context range 17 [paras[0], 0, paras[0], 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 17,7,1: context range 17 [paras[0], 0, paras[0], 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 17,7,2: context range 17 [paras[0], 0, paras[0], 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 17,7,3: context range 17 [paras[0], 0, paras[0], 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 17,8,0: context range 17 [paras[0], 0, paras[0], 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 17,8,1: context range 17 [paras[0], 0, paras[0], 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 17,8,2: context range 17 [paras[0], 0, paras[0], 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 17,8,3: context range 17 [paras[0], 0, paras[0], 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 17,9,0: context range 17 [paras[0], 0, paras[0], 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 17,9,1: context range 17 [paras[0], 0, paras[0], 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 17,9,2: context range 17 [paras[0], 0, paras[0], 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 17,9,3: context range 17 [paras[0], 0, paras[0], 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 17,10,0: context range 17 [paras[0], 0, paras[0], 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 17,10,1: context range 17 [paras[0], 0, paras[0], 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 17,10,2: context range 17 [paras[0], 0, paras[0], 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 17,10,3: context range 17 [paras[0], 0, paras[0], 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 17,11,0: context range 17 [paras[0], 0, paras[0], 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 17,11,1: context range 17 [paras[0], 0, paras[0], 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 17,11,2: context range 17 [paras[0], 0, paras[0], 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 17,11,3: context range 17 [paras[0], 0, paras[0], 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 17,12,0: context range 17 [paras[0], 0, paras[0], 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 17,12,1: context range 17 [paras[0], 0, paras[0], 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 17,12,2: context range 17 [paras[0], 0, paras[0], 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 17,12,3: context range 17 [paras[0], 0, paras[0], 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 17,13,0: context range 17 [paras[0], 0, paras[0], 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 17,13,1: context range 17 [paras[0], 0, paras[0], 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 17,13,2: context range 17 [paras[0], 0, paras[0], 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 17,13,3: context range 17 [paras[0], 0, paras[0], 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 17,14,0: context range 17 [paras[0], 0, paras[0], 1], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 17,14,1: context range 17 [paras[0], 0, paras[0], 1], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 17,14,2: context range 17 [paras[0], 0, paras[0], 1], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 17,14,3: context range 17 [paras[0], 0, paras[0], 1], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 17,15,0: context range 17 [paras[0], 0, paras[0], 1], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 17,15,1: context range 17 [paras[0], 0, paras[0], 1], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 17,15,2: context range 17 [paras[0], 0, paras[0], 1], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 17,15,3: context range 17 [paras[0], 0, paras[0], 1], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 17,16,0: context range 17 [paras[0], 0, paras[0], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 17,16,1: context range 17 [paras[0], 0, paras[0], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 17,16,2: context range 17 [paras[0], 0, paras[0], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 17,16,3: context range 17 [paras[0], 0, paras[0], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 17,17,0: context range 17 [paras[0], 0, paras[0], 1], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 17,17,1: context range 17 [paras[0], 0, paras[0], 1], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 17,17,2: context range 17 [paras[0], 0, paras[0], 1], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 17,17,3: context range 17 [paras[0], 0, paras[0], 1], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 17,18,0: context range 17 [paras[0], 0, paras[0], 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 17,18,1: context range 17 [paras[0], 0, paras[0], 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 17,18,2: context range 17 [paras[0], 0, paras[0], 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 17,18,3: context range 17 [paras[0], 0, paras[0], 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 17,19,0: context range 17 [paras[0], 0, paras[0], 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 17,19,1: context range 17 [paras[0], 0, paras[0], 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 17,19,2: context range 17 [paras[0], 0, paras[0], 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 17,19,3: context range 17 [paras[0], 0, paras[0], 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 17,20,0: context range 17 [paras[0], 0, paras[0], 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 17,20,1: context range 17 [paras[0], 0, paras[0], 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 17,20,2: context range 17 [paras[0], 0, paras[0], 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 17,20,3: context range 17 [paras[0], 0, paras[0], 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 17,21,0: context range 17 [paras[0], 0, paras[0], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 17,21,1: context range 17 [paras[0], 0, paras[0], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 17,21,2: context range 17 [paras[0], 0, paras[0], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 17,21,3: context range 17 [paras[0], 0, paras[0], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 17,22,0: context range 17 [paras[0], 0, paras[0], 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 17,22,1: context range 17 [paras[0], 0, paras[0], 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 17,22,2: context range 17 [paras[0], 0, paras[0], 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 17,22,3: context range 17 [paras[0], 0, paras[0], 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 17,23,0: context range 17 [paras[0], 0, paras[0], 1], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 17,23,1: context range 17 [paras[0], 0, paras[0], 1], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 17,23,2: context range 17 [paras[0], 0, paras[0], 1], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 17,23,3: context range 17 [paras[0], 0, paras[0], 1], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 17,24,0: context range 17 [paras[0], 0, paras[0], 1], argument range 24 [document, 0, document, 1], how 0 
+PASS 17,24,1: context range 17 [paras[0], 0, paras[0], 1], argument range 24 [document, 0, document, 1], how 1 
+PASS 17,24,2: context range 17 [paras[0], 0, paras[0], 1], argument range 24 [document, 0, document, 1], how 2 
+PASS 17,24,3: context range 17 [paras[0], 0, paras[0], 1], argument range 24 [document, 0, document, 1], how 3 
+PASS 17,25,0: context range 17 [paras[0], 0, paras[0], 1], argument range 25 [document, 0, document, 2], how 0 
+PASS 17,25,1: context range 17 [paras[0], 0, paras[0], 1], argument range 25 [document, 0, document, 2], how 1 
+PASS 17,25,2: context range 17 [paras[0], 0, paras[0], 1], argument range 25 [document, 0, document, 2], how 2 
+PASS 17,25,3: context range 17 [paras[0], 0, paras[0], 1], argument range 25 [document, 0, document, 2], how 3 
+PASS 17,26,0: context range 17 [paras[0], 0, paras[0], 1], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 17,26,1: context range 17 [paras[0], 0, paras[0], 1], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 17,26,2: context range 17 [paras[0], 0, paras[0], 1], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 17,26,3: context range 17 [paras[0], 0, paras[0], 1], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 17,27,0: context range 17 [paras[0], 0, paras[0], 1], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 17,27,1: context range 17 [paras[0], 0, paras[0], 1], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 17,27,2: context range 17 [paras[0], 0, paras[0], 1], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 17,27,3: context range 17 [paras[0], 0, paras[0], 1], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 17,28,0: context range 17 [paras[0], 0, paras[0], 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 17,28,1: context range 17 [paras[0], 0, paras[0], 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 17,28,2: context range 17 [paras[0], 0, paras[0], 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 17,28,3: context range 17 [paras[0], 0, paras[0], 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 17,29,0: context range 17 [paras[0], 0, paras[0], 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 17,29,1: context range 17 [paras[0], 0, paras[0], 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 17,29,2: context range 17 [paras[0], 0, paras[0], 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 17,29,3: context range 17 [paras[0], 0, paras[0], 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 17,30,0: context range 17 [paras[0], 0, paras[0], 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 17,30,1: context range 17 [paras[0], 0, paras[0], 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 17,30,2: context range 17 [paras[0], 0, paras[0], 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 17,30,3: context range 17 [paras[0], 0, paras[0], 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 17,31,0: context range 17 [paras[0], 0, paras[0], 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 17,31,1: context range 17 [paras[0], 0, paras[0], 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 17,31,2: context range 17 [paras[0], 0, paras[0], 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 17,31,3: context range 17 [paras[0], 0, paras[0], 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 17,32,0: context range 17 [paras[0], 0, paras[0], 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 17,32,1: context range 17 [paras[0], 0, paras[0], 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 17,32,2: context range 17 [paras[0], 0, paras[0], 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 17,32,3: context range 17 [paras[0], 0, paras[0], 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 17,33,0: context range 17 [paras[0], 0, paras[0], 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 17,33,1: context range 17 [paras[0], 0, paras[0], 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 17,33,2: context range 17 [paras[0], 0, paras[0], 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 17,33,3: context range 17 [paras[0], 0, paras[0], 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 17,34,0: context range 17 [paras[0], 0, paras[0], 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 17,34,1: context range 17 [paras[0], 0, paras[0], 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 17,34,2: context range 17 [paras[0], 0, paras[0], 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 17,34,3: context range 17 [paras[0], 0, paras[0], 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 17,35,0: context range 17 [paras[0], 0, paras[0], 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 17,35,1: context range 17 [paras[0], 0, paras[0], 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 17,35,2: context range 17 [paras[0], 0, paras[0], 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 17,35,3: context range 17 [paras[0], 0, paras[0], 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 17,36,0: context range 17 [paras[0], 0, paras[0], 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 17,36,1: context range 17 [paras[0], 0, paras[0], 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 17,36,2: context range 17 [paras[0], 0, paras[0], 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 17,36,3: context range 17 [paras[0], 0, paras[0], 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 17,37,0: context range 17 [paras[0], 0, paras[0], 1], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 17,37,1: context range 17 [paras[0], 0, paras[0], 1], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 17,37,2: context range 17 [paras[0], 0, paras[0], 1], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 17,37,3: context range 17 [paras[0], 0, paras[0], 1], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 17,38,0: context range 17 [paras[0], 0, paras[0], 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 17,38,1: context range 17 [paras[0], 0, paras[0], 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 17,38,2: context range 17 [paras[0], 0, paras[0], 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 17,38,3: context range 17 [paras[0], 0, paras[0], 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 17,39,0: context range 17 [paras[0], 0, paras[0], 1], argument range same as first range, how 0 
+PASS 17,39,1: context range 17 [paras[0], 0, paras[0], 1], argument range same as first range, how 1 
+PASS 17,39,2: context range 17 [paras[0], 0, paras[0], 1], argument range same as first range, how 2 
+PASS 17,39,3: context range 17 [paras[0], 0, paras[0], 1], argument range same as first range, how 3 
+PASS 18,0,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 0 [detached], how 0 
+PASS 18,0,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 0 [detached], how 1 
+PASS 18,0,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 0 [detached], how 2 
+PASS 18,0,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 0 [detached], how 3 
+PASS 18,1,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 18,1,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 18,1,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 18,1,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 18,2,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 18,2,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 18,2,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 18,2,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 18,3,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 18,3,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 18,3,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 18,3,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 18,4,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 18,4,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 18,4,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 18,4,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 18,5,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 18,5,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 18,5,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 18,5,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 18,6,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 18,6,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 18,6,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 18,6,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 18,7,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 18,7,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 18,7,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 18,7,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 18,8,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 18,8,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 18,8,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 18,8,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 18,9,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 18,9,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 18,9,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 18,9,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 18,10,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 18,10,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 18,10,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 18,10,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 18,11,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 18,11,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 18,11,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 18,11,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 18,12,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 18,12,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 18,12,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 18,12,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 18,13,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 18,13,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 18,13,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 18,13,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 18,14,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 18,14,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 18,14,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 18,14,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 18,15,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 18,15,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 18,15,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 18,15,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 18,16,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 18,16,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 18,16,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 18,16,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 18,17,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 18,17,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 18,17,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 18,17,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 18,18,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 18,18,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 18,18,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 18,18,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 18,19,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 18,19,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 18,19,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 18,19,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 18,20,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 18,20,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 18,20,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 18,20,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 18,21,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 18,21,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 18,21,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 18,21,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 18,22,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 18,22,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 18,22,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 18,22,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 18,23,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 18,23,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 18,23,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 18,23,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 18,24,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 24 [document, 0, document, 1], how 0 
+PASS 18,24,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 24 [document, 0, document, 1], how 1 
+PASS 18,24,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 24 [document, 0, document, 1], how 2 
+PASS 18,24,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 24 [document, 0, document, 1], how 3 
+PASS 18,25,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 25 [document, 0, document, 2], how 0 
+PASS 18,25,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 25 [document, 0, document, 2], how 1 
+PASS 18,25,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 25 [document, 0, document, 2], how 2 
+PASS 18,25,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 25 [document, 0, document, 2], how 3 
+PASS 18,26,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 18,26,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 18,26,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 18,26,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 18,27,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 18,27,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 18,27,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 18,27,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 18,28,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 18,28,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 18,28,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 18,28,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 18,29,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 18,29,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 18,29,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 18,29,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 18,30,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 18,30,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 18,30,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 18,30,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 18,31,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 18,31,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 18,31,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 18,31,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 18,32,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 18,32,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 18,32,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 18,32,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 18,33,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 18,33,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 18,33,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 18,33,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 18,34,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 18,34,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 18,34,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 18,34,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 18,35,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 18,35,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 18,35,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 18,35,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 18,36,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 18,36,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 18,36,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 18,36,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 18,37,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 18,37,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 18,37,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 18,37,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 18,38,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 18,38,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 18,38,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 18,38,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 18,39,0: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range same as first range, how 0 
+PASS 18,39,1: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range same as first range, how 1 
+PASS 18,39,2: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range same as first range, how 2 
+PASS 18,39,3: context range 18 [detachedPara1, 0, detachedPara1, 1], argument range same as first range, how 3 
+PASS 19,0,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 0 [detached], how 0 
+PASS 19,0,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 0 [detached], how 1 
+PASS 19,0,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 0 [detached], how 2 
+PASS 19,0,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 0 [detached], how 3 
+PASS 19,1,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 19,1,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 19,1,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 19,1,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 19,2,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 19,2,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 19,2,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 19,2,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 19,3,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 19,3,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 19,3,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 19,3,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 19,4,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 19,4,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 19,4,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 19,4,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 19,5,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 19,5,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 19,5,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 19,5,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 19,6,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 19,6,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 19,6,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 19,6,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 19,7,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 19,7,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 19,7,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 19,7,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 19,8,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 19,8,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 19,8,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 19,8,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 19,9,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 19,9,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 19,9,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 19,9,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 19,10,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 19,10,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 19,10,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 19,10,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 19,11,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 19,11,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 19,11,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 19,11,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 19,12,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 19,12,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 19,12,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 19,12,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 19,13,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 19,13,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 19,13,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 19,13,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 19,14,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 19,14,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 19,14,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 19,14,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 19,15,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 19,15,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 19,15,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 19,15,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 19,16,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 19,16,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 19,16,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 19,16,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 19,17,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 19,17,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 19,17,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 19,17,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 19,18,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 19,18,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 19,18,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 19,18,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 19,19,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 19,19,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 19,19,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 19,19,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 19,20,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 19,20,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 19,20,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 19,20,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 19,21,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 19,21,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 19,21,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 19,21,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 19,22,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 19,22,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 19,22,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 19,22,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 19,23,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 19,23,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 19,23,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 19,23,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 19,24,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 24 [document, 0, document, 1], how 0 
+PASS 19,24,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 24 [document, 0, document, 1], how 1 
+PASS 19,24,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 24 [document, 0, document, 1], how 2 
+PASS 19,24,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 24 [document, 0, document, 1], how 3 
+PASS 19,25,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 25 [document, 0, document, 2], how 0 
+PASS 19,25,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 25 [document, 0, document, 2], how 1 
+PASS 19,25,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 25 [document, 0, document, 2], how 2 
+PASS 19,25,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 25 [document, 0, document, 2], how 3 
+PASS 19,26,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 19,26,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 19,26,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 19,26,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 19,27,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 19,27,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 19,27,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 19,27,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 19,28,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 19,28,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 19,28,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 19,28,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 19,29,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 19,29,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 19,29,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 19,29,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 19,30,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 19,30,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 19,30,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 19,30,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 19,31,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 19,31,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 19,31,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 19,31,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 19,32,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 19,32,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 19,32,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 19,32,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 19,33,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 19,33,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 19,33,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 19,33,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 19,34,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 19,34,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 19,34,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 19,34,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 19,35,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 19,35,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 19,35,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 19,35,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 19,36,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 19,36,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 19,36,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 19,36,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 19,37,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 19,37,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 19,37,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 19,37,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 19,38,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 19,38,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 19,38,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 19,38,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 19,39,0: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range same as first range, how 0 
+PASS 19,39,1: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range same as first range, how 1 
+PASS 19,39,2: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range same as first range, how 2 
+PASS 19,39,3: context range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], argument range same as first range, how 3 
+PASS 20,0,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 0 [detached], how 0 
+PASS 20,0,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 0 [detached], how 1 
+PASS 20,0,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 0 [detached], how 2 
+PASS 20,0,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 0 [detached], how 3 
+PASS 20,1,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 20,1,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 20,1,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 20,1,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 20,2,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 20,2,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 20,2,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 20,2,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 20,3,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 20,3,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 20,3,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 20,3,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 20,4,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 20,4,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 20,4,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 20,4,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 20,5,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 20,5,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 20,5,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 20,5,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 20,6,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 20,6,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 20,6,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 20,6,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 20,7,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 20,7,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 20,7,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 20,7,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 20,8,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 20,8,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 20,8,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 20,8,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 20,9,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 20,9,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 20,9,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 20,9,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 20,10,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 20,10,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 20,10,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 20,10,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 20,11,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 20,11,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 20,11,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 20,11,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 20,12,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 20,12,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 20,12,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 20,12,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 20,13,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 20,13,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 20,13,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 20,13,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 20,14,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 20,14,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 20,14,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 20,14,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 20,15,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 20,15,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 20,15,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 20,15,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 20,16,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 20,16,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 20,16,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 20,16,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 20,17,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 20,17,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 20,17,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 20,17,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 20,18,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 20,18,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 20,18,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 20,18,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 20,19,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 20,19,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 20,19,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 20,19,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 20,20,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 20,20,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 20,20,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 20,20,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 20,21,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 20,21,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 20,21,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 20,21,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 20,22,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 20,22,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 20,22,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 20,22,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 20,23,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 20,23,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 20,23,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 20,23,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 20,24,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 24 [document, 0, document, 1], how 0 
+PASS 20,24,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 24 [document, 0, document, 1], how 1 
+PASS 20,24,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 24 [document, 0, document, 1], how 2 
+PASS 20,24,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 24 [document, 0, document, 1], how 3 
+PASS 20,25,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 25 [document, 0, document, 2], how 0 
+PASS 20,25,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 25 [document, 0, document, 2], how 1 
+PASS 20,25,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 25 [document, 0, document, 2], how 2 
+PASS 20,25,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 25 [document, 0, document, 2], how 3 
+PASS 20,26,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 20,26,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 20,26,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 20,26,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 20,27,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 20,27,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 20,27,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 20,27,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 20,28,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 20,28,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 20,28,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 20,28,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 20,29,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 20,29,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 20,29,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 20,29,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 20,30,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 20,30,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 20,30,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 20,30,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 20,31,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 20,31,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 20,31,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 20,31,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 20,32,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 20,32,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 20,32,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 20,32,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 20,33,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 20,33,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 20,33,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 20,33,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 20,34,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 20,34,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 20,34,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 20,34,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 20,35,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 20,35,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 20,35,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 20,35,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 20,36,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 20,36,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 20,36,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 20,36,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 20,37,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 20,37,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 20,37,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 20,37,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 20,38,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 20,38,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 20,38,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 20,38,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 20,39,0: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range same as first range, how 0 
+PASS 20,39,1: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range same as first range, how 1 
+PASS 20,39,2: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range same as first range, how 2 
+PASS 20,39,3: context range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], argument range same as first range, how 3 
+PASS 21,0,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 0 
+PASS 21,0,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 1 
+PASS 21,0,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 2 
+PASS 21,0,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 3 
+PASS 21,0,4: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -1 
+PASS 21,0,5: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 4 
+PASS 21,0,6: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 5 
+PASS 21,0,7: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how NaN 
+PASS 21,0,8: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -0 
+PASS 21,0,9: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how Infinity 
+PASS 21,0,10: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -Infinity 
+PASS 21,0,11: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 65535 
+PASS 21,0,12: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 65536 
+PASS 21,0,13: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 65537 
+PASS 21,0,14: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 65538 
+PASS 21,0,15: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 65539 
+PASS 21,0,16: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 65540 
+PASS 21,0,17: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -65537 
+PASS 21,0,18: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -65536 
+PASS 21,0,19: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -65535 
+PASS 21,0,20: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -65534 
+PASS 21,0,21: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -65533 
+PASS 21,0,22: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -65532 
+PASS 21,0,23: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 4294967295 
+PASS 21,0,24: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 4294967296 
+PASS 21,0,25: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 4294967297 
+PASS 21,0,26: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 4294967298 
+PASS 21,0,27: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 4294967299 
+PASS 21,0,28: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 4294967300 
+PASS 21,0,29: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -0.5 
+PASS 21,0,30: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 0.5 
+PASS 21,0,31: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 1.5 
+PASS 21,0,32: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 2.5 
+PASS 21,0,33: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 3.5 
+PASS 21,0,34: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 4.5 
+PASS 21,0,35: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -1.5 
+PASS 21,0,36: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -0.5 
+PASS 21,0,37: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 0.5 
+PASS 21,0,38: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 1.5 
+PASS 21,0,39: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 2.5 
+PASS 21,0,40: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how 3.5 
+PASS 21,0,41: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -73.5 
+PASS 21,0,42: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -72.5 
+PASS 21,0,43: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -71.5 
+PASS 21,0,44: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -70.5 
+PASS 21,0,45: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -69.5 
+PASS 21,0,46: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how -68.5 
+PASS 21,0,47: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;0&quot; 
+PASS 21,0,48: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;1&quot; 
+PASS 21,0,49: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;2&quot; 
+PASS 21,0,50: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;3&quot; 
+PASS 21,0,51: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;-1&quot; 
+PASS 21,0,52: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;4&quot; 
+PASS 21,0,53: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;5&quot; 
+PASS 21,0,54: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;NaN&quot; 
+PASS 21,0,55: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;0&quot; 
+PASS 21,0,56: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;Infinity&quot; 
+PASS 21,0,57: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;-Infinity&quot; 
+PASS 21,0,58: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;65535&quot; 
+PASS 21,0,59: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;65536&quot; 
+PASS 21,0,60: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;65537&quot; 
+PASS 21,0,61: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;65538&quot; 
+PASS 21,0,62: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;65539&quot; 
+PASS 21,0,63: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;65540&quot; 
+PASS 21,0,64: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;-65537&quot; 
+PASS 21,0,65: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;-65536&quot; 
+PASS 21,0,66: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;-65535&quot; 
+PASS 21,0,67: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;-65534&quot; 
+PASS 21,0,68: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;-65533&quot; 
+PASS 21,0,69: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;-65532&quot; 
+PASS 21,0,70: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;4294967295&quot; 
+PASS 21,0,71: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;4294967296&quot; 
+PASS 21,0,72: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;4294967297&quot; 
+PASS 21,0,73: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;4294967298&quot; 
+PASS 21,0,74: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;4294967299&quot; 
+PASS 21,0,75: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;4294967300&quot; 
+PASS 21,0,76: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;-0.5&quot; 
+PASS 21,0,77: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;0.5&quot; 
+PASS 21,0,78: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;1.5&quot; 
+PASS 21,0,79: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;2.5&quot; 
+PASS 21,0,80: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;3.5&quot; 
+PASS 21,0,81: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;4.5&quot; 
+PASS 21,0,82: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;-1.5&quot; 
+PASS 21,0,83: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;-0.5&quot; 
+PASS 21,0,84: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;0.5&quot; 
+PASS 21,0,85: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;1.5&quot; 
+PASS 21,0,86: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;2.5&quot; 
+PASS 21,0,87: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;3.5&quot; 
+PASS 21,0,88: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;-73.5&quot; 
+PASS 21,0,89: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;-72.5&quot; 
+PASS 21,0,90: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;-71.5&quot; 
+PASS 21,0,91: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;-70.5&quot; 
+PASS 21,0,92: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;-69.5&quot; 
+PASS 21,0,93: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;-68.5&quot; 
+PASS 21,0,94: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;6.5536e4&quot; 
+PASS 21,0,95: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how null 
+PASS 21,0,96: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how undefined 
+PASS 21,0,97: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how true 
+PASS 21,0,98: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how false 
+PASS 21,0,99: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;&quot; 
+PASS 21,0,100: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 0 [detached], how &quot;quasit&quot; 
+PASS 21,1,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 21,1,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 21,1,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 21,1,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 21,2,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 21,2,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 21,2,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 21,2,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 21,3,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 21,3,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 21,3,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 21,3,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 21,3,4: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -1 
+PASS 21,3,5: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4 
+PASS 21,3,6: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 5 
+PASS 21,3,7: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how NaN 
+PASS 21,3,8: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -0 
+PASS 21,3,9: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how Infinity 
+PASS 21,3,10: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -Infinity 
+PASS 21,3,11: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65535 
+PASS 21,3,12: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65536 
+PASS 21,3,13: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65537 
+PASS 21,3,14: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65538 
+PASS 21,3,15: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65539 
+PASS 21,3,16: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65540 
+PASS 21,3,17: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65537 
+PASS 21,3,18: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65536 
+PASS 21,3,19: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65535 
+PASS 21,3,20: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65534 
+PASS 21,3,21: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65533 
+PASS 21,3,22: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65532 
+PASS 21,3,23: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967295 
+PASS 21,3,24: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967296 
+PASS 21,3,25: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967297 
+PASS 21,3,26: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967298 
+PASS 21,3,27: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967299 
+PASS 21,3,28: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967300 
+PASS 21,3,29: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -0.5 
+PASS 21,3,30: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0.5 
+PASS 21,3,31: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1.5 
+PASS 21,3,32: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2.5 
+PASS 21,3,33: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3.5 
+PASS 21,3,34: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4.5 
+PASS 21,3,35: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -1.5 
+PASS 21,3,36: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -0.5 
+PASS 21,3,37: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0.5 
+PASS 21,3,38: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1.5 
+PASS 21,3,39: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2.5 
+PASS 21,3,40: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3.5 
+PASS 21,3,41: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -73.5 
+PASS 21,3,42: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -72.5 
+PASS 21,3,43: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -71.5 
+PASS 21,3,44: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -70.5 
+PASS 21,3,45: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -69.5 
+PASS 21,3,46: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -68.5 
+PASS 21,3,47: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;0&quot; 
+PASS 21,3,48: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;1&quot; 
+PASS 21,3,49: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;2&quot; 
+PASS 21,3,50: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;3&quot; 
+PASS 21,3,51: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-1&quot; 
+PASS 21,3,52: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4&quot; 
+PASS 21,3,53: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;5&quot; 
+PASS 21,3,54: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;NaN&quot; 
+PASS 21,3,55: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;0&quot; 
+PASS 21,3,56: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;Infinity&quot; 
+PASS 21,3,57: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-Infinity&quot; 
+PASS 21,3,58: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65535&quot; 
+PASS 21,3,59: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65536&quot; 
+PASS 21,3,60: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65537&quot; 
+PASS 21,3,61: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65538&quot; 
+PASS 21,3,62: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65539&quot; 
+PASS 21,3,63: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65540&quot; 
+PASS 21,3,64: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65537&quot; 
+PASS 21,3,65: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65536&quot; 
+PASS 21,3,66: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65535&quot; 
+PASS 21,3,67: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65534&quot; 
+PASS 21,3,68: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65533&quot; 
+PASS 21,3,69: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65532&quot; 
+PASS 21,3,70: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967295&quot; 
+PASS 21,3,71: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967296&quot; 
+PASS 21,3,72: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967297&quot; 
+PASS 21,3,73: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967298&quot; 
+PASS 21,3,74: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967299&quot; 
+PASS 21,3,75: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967300&quot; 
+PASS 21,3,76: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-0.5&quot; 
+PASS 21,3,77: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;0.5&quot; 
+PASS 21,3,78: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;1.5&quot; 
+PASS 21,3,79: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;2.5&quot; 
+PASS 21,3,80: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;3.5&quot; 
+PASS 21,3,81: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4.5&quot; 
+PASS 21,3,82: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-1.5&quot; 
+PASS 21,3,83: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-0.5&quot; 
+PASS 21,3,84: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;0.5&quot; 
+PASS 21,3,85: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;1.5&quot; 
+PASS 21,3,86: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;2.5&quot; 
+PASS 21,3,87: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;3.5&quot; 
+PASS 21,3,88: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-73.5&quot; 
+PASS 21,3,89: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-72.5&quot; 
+PASS 21,3,90: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-71.5&quot; 
+PASS 21,3,91: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-70.5&quot; 
+PASS 21,3,92: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-69.5&quot; 
+PASS 21,3,93: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-68.5&quot; 
+PASS 21,3,94: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;6.5536e4&quot; 
+PASS 21,3,95: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how null 
+PASS 21,3,96: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how undefined 
+PASS 21,3,97: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how true 
+PASS 21,3,98: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how false 
+PASS 21,3,99: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;&quot; 
+PASS 21,3,100: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;quasit&quot; 
+PASS 21,4,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 21,4,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 21,4,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 21,4,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 21,5,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 21,5,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 21,5,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 21,5,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 21,6,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 21,6,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 21,6,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 21,6,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 21,7,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 21,7,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 21,7,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 21,7,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 21,8,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 21,8,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 21,8,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 21,8,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 21,9,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 21,9,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 21,9,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 21,9,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 21,10,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 21,10,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 21,10,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 21,10,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 21,11,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 21,11,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 21,11,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 21,11,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 21,12,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 21,12,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 21,12,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 21,12,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 21,13,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 21,13,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 21,13,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 21,13,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 21,14,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 21,14,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 21,14,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 21,14,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 21,15,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 21,15,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 21,15,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 21,15,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 21,16,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 21,16,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 21,16,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 21,16,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 21,16,4: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -1 
+PASS 21,16,5: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4 
+PASS 21,16,6: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 5 
+PASS 21,16,7: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how NaN 
+PASS 21,16,8: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -0 
+PASS 21,16,9: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how Infinity 
+PASS 21,16,10: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -Infinity 
+PASS 21,16,11: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65535 
+PASS 21,16,12: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65536 
+PASS 21,16,13: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65537 
+PASS 21,16,14: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65538 
+PASS 21,16,15: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65539 
+PASS 21,16,16: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65540 
+PASS 21,16,17: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65537 
+PASS 21,16,18: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65536 
+PASS 21,16,19: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65535 
+PASS 21,16,20: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65534 
+PASS 21,16,21: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65533 
+PASS 21,16,22: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65532 
+PASS 21,16,23: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967295 
+PASS 21,16,24: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967296 
+PASS 21,16,25: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967297 
+PASS 21,16,26: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967298 
+PASS 21,16,27: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967299 
+PASS 21,16,28: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967300 
+PASS 21,16,29: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -0.5 
+PASS 21,16,30: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0.5 
+PASS 21,16,31: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1.5 
+PASS 21,16,32: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2.5 
+PASS 21,16,33: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3.5 
+PASS 21,16,34: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4.5 
+PASS 21,16,35: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -1.5 
+PASS 21,16,36: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -0.5 
+PASS 21,16,37: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0.5 
+PASS 21,16,38: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1.5 
+PASS 21,16,39: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2.5 
+PASS 21,16,40: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3.5 
+PASS 21,16,41: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -73.5 
+PASS 21,16,42: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -72.5 
+PASS 21,16,43: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -71.5 
+PASS 21,16,44: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -70.5 
+PASS 21,16,45: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -69.5 
+PASS 21,16,46: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -68.5 
+PASS 21,16,47: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;0&quot; 
+PASS 21,16,48: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;1&quot; 
+PASS 21,16,49: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;2&quot; 
+PASS 21,16,50: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;3&quot; 
+PASS 21,16,51: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-1&quot; 
+PASS 21,16,52: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4&quot; 
+PASS 21,16,53: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;5&quot; 
+PASS 21,16,54: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;NaN&quot; 
+PASS 21,16,55: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;0&quot; 
+PASS 21,16,56: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;Infinity&quot; 
+PASS 21,16,57: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-Infinity&quot; 
+PASS 21,16,58: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65535&quot; 
+PASS 21,16,59: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65536&quot; 
+PASS 21,16,60: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65537&quot; 
+PASS 21,16,61: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65538&quot; 
+PASS 21,16,62: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65539&quot; 
+PASS 21,16,63: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65540&quot; 
+PASS 21,16,64: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65537&quot; 
+PASS 21,16,65: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65536&quot; 
+PASS 21,16,66: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65535&quot; 
+PASS 21,16,67: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65534&quot; 
+PASS 21,16,68: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65533&quot; 
+PASS 21,16,69: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65532&quot; 
+PASS 21,16,70: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967295&quot; 
+PASS 21,16,71: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967296&quot; 
+PASS 21,16,72: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967297&quot; 
+PASS 21,16,73: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967298&quot; 
+PASS 21,16,74: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967299&quot; 
+PASS 21,16,75: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967300&quot; 
+PASS 21,16,76: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-0.5&quot; 
+PASS 21,16,77: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;0.5&quot; 
+PASS 21,16,78: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;1.5&quot; 
+PASS 21,16,79: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;2.5&quot; 
+PASS 21,16,80: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;3.5&quot; 
+PASS 21,16,81: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4.5&quot; 
+PASS 21,16,82: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-1.5&quot; 
+PASS 21,16,83: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-0.5&quot; 
+PASS 21,16,84: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;0.5&quot; 
+PASS 21,16,85: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;1.5&quot; 
+PASS 21,16,86: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;2.5&quot; 
+PASS 21,16,87: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;3.5&quot; 
+PASS 21,16,88: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-73.5&quot; 
+PASS 21,16,89: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-72.5&quot; 
+PASS 21,16,90: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-71.5&quot; 
+PASS 21,16,91: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-70.5&quot; 
+PASS 21,16,92: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-69.5&quot; 
+PASS 21,16,93: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-68.5&quot; 
+PASS 21,16,94: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;6.5536e4&quot; 
+PASS 21,16,95: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how null 
+PASS 21,16,96: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how undefined 
+PASS 21,16,97: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how true 
+PASS 21,16,98: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how false 
+PASS 21,16,99: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;&quot; 
+PASS 21,16,100: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;quasit&quot; 
+PASS 21,17,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 21,17,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 21,17,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 21,17,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 21,18,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 21,18,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 21,18,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 21,18,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 21,19,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 21,19,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 21,19,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 21,19,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 21,20,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 21,20,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 21,20,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 21,20,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 21,21,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 21,21,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 21,21,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 21,21,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 21,21,4: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -1 
+PASS 21,21,5: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4 
+PASS 21,21,6: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 5 
+PASS 21,21,7: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how NaN 
+PASS 21,21,8: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -0 
+PASS 21,21,9: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how Infinity 
+PASS 21,21,10: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -Infinity 
+PASS 21,21,11: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65535 
+PASS 21,21,12: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65536 
+PASS 21,21,13: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65537 
+PASS 21,21,14: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65538 
+PASS 21,21,15: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65539 
+PASS 21,21,16: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65540 
+PASS 21,21,17: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65537 
+PASS 21,21,18: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65536 
+PASS 21,21,19: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65535 
+PASS 21,21,20: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65534 
+PASS 21,21,21: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65533 
+PASS 21,21,22: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65532 
+PASS 21,21,23: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967295 
+PASS 21,21,24: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967296 
+PASS 21,21,25: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967297 
+PASS 21,21,26: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967298 
+PASS 21,21,27: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967299 
+PASS 21,21,28: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967300 
+PASS 21,21,29: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -0.5 
+PASS 21,21,30: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0.5 
+PASS 21,21,31: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1.5 
+PASS 21,21,32: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2.5 
+PASS 21,21,33: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3.5 
+PASS 21,21,34: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4.5 
+PASS 21,21,35: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -1.5 
+PASS 21,21,36: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -0.5 
+PASS 21,21,37: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0.5 
+PASS 21,21,38: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1.5 
+PASS 21,21,39: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2.5 
+PASS 21,21,40: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3.5 
+PASS 21,21,41: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -73.5 
+PASS 21,21,42: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -72.5 
+PASS 21,21,43: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -71.5 
+PASS 21,21,44: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -70.5 
+PASS 21,21,45: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -69.5 
+PASS 21,21,46: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -68.5 
+PASS 21,21,47: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;0&quot; 
+PASS 21,21,48: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;1&quot; 
+PASS 21,21,49: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;2&quot; 
+PASS 21,21,50: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;3&quot; 
+PASS 21,21,51: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-1&quot; 
+PASS 21,21,52: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4&quot; 
+PASS 21,21,53: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;5&quot; 
+PASS 21,21,54: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;NaN&quot; 
+PASS 21,21,55: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;0&quot; 
+PASS 21,21,56: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;Infinity&quot; 
+PASS 21,21,57: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-Infinity&quot; 
+PASS 21,21,58: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65535&quot; 
+PASS 21,21,59: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65536&quot; 
+PASS 21,21,60: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65537&quot; 
+PASS 21,21,61: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65538&quot; 
+PASS 21,21,62: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65539&quot; 
+PASS 21,21,63: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65540&quot; 
+PASS 21,21,64: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65537&quot; 
+PASS 21,21,65: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65536&quot; 
+PASS 21,21,66: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65535&quot; 
+PASS 21,21,67: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65534&quot; 
+PASS 21,21,68: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65533&quot; 
+PASS 21,21,69: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65532&quot; 
+PASS 21,21,70: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967295&quot; 
+PASS 21,21,71: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967296&quot; 
+PASS 21,21,72: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967297&quot; 
+PASS 21,21,73: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967298&quot; 
+PASS 21,21,74: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967299&quot; 
+PASS 21,21,75: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967300&quot; 
+PASS 21,21,76: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-0.5&quot; 
+PASS 21,21,77: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;0.5&quot; 
+PASS 21,21,78: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;1.5&quot; 
+PASS 21,21,79: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;2.5&quot; 
+PASS 21,21,80: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;3.5&quot; 
+PASS 21,21,81: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4.5&quot; 
+PASS 21,21,82: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-1.5&quot; 
+PASS 21,21,83: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-0.5&quot; 
+PASS 21,21,84: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;0.5&quot; 
+PASS 21,21,85: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;1.5&quot; 
+PASS 21,21,86: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;2.5&quot; 
+PASS 21,21,87: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;3.5&quot; 
+PASS 21,21,88: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-73.5&quot; 
+PASS 21,21,89: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-72.5&quot; 
+PASS 21,21,90: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-71.5&quot; 
+PASS 21,21,91: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-70.5&quot; 
+PASS 21,21,92: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-69.5&quot; 
+PASS 21,21,93: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-68.5&quot; 
+PASS 21,21,94: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;6.5536e4&quot; 
+PASS 21,21,95: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how null 
+PASS 21,21,96: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how undefined 
+PASS 21,21,97: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how true 
+PASS 21,21,98: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how false 
+PASS 21,21,99: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;&quot; 
+PASS 21,21,100: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;quasit&quot; 
+PASS 21,22,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 21,22,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 21,22,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 21,22,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 21,23,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 21,23,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 21,23,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 21,23,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 21,24,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 24 [document, 0, document, 1], how 0 
+PASS 21,24,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 24 [document, 0, document, 1], how 1 
+PASS 21,24,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 24 [document, 0, document, 1], how 2 
+PASS 21,24,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 24 [document, 0, document, 1], how 3 
+PASS 21,25,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 25 [document, 0, document, 2], how 0 
+PASS 21,25,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 25 [document, 0, document, 2], how 1 
+PASS 21,25,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 25 [document, 0, document, 2], how 2 
+PASS 21,25,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 25 [document, 0, document, 2], how 3 
+PASS 21,26,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 21,26,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 21,26,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 21,26,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 21,27,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 21,27,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 21,27,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 21,27,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 21,27,4: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how -1 
+PASS 21,27,5: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how 4 
+PASS 21,27,6: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how 5 
+PASS 21,27,7: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how NaN 
+PASS 21,27,8: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how -0 
+PASS 21,27,9: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how Infinity 
+PASS 21,27,10: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how -Infinity 
+PASS 21,27,11: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how 65535 
+PASS 21,27,12: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how 65536 
+PASS 21,27,13: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how 65537 
+PASS 21,27,14: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how 65538 
+PASS 21,27,15: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how 65539 
+PASS 21,27,16: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how 65540 
+PASS 21,27,17: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how -65537 
+PASS 21,27,18: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how -65536 
+PASS 21,27,19: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how -65535 
+PASS 21,27,20: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how -65534 
+PASS 21,27,21: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how -65533 
+PASS 21,27,22: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how -65532 
+PASS 21,27,23: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how 4294967295 
+PASS 21,27,24: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how 4294967296 
+PASS 21,27,25: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how 4294967297 
+PASS 21,27,26: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how 4294967298 
+PASS 21,27,27: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how 4294967299 
+PASS 21,27,28: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how 4294967300 
+PASS 21,27,29: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how -0.5 
+PASS 21,27,30: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how 0.5 
+PASS 21,27,31: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how 1.5 
+PASS 21,27,32: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how 2.5 
+PASS 21,27,33: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how 3.5 
+PASS 21,27,34: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how 4.5 
+PASS 21,27,35: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how -1.5 
+PASS 21,27,36: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how -0.5 
+PASS 21,27,37: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how 0.5 
+PASS 21,27,38: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how 1.5 
+PASS 21,27,39: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how 2.5 
+PASS 21,27,40: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how 3.5 
+PASS 21,27,41: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how -73.5 
+PASS 21,27,42: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how -72.5 
+PASS 21,27,43: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how -71.5 
+PASS 21,27,44: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how -70.5 
+PASS 21,27,45: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how -69.5 
+PASS 21,27,46: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how -68.5 
+PASS 21,27,47: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;0&quot; 
+PASS 21,27,48: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;1&quot; 
+PASS 21,27,49: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;2&quot; 
+PASS 21,27,50: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;3&quot; 
+PASS 21,27,51: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-1&quot; 
+PASS 21,27,52: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;4&quot; 
+PASS 21,27,53: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;5&quot; 
+PASS 21,27,54: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;NaN&quot; 
+PASS 21,27,55: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;0&quot; 
+PASS 21,27,56: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;Infinity&quot; 
+PASS 21,27,57: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-Infinity&quot; 
+PASS 21,27,58: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;65535&quot; 
+PASS 21,27,59: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;65536&quot; 
+PASS 21,27,60: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;65537&quot; 
+PASS 21,27,61: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;65538&quot; 
+PASS 21,27,62: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;65539&quot; 
+PASS 21,27,63: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;65540&quot; 
+PASS 21,27,64: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-65537&quot; 
+PASS 21,27,65: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-65536&quot; 
+PASS 21,27,66: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-65535&quot; 
+PASS 21,27,67: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-65534&quot; 
+PASS 21,27,68: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-65533&quot; 
+PASS 21,27,69: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-65532&quot; 
+PASS 21,27,70: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967295&quot; 
+PASS 21,27,71: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967296&quot; 
+PASS 21,27,72: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967297&quot; 
+PASS 21,27,73: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967298&quot; 
+PASS 21,27,74: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967299&quot; 
+PASS 21,27,75: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967300&quot; 
+PASS 21,27,76: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-0.5&quot; 
+PASS 21,27,77: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;0.5&quot; 
+PASS 21,27,78: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;1.5&quot; 
+PASS 21,27,79: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;2.5&quot; 
+PASS 21,27,80: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;3.5&quot; 
+PASS 21,27,81: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;4.5&quot; 
+PASS 21,27,82: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-1.5&quot; 
+PASS 21,27,83: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-0.5&quot; 
+PASS 21,27,84: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;0.5&quot; 
+PASS 21,27,85: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;1.5&quot; 
+PASS 21,27,86: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;2.5&quot; 
+PASS 21,27,87: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;3.5&quot; 
+PASS 21,27,88: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-73.5&quot; 
+PASS 21,27,89: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-72.5&quot; 
+PASS 21,27,90: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-71.5&quot; 
+PASS 21,27,91: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-70.5&quot; 
+PASS 21,27,92: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-69.5&quot; 
+PASS 21,27,93: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;-68.5&quot; 
+PASS 21,27,94: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;6.5536e4&quot; 
+PASS 21,27,95: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how null 
+PASS 21,27,96: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how undefined 
+PASS 21,27,97: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how true 
+PASS 21,27,98: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how false 
+PASS 21,27,99: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;&quot; 
+PASS 21,27,100: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 27 [testDiv, 0, comment, 5], how &quot;quasit&quot; 
+PASS 21,28,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 21,28,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 21,28,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 21,28,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 21,29,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 21,29,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 21,29,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 21,29,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 21,30,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 21,30,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 21,30,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 21,30,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 21,31,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 21,31,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 21,31,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 21,31,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 21,32,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 21,32,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 21,32,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 21,32,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 21,33,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 21,33,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 21,33,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 21,33,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 21,34,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 21,34,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 21,34,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 21,34,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 21,35,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 21,35,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 21,35,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 21,35,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 21,36,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 21,36,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 21,36,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 21,36,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 21,37,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 21,37,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 21,37,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 21,37,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 21,38,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 21,38,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 21,38,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 21,38,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 21,39,0: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range same as first range, how 0 
+PASS 21,39,1: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range same as first range, how 1 
+PASS 21,39,2: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range same as first range, how 2 
+PASS 21,39,3: context range 21 [paras[0].firstChild, 3, paras[3], 1], argument range same as first range, how 3 
+PASS 22,0,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 0 [detached], how 0 
+PASS 22,0,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 0 [detached], how 1 
+PASS 22,0,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 0 [detached], how 2 
+PASS 22,0,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 0 [detached], how 3 
+PASS 22,1,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 22,1,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 22,1,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 22,1,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 22,2,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 22,2,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 22,2,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 22,2,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 22,3,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 22,3,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 22,3,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 22,3,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 22,4,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 22,4,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 22,4,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 22,4,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 22,5,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 22,5,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 22,5,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 22,5,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 22,6,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 22,6,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 22,6,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 22,6,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 22,7,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 22,7,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 22,7,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 22,7,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 22,8,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 22,8,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 22,8,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 22,8,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 22,9,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 22,9,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 22,9,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 22,9,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 22,10,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 22,10,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 22,10,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 22,10,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 22,11,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 22,11,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 22,11,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 22,11,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 22,12,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 22,12,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 22,12,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 22,12,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 22,13,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 22,13,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 22,13,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 22,13,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 22,14,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 22,14,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 22,14,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 22,14,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 22,15,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 22,15,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 22,15,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 22,15,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 22,16,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 22,16,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 22,16,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 22,16,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 22,17,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 22,17,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 22,17,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 22,17,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 22,18,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 22,18,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 22,18,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 22,18,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 22,19,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 22,19,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 22,19,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 22,19,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 22,20,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 22,20,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 22,20,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 22,20,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 22,21,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 22,21,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 22,21,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 22,21,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 22,22,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 22,22,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 22,22,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 22,22,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 22,23,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 22,23,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 22,23,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 22,23,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 22,24,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 24 [document, 0, document, 1], how 0 
+PASS 22,24,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 24 [document, 0, document, 1], how 1 
+PASS 22,24,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 24 [document, 0, document, 1], how 2 
+PASS 22,24,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 24 [document, 0, document, 1], how 3 
+PASS 22,25,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 25 [document, 0, document, 2], how 0 
+PASS 22,25,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 25 [document, 0, document, 2], how 1 
+PASS 22,25,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 25 [document, 0, document, 2], how 2 
+PASS 22,25,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 25 [document, 0, document, 2], how 3 
+PASS 22,26,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 22,26,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 22,26,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 22,26,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 22,27,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 22,27,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 22,27,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 22,27,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 22,28,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 22,28,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 22,28,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 22,28,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 22,29,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 22,29,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 22,29,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 22,29,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 22,30,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 22,30,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 22,30,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 22,30,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 22,31,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 22,31,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 22,31,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 22,31,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 22,32,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 22,32,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 22,32,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 22,32,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 22,33,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 22,33,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 22,33,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 22,33,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 22,34,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 22,34,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 22,34,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 22,34,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 22,35,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 22,35,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 22,35,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 22,35,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 22,36,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 22,36,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 22,36,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 22,36,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 22,37,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 22,37,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 22,37,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 22,37,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 22,38,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 22,38,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 22,38,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 22,38,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 22,39,0: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range same as first range, how 0 
+PASS 22,39,1: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range same as first range, how 1 
+PASS 22,39,2: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range same as first range, how 2 
+PASS 22,39,3: context range 22 [paras[0], 0, paras[0].firstChild, 7], argument range same as first range, how 3 
+PASS 23,0,0: context range 23 [testDiv, 2, paras[4], 1], argument range 0 [detached], how 0 
+PASS 23,0,1: context range 23 [testDiv, 2, paras[4], 1], argument range 0 [detached], how 1 
+PASS 23,0,2: context range 23 [testDiv, 2, paras[4], 1], argument range 0 [detached], how 2 
+PASS 23,0,3: context range 23 [testDiv, 2, paras[4], 1], argument range 0 [detached], how 3 
+PASS 23,1,0: context range 23 [testDiv, 2, paras[4], 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 23,1,1: context range 23 [testDiv, 2, paras[4], 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 23,1,2: context range 23 [testDiv, 2, paras[4], 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 23,1,3: context range 23 [testDiv, 2, paras[4], 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 23,2,0: context range 23 [testDiv, 2, paras[4], 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 23,2,1: context range 23 [testDiv, 2, paras[4], 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 23,2,2: context range 23 [testDiv, 2, paras[4], 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 23,2,3: context range 23 [testDiv, 2, paras[4], 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 23,3,0: context range 23 [testDiv, 2, paras[4], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 23,3,1: context range 23 [testDiv, 2, paras[4], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 23,3,2: context range 23 [testDiv, 2, paras[4], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 23,3,3: context range 23 [testDiv, 2, paras[4], 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 23,4,0: context range 23 [testDiv, 2, paras[4], 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 23,4,1: context range 23 [testDiv, 2, paras[4], 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 23,4,2: context range 23 [testDiv, 2, paras[4], 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 23,4,3: context range 23 [testDiv, 2, paras[4], 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 23,5,0: context range 23 [testDiv, 2, paras[4], 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 23,5,1: context range 23 [testDiv, 2, paras[4], 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 23,5,2: context range 23 [testDiv, 2, paras[4], 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 23,5,3: context range 23 [testDiv, 2, paras[4], 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 23,6,0: context range 23 [testDiv, 2, paras[4], 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 23,6,1: context range 23 [testDiv, 2, paras[4], 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 23,6,2: context range 23 [testDiv, 2, paras[4], 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 23,6,3: context range 23 [testDiv, 2, paras[4], 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 23,7,0: context range 23 [testDiv, 2, paras[4], 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 23,7,1: context range 23 [testDiv, 2, paras[4], 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 23,7,2: context range 23 [testDiv, 2, paras[4], 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 23,7,3: context range 23 [testDiv, 2, paras[4], 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 23,8,0: context range 23 [testDiv, 2, paras[4], 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 23,8,1: context range 23 [testDiv, 2, paras[4], 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 23,8,2: context range 23 [testDiv, 2, paras[4], 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 23,8,3: context range 23 [testDiv, 2, paras[4], 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 23,9,0: context range 23 [testDiv, 2, paras[4], 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 23,9,1: context range 23 [testDiv, 2, paras[4], 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 23,9,2: context range 23 [testDiv, 2, paras[4], 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 23,9,3: context range 23 [testDiv, 2, paras[4], 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 23,10,0: context range 23 [testDiv, 2, paras[4], 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 23,10,1: context range 23 [testDiv, 2, paras[4], 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 23,10,2: context range 23 [testDiv, 2, paras[4], 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 23,10,3: context range 23 [testDiv, 2, paras[4], 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 23,11,0: context range 23 [testDiv, 2, paras[4], 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 23,11,1: context range 23 [testDiv, 2, paras[4], 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 23,11,2: context range 23 [testDiv, 2, paras[4], 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 23,11,3: context range 23 [testDiv, 2, paras[4], 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 23,12,0: context range 23 [testDiv, 2, paras[4], 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 23,12,1: context range 23 [testDiv, 2, paras[4], 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 23,12,2: context range 23 [testDiv, 2, paras[4], 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 23,12,3: context range 23 [testDiv, 2, paras[4], 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 23,13,0: context range 23 [testDiv, 2, paras[4], 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 23,13,1: context range 23 [testDiv, 2, paras[4], 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 23,13,2: context range 23 [testDiv, 2, paras[4], 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 23,13,3: context range 23 [testDiv, 2, paras[4], 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 23,14,0: context range 23 [testDiv, 2, paras[4], 1], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 23,14,1: context range 23 [testDiv, 2, paras[4], 1], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 23,14,2: context range 23 [testDiv, 2, paras[4], 1], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 23,14,3: context range 23 [testDiv, 2, paras[4], 1], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 23,15,0: context range 23 [testDiv, 2, paras[4], 1], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 23,15,1: context range 23 [testDiv, 2, paras[4], 1], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 23,15,2: context range 23 [testDiv, 2, paras[4], 1], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 23,15,3: context range 23 [testDiv, 2, paras[4], 1], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 23,16,0: context range 23 [testDiv, 2, paras[4], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 23,16,1: context range 23 [testDiv, 2, paras[4], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 23,16,2: context range 23 [testDiv, 2, paras[4], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 23,16,3: context range 23 [testDiv, 2, paras[4], 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 23,17,0: context range 23 [testDiv, 2, paras[4], 1], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 23,17,1: context range 23 [testDiv, 2, paras[4], 1], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 23,17,2: context range 23 [testDiv, 2, paras[4], 1], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 23,17,3: context range 23 [testDiv, 2, paras[4], 1], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 23,18,0: context range 23 [testDiv, 2, paras[4], 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 23,18,1: context range 23 [testDiv, 2, paras[4], 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 23,18,2: context range 23 [testDiv, 2, paras[4], 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 23,18,3: context range 23 [testDiv, 2, paras[4], 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 23,19,0: context range 23 [testDiv, 2, paras[4], 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 23,19,1: context range 23 [testDiv, 2, paras[4], 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 23,19,2: context range 23 [testDiv, 2, paras[4], 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 23,19,3: context range 23 [testDiv, 2, paras[4], 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 23,20,0: context range 23 [testDiv, 2, paras[4], 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 23,20,1: context range 23 [testDiv, 2, paras[4], 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 23,20,2: context range 23 [testDiv, 2, paras[4], 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 23,20,3: context range 23 [testDiv, 2, paras[4], 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 23,21,0: context range 23 [testDiv, 2, paras[4], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 23,21,1: context range 23 [testDiv, 2, paras[4], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 23,21,2: context range 23 [testDiv, 2, paras[4], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 23,21,3: context range 23 [testDiv, 2, paras[4], 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 23,22,0: context range 23 [testDiv, 2, paras[4], 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 23,22,1: context range 23 [testDiv, 2, paras[4], 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 23,22,2: context range 23 [testDiv, 2, paras[4], 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 23,22,3: context range 23 [testDiv, 2, paras[4], 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 23,23,0: context range 23 [testDiv, 2, paras[4], 1], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 23,23,1: context range 23 [testDiv, 2, paras[4], 1], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 23,23,2: context range 23 [testDiv, 2, paras[4], 1], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 23,23,3: context range 23 [testDiv, 2, paras[4], 1], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 23,24,0: context range 23 [testDiv, 2, paras[4], 1], argument range 24 [document, 0, document, 1], how 0 
+PASS 23,24,1: context range 23 [testDiv, 2, paras[4], 1], argument range 24 [document, 0, document, 1], how 1 
+PASS 23,24,2: context range 23 [testDiv, 2, paras[4], 1], argument range 24 [document, 0, document, 1], how 2 
+PASS 23,24,3: context range 23 [testDiv, 2, paras[4], 1], argument range 24 [document, 0, document, 1], how 3 
+PASS 23,25,0: context range 23 [testDiv, 2, paras[4], 1], argument range 25 [document, 0, document, 2], how 0 
+PASS 23,25,1: context range 23 [testDiv, 2, paras[4], 1], argument range 25 [document, 0, document, 2], how 1 
+PASS 23,25,2: context range 23 [testDiv, 2, paras[4], 1], argument range 25 [document, 0, document, 2], how 2 
+PASS 23,25,3: context range 23 [testDiv, 2, paras[4], 1], argument range 25 [document, 0, document, 2], how 3 
+PASS 23,26,0: context range 23 [testDiv, 2, paras[4], 1], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 23,26,1: context range 23 [testDiv, 2, paras[4], 1], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 23,26,2: context range 23 [testDiv, 2, paras[4], 1], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 23,26,3: context range 23 [testDiv, 2, paras[4], 1], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 23,27,0: context range 23 [testDiv, 2, paras[4], 1], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 23,27,1: context range 23 [testDiv, 2, paras[4], 1], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 23,27,2: context range 23 [testDiv, 2, paras[4], 1], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 23,27,3: context range 23 [testDiv, 2, paras[4], 1], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 23,28,0: context range 23 [testDiv, 2, paras[4], 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 23,28,1: context range 23 [testDiv, 2, paras[4], 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 23,28,2: context range 23 [testDiv, 2, paras[4], 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 23,28,3: context range 23 [testDiv, 2, paras[4], 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 23,29,0: context range 23 [testDiv, 2, paras[4], 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 23,29,1: context range 23 [testDiv, 2, paras[4], 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 23,29,2: context range 23 [testDiv, 2, paras[4], 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 23,29,3: context range 23 [testDiv, 2, paras[4], 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 23,30,0: context range 23 [testDiv, 2, paras[4], 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 23,30,1: context range 23 [testDiv, 2, paras[4], 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 23,30,2: context range 23 [testDiv, 2, paras[4], 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 23,30,3: context range 23 [testDiv, 2, paras[4], 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 23,31,0: context range 23 [testDiv, 2, paras[4], 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 23,31,1: context range 23 [testDiv, 2, paras[4], 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 23,31,2: context range 23 [testDiv, 2, paras[4], 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 23,31,3: context range 23 [testDiv, 2, paras[4], 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 23,32,0: context range 23 [testDiv, 2, paras[4], 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 23,32,1: context range 23 [testDiv, 2, paras[4], 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 23,32,2: context range 23 [testDiv, 2, paras[4], 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 23,32,3: context range 23 [testDiv, 2, paras[4], 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 23,33,0: context range 23 [testDiv, 2, paras[4], 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 23,33,1: context range 23 [testDiv, 2, paras[4], 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 23,33,2: context range 23 [testDiv, 2, paras[4], 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 23,33,3: context range 23 [testDiv, 2, paras[4], 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 23,34,0: context range 23 [testDiv, 2, paras[4], 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 23,34,1: context range 23 [testDiv, 2, paras[4], 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 23,34,2: context range 23 [testDiv, 2, paras[4], 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 23,34,3: context range 23 [testDiv, 2, paras[4], 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 23,35,0: context range 23 [testDiv, 2, paras[4], 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 23,35,1: context range 23 [testDiv, 2, paras[4], 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 23,35,2: context range 23 [testDiv, 2, paras[4], 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 23,35,3: context range 23 [testDiv, 2, paras[4], 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 23,36,0: context range 23 [testDiv, 2, paras[4], 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 23,36,1: context range 23 [testDiv, 2, paras[4], 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 23,36,2: context range 23 [testDiv, 2, paras[4], 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 23,36,3: context range 23 [testDiv, 2, paras[4], 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 23,37,0: context range 23 [testDiv, 2, paras[4], 1], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 23,37,1: context range 23 [testDiv, 2, paras[4], 1], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 23,37,2: context range 23 [testDiv, 2, paras[4], 1], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 23,37,3: context range 23 [testDiv, 2, paras[4], 1], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 23,38,0: context range 23 [testDiv, 2, paras[4], 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 23,38,1: context range 23 [testDiv, 2, paras[4], 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 23,38,2: context range 23 [testDiv, 2, paras[4], 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 23,38,3: context range 23 [testDiv, 2, paras[4], 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 23,39,0: context range 23 [testDiv, 2, paras[4], 1], argument range same as first range, how 0 
+PASS 23,39,1: context range 23 [testDiv, 2, paras[4], 1], argument range same as first range, how 1 
+PASS 23,39,2: context range 23 [testDiv, 2, paras[4], 1], argument range same as first range, how 2 
+PASS 23,39,3: context range 23 [testDiv, 2, paras[4], 1], argument range same as first range, how 3 
+PASS 24,0,0: context range 24 [document, 0, document, 1], argument range 0 [detached], how 0 
+PASS 24,0,1: context range 24 [document, 0, document, 1], argument range 0 [detached], how 1 
+PASS 24,0,2: context range 24 [document, 0, document, 1], argument range 0 [detached], how 2 
+PASS 24,0,3: context range 24 [document, 0, document, 1], argument range 0 [detached], how 3 
+PASS 24,1,0: context range 24 [document, 0, document, 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 24,1,1: context range 24 [document, 0, document, 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 24,1,2: context range 24 [document, 0, document, 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 24,1,3: context range 24 [document, 0, document, 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 24,2,0: context range 24 [document, 0, document, 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 24,2,1: context range 24 [document, 0, document, 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 24,2,2: context range 24 [document, 0, document, 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 24,2,3: context range 24 [document, 0, document, 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 24,3,0: context range 24 [document, 0, document, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 24,3,1: context range 24 [document, 0, document, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 24,3,2: context range 24 [document, 0, document, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 24,3,3: context range 24 [document, 0, document, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 24,4,0: context range 24 [document, 0, document, 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 24,4,1: context range 24 [document, 0, document, 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 24,4,2: context range 24 [document, 0, document, 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 24,4,3: context range 24 [document, 0, document, 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 24,5,0: context range 24 [document, 0, document, 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 24,5,1: context range 24 [document, 0, document, 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 24,5,2: context range 24 [document, 0, document, 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 24,5,3: context range 24 [document, 0, document, 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 24,6,0: context range 24 [document, 0, document, 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 24,6,1: context range 24 [document, 0, document, 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 24,6,2: context range 24 [document, 0, document, 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 24,6,3: context range 24 [document, 0, document, 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 24,7,0: context range 24 [document, 0, document, 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 24,7,1: context range 24 [document, 0, document, 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 24,7,2: context range 24 [document, 0, document, 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 24,7,3: context range 24 [document, 0, document, 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 24,8,0: context range 24 [document, 0, document, 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 24,8,1: context range 24 [document, 0, document, 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 24,8,2: context range 24 [document, 0, document, 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 24,8,3: context range 24 [document, 0, document, 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 24,9,0: context range 24 [document, 0, document, 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 24,9,1: context range 24 [document, 0, document, 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 24,9,2: context range 24 [document, 0, document, 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 24,9,3: context range 24 [document, 0, document, 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 24,10,0: context range 24 [document, 0, document, 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 24,10,1: context range 24 [document, 0, document, 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 24,10,2: context range 24 [document, 0, document, 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 24,10,3: context range 24 [document, 0, document, 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 24,11,0: context range 24 [document, 0, document, 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 24,11,1: context range 24 [document, 0, document, 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 24,11,2: context range 24 [document, 0, document, 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 24,11,3: context range 24 [document, 0, document, 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 24,12,0: context range 24 [document, 0, document, 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 24,12,1: context range 24 [document, 0, document, 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 24,12,2: context range 24 [document, 0, document, 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 24,12,3: context range 24 [document, 0, document, 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 24,13,0: context range 24 [document, 0, document, 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 24,13,1: context range 24 [document, 0, document, 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 24,13,2: context range 24 [document, 0, document, 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 24,13,3: context range 24 [document, 0, document, 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 24,14,0: context range 24 [document, 0, document, 1], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 24,14,1: context range 24 [document, 0, document, 1], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 24,14,2: context range 24 [document, 0, document, 1], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 24,14,3: context range 24 [document, 0, document, 1], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 24,15,0: context range 24 [document, 0, document, 1], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 24,15,1: context range 24 [document, 0, document, 1], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 24,15,2: context range 24 [document, 0, document, 1], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 24,15,3: context range 24 [document, 0, document, 1], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 24,16,0: context range 24 [document, 0, document, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 24,16,1: context range 24 [document, 0, document, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 24,16,2: context range 24 [document, 0, document, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 24,16,3: context range 24 [document, 0, document, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 24,17,0: context range 24 [document, 0, document, 1], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 24,17,1: context range 24 [document, 0, document, 1], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 24,17,2: context range 24 [document, 0, document, 1], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 24,17,3: context range 24 [document, 0, document, 1], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 24,18,0: context range 24 [document, 0, document, 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 24,18,1: context range 24 [document, 0, document, 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 24,18,2: context range 24 [document, 0, document, 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 24,18,3: context range 24 [document, 0, document, 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 24,19,0: context range 24 [document, 0, document, 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 24,19,1: context range 24 [document, 0, document, 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 24,19,2: context range 24 [document, 0, document, 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 24,19,3: context range 24 [document, 0, document, 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 24,20,0: context range 24 [document, 0, document, 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 24,20,1: context range 24 [document, 0, document, 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 24,20,2: context range 24 [document, 0, document, 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 24,20,3: context range 24 [document, 0, document, 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 24,21,0: context range 24 [document, 0, document, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 24,21,1: context range 24 [document, 0, document, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 24,21,2: context range 24 [document, 0, document, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 24,21,3: context range 24 [document, 0, document, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 24,22,0: context range 24 [document, 0, document, 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 24,22,1: context range 24 [document, 0, document, 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 24,22,2: context range 24 [document, 0, document, 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 24,22,3: context range 24 [document, 0, document, 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 24,23,0: context range 24 [document, 0, document, 1], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 24,23,1: context range 24 [document, 0, document, 1], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 24,23,2: context range 24 [document, 0, document, 1], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 24,23,3: context range 24 [document, 0, document, 1], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 24,24,0: context range 24 [document, 0, document, 1], argument range 24 [document, 0, document, 1], how 0 
+PASS 24,24,1: context range 24 [document, 0, document, 1], argument range 24 [document, 0, document, 1], how 1 
+PASS 24,24,2: context range 24 [document, 0, document, 1], argument range 24 [document, 0, document, 1], how 2 
+PASS 24,24,3: context range 24 [document, 0, document, 1], argument range 24 [document, 0, document, 1], how 3 
+PASS 24,25,0: context range 24 [document, 0, document, 1], argument range 25 [document, 0, document, 2], how 0 
+PASS 24,25,1: context range 24 [document, 0, document, 1], argument range 25 [document, 0, document, 2], how 1 
+PASS 24,25,2: context range 24 [document, 0, document, 1], argument range 25 [document, 0, document, 2], how 2 
+PASS 24,25,3: context range 24 [document, 0, document, 1], argument range 25 [document, 0, document, 2], how 3 
+PASS 24,26,0: context range 24 [document, 0, document, 1], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 24,26,1: context range 24 [document, 0, document, 1], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 24,26,2: context range 24 [document, 0, document, 1], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 24,26,3: context range 24 [document, 0, document, 1], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 24,27,0: context range 24 [document, 0, document, 1], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 24,27,1: context range 24 [document, 0, document, 1], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 24,27,2: context range 24 [document, 0, document, 1], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 24,27,3: context range 24 [document, 0, document, 1], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 24,28,0: context range 24 [document, 0, document, 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 24,28,1: context range 24 [document, 0, document, 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 24,28,2: context range 24 [document, 0, document, 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 24,28,3: context range 24 [document, 0, document, 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 24,29,0: context range 24 [document, 0, document, 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 24,29,1: context range 24 [document, 0, document, 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 24,29,2: context range 24 [document, 0, document, 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 24,29,3: context range 24 [document, 0, document, 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 24,30,0: context range 24 [document, 0, document, 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 24,30,1: context range 24 [document, 0, document, 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 24,30,2: context range 24 [document, 0, document, 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 24,30,3: context range 24 [document, 0, document, 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 24,31,0: context range 24 [document, 0, document, 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 24,31,1: context range 24 [document, 0, document, 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 24,31,2: context range 24 [document, 0, document, 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 24,31,3: context range 24 [document, 0, document, 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 24,32,0: context range 24 [document, 0, document, 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 24,32,1: context range 24 [document, 0, document, 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 24,32,2: context range 24 [document, 0, document, 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 24,32,3: context range 24 [document, 0, document, 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 24,33,0: context range 24 [document, 0, document, 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 24,33,1: context range 24 [document, 0, document, 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 24,33,2: context range 24 [document, 0, document, 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 24,33,3: context range 24 [document, 0, document, 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 24,34,0: context range 24 [document, 0, document, 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 24,34,1: context range 24 [document, 0, document, 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 24,34,2: context range 24 [document, 0, document, 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 24,34,3: context range 24 [document, 0, document, 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 24,35,0: context range 24 [document, 0, document, 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 24,35,1: context range 24 [document, 0, document, 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 24,35,2: context range 24 [document, 0, document, 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 24,35,3: context range 24 [document, 0, document, 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 24,36,0: context range 24 [document, 0, document, 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 24,36,1: context range 24 [document, 0, document, 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 24,36,2: context range 24 [document, 0, document, 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 24,36,3: context range 24 [document, 0, document, 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 24,37,0: context range 24 [document, 0, document, 1], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 24,37,1: context range 24 [document, 0, document, 1], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 24,37,2: context range 24 [document, 0, document, 1], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 24,37,3: context range 24 [document, 0, document, 1], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 24,38,0: context range 24 [document, 0, document, 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 24,38,1: context range 24 [document, 0, document, 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 24,38,2: context range 24 [document, 0, document, 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 24,38,3: context range 24 [document, 0, document, 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 24,39,0: context range 24 [document, 0, document, 1], argument range same as first range, how 0 
+PASS 24,39,1: context range 24 [document, 0, document, 1], argument range same as first range, how 1 
+PASS 24,39,2: context range 24 [document, 0, document, 1], argument range same as first range, how 2 
+PASS 24,39,3: context range 24 [document, 0, document, 1], argument range same as first range, how 3 
+PASS 25,0,0: context range 25 [document, 0, document, 2], argument range 0 [detached], how 0 
+PASS 25,0,1: context range 25 [document, 0, document, 2], argument range 0 [detached], how 1 
+PASS 25,0,2: context range 25 [document, 0, document, 2], argument range 0 [detached], how 2 
+PASS 25,0,3: context range 25 [document, 0, document, 2], argument range 0 [detached], how 3 
+PASS 25,1,0: context range 25 [document, 0, document, 2], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 25,1,1: context range 25 [document, 0, document, 2], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 25,1,2: context range 25 [document, 0, document, 2], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 25,1,3: context range 25 [document, 0, document, 2], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 25,2,0: context range 25 [document, 0, document, 2], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 25,2,1: context range 25 [document, 0, document, 2], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 25,2,2: context range 25 [document, 0, document, 2], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 25,2,3: context range 25 [document, 0, document, 2], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 25,3,0: context range 25 [document, 0, document, 2], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 25,3,1: context range 25 [document, 0, document, 2], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 25,3,2: context range 25 [document, 0, document, 2], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 25,3,3: context range 25 [document, 0, document, 2], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 25,4,0: context range 25 [document, 0, document, 2], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 25,4,1: context range 25 [document, 0, document, 2], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 25,4,2: context range 25 [document, 0, document, 2], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 25,4,3: context range 25 [document, 0, document, 2], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 25,5,0: context range 25 [document, 0, document, 2], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 25,5,1: context range 25 [document, 0, document, 2], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 25,5,2: context range 25 [document, 0, document, 2], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 25,5,3: context range 25 [document, 0, document, 2], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 25,6,0: context range 25 [document, 0, document, 2], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 25,6,1: context range 25 [document, 0, document, 2], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 25,6,2: context range 25 [document, 0, document, 2], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 25,6,3: context range 25 [document, 0, document, 2], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 25,7,0: context range 25 [document, 0, document, 2], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 25,7,1: context range 25 [document, 0, document, 2], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 25,7,2: context range 25 [document, 0, document, 2], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 25,7,3: context range 25 [document, 0, document, 2], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 25,8,0: context range 25 [document, 0, document, 2], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 25,8,1: context range 25 [document, 0, document, 2], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 25,8,2: context range 25 [document, 0, document, 2], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 25,8,3: context range 25 [document, 0, document, 2], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 25,9,0: context range 25 [document, 0, document, 2], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 25,9,1: context range 25 [document, 0, document, 2], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 25,9,2: context range 25 [document, 0, document, 2], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 25,9,3: context range 25 [document, 0, document, 2], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 25,10,0: context range 25 [document, 0, document, 2], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 25,10,1: context range 25 [document, 0, document, 2], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 25,10,2: context range 25 [document, 0, document, 2], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 25,10,3: context range 25 [document, 0, document, 2], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 25,11,0: context range 25 [document, 0, document, 2], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 25,11,1: context range 25 [document, 0, document, 2], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 25,11,2: context range 25 [document, 0, document, 2], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 25,11,3: context range 25 [document, 0, document, 2], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 25,12,0: context range 25 [document, 0, document, 2], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 25,12,1: context range 25 [document, 0, document, 2], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 25,12,2: context range 25 [document, 0, document, 2], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 25,12,3: context range 25 [document, 0, document, 2], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 25,13,0: context range 25 [document, 0, document, 2], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 25,13,1: context range 25 [document, 0, document, 2], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 25,13,2: context range 25 [document, 0, document, 2], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 25,13,3: context range 25 [document, 0, document, 2], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 25,14,0: context range 25 [document, 0, document, 2], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 25,14,1: context range 25 [document, 0, document, 2], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 25,14,2: context range 25 [document, 0, document, 2], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 25,14,3: context range 25 [document, 0, document, 2], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 25,15,0: context range 25 [document, 0, document, 2], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 25,15,1: context range 25 [document, 0, document, 2], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 25,15,2: context range 25 [document, 0, document, 2], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 25,15,3: context range 25 [document, 0, document, 2], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 25,16,0: context range 25 [document, 0, document, 2], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 25,16,1: context range 25 [document, 0, document, 2], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 25,16,2: context range 25 [document, 0, document, 2], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 25,16,3: context range 25 [document, 0, document, 2], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 25,17,0: context range 25 [document, 0, document, 2], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 25,17,1: context range 25 [document, 0, document, 2], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 25,17,2: context range 25 [document, 0, document, 2], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 25,17,3: context range 25 [document, 0, document, 2], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 25,18,0: context range 25 [document, 0, document, 2], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 25,18,1: context range 25 [document, 0, document, 2], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 25,18,2: context range 25 [document, 0, document, 2], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 25,18,3: context range 25 [document, 0, document, 2], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 25,19,0: context range 25 [document, 0, document, 2], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 25,19,1: context range 25 [document, 0, document, 2], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 25,19,2: context range 25 [document, 0, document, 2], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 25,19,3: context range 25 [document, 0, document, 2], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 25,20,0: context range 25 [document, 0, document, 2], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 25,20,1: context range 25 [document, 0, document, 2], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 25,20,2: context range 25 [document, 0, document, 2], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 25,20,3: context range 25 [document, 0, document, 2], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 25,21,0: context range 25 [document, 0, document, 2], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 25,21,1: context range 25 [document, 0, document, 2], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 25,21,2: context range 25 [document, 0, document, 2], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 25,21,3: context range 25 [document, 0, document, 2], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 25,22,0: context range 25 [document, 0, document, 2], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 25,22,1: context range 25 [document, 0, document, 2], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 25,22,2: context range 25 [document, 0, document, 2], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 25,22,3: context range 25 [document, 0, document, 2], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 25,23,0: context range 25 [document, 0, document, 2], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 25,23,1: context range 25 [document, 0, document, 2], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 25,23,2: context range 25 [document, 0, document, 2], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 25,23,3: context range 25 [document, 0, document, 2], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 25,24,0: context range 25 [document, 0, document, 2], argument range 24 [document, 0, document, 1], how 0 
+PASS 25,24,1: context range 25 [document, 0, document, 2], argument range 24 [document, 0, document, 1], how 1 
+PASS 25,24,2: context range 25 [document, 0, document, 2], argument range 24 [document, 0, document, 1], how 2 
+PASS 25,24,3: context range 25 [document, 0, document, 2], argument range 24 [document, 0, document, 1], how 3 
+PASS 25,25,0: context range 25 [document, 0, document, 2], argument range 25 [document, 0, document, 2], how 0 
+PASS 25,25,1: context range 25 [document, 0, document, 2], argument range 25 [document, 0, document, 2], how 1 
+PASS 25,25,2: context range 25 [document, 0, document, 2], argument range 25 [document, 0, document, 2], how 2 
+PASS 25,25,3: context range 25 [document, 0, document, 2], argument range 25 [document, 0, document, 2], how 3 
+PASS 25,26,0: context range 25 [document, 0, document, 2], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 25,26,1: context range 25 [document, 0, document, 2], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 25,26,2: context range 25 [document, 0, document, 2], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 25,26,3: context range 25 [document, 0, document, 2], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 25,27,0: context range 25 [document, 0, document, 2], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 25,27,1: context range 25 [document, 0, document, 2], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 25,27,2: context range 25 [document, 0, document, 2], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 25,27,3: context range 25 [document, 0, document, 2], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 25,28,0: context range 25 [document, 0, document, 2], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 25,28,1: context range 25 [document, 0, document, 2], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 25,28,2: context range 25 [document, 0, document, 2], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 25,28,3: context range 25 [document, 0, document, 2], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 25,29,0: context range 25 [document, 0, document, 2], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 25,29,1: context range 25 [document, 0, document, 2], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 25,29,2: context range 25 [document, 0, document, 2], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 25,29,3: context range 25 [document, 0, document, 2], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 25,30,0: context range 25 [document, 0, document, 2], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 25,30,1: context range 25 [document, 0, document, 2], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 25,30,2: context range 25 [document, 0, document, 2], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 25,30,3: context range 25 [document, 0, document, 2], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 25,31,0: context range 25 [document, 0, document, 2], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 25,31,1: context range 25 [document, 0, document, 2], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 25,31,2: context range 25 [document, 0, document, 2], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 25,31,3: context range 25 [document, 0, document, 2], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 25,32,0: context range 25 [document, 0, document, 2], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 25,32,1: context range 25 [document, 0, document, 2], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 25,32,2: context range 25 [document, 0, document, 2], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 25,32,3: context range 25 [document, 0, document, 2], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 25,33,0: context range 25 [document, 0, document, 2], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 25,33,1: context range 25 [document, 0, document, 2], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 25,33,2: context range 25 [document, 0, document, 2], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 25,33,3: context range 25 [document, 0, document, 2], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 25,34,0: context range 25 [document, 0, document, 2], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 25,34,1: context range 25 [document, 0, document, 2], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 25,34,2: context range 25 [document, 0, document, 2], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 25,34,3: context range 25 [document, 0, document, 2], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 25,35,0: context range 25 [document, 0, document, 2], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 25,35,1: context range 25 [document, 0, document, 2], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 25,35,2: context range 25 [document, 0, document, 2], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 25,35,3: context range 25 [document, 0, document, 2], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 25,36,0: context range 25 [document, 0, document, 2], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 25,36,1: context range 25 [document, 0, document, 2], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 25,36,2: context range 25 [document, 0, document, 2], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 25,36,3: context range 25 [document, 0, document, 2], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 25,37,0: context range 25 [document, 0, document, 2], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 25,37,1: context range 25 [document, 0, document, 2], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 25,37,2: context range 25 [document, 0, document, 2], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 25,37,3: context range 25 [document, 0, document, 2], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 25,38,0: context range 25 [document, 0, document, 2], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 25,38,1: context range 25 [document, 0, document, 2], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 25,38,2: context range 25 [document, 0, document, 2], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 25,38,3: context range 25 [document, 0, document, 2], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 25,39,0: context range 25 [document, 0, document, 2], argument range same as first range, how 0 
+PASS 25,39,1: context range 25 [document, 0, document, 2], argument range same as first range, how 1 
+PASS 25,39,2: context range 25 [document, 0, document, 2], argument range same as first range, how 2 
+PASS 25,39,3: context range 25 [document, 0, document, 2], argument range same as first range, how 3 
+PASS 26,0,0: context range 26 [comment, 2, comment, 3], argument range 0 [detached], how 0 
+PASS 26,0,1: context range 26 [comment, 2, comment, 3], argument range 0 [detached], how 1 
+PASS 26,0,2: context range 26 [comment, 2, comment, 3], argument range 0 [detached], how 2 
+PASS 26,0,3: context range 26 [comment, 2, comment, 3], argument range 0 [detached], how 3 
+PASS 26,1,0: context range 26 [comment, 2, comment, 3], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 26,1,1: context range 26 [comment, 2, comment, 3], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 26,1,2: context range 26 [comment, 2, comment, 3], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 26,1,3: context range 26 [comment, 2, comment, 3], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 26,2,0: context range 26 [comment, 2, comment, 3], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 26,2,1: context range 26 [comment, 2, comment, 3], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 26,2,2: context range 26 [comment, 2, comment, 3], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 26,2,3: context range 26 [comment, 2, comment, 3], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 26,3,0: context range 26 [comment, 2, comment, 3], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 26,3,1: context range 26 [comment, 2, comment, 3], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 26,3,2: context range 26 [comment, 2, comment, 3], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 26,3,3: context range 26 [comment, 2, comment, 3], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 26,4,0: context range 26 [comment, 2, comment, 3], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 26,4,1: context range 26 [comment, 2, comment, 3], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 26,4,2: context range 26 [comment, 2, comment, 3], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 26,4,3: context range 26 [comment, 2, comment, 3], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 26,5,0: context range 26 [comment, 2, comment, 3], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 26,5,1: context range 26 [comment, 2, comment, 3], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 26,5,2: context range 26 [comment, 2, comment, 3], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 26,5,3: context range 26 [comment, 2, comment, 3], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 26,6,0: context range 26 [comment, 2, comment, 3], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 26,6,1: context range 26 [comment, 2, comment, 3], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 26,6,2: context range 26 [comment, 2, comment, 3], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 26,6,3: context range 26 [comment, 2, comment, 3], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 26,7,0: context range 26 [comment, 2, comment, 3], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 26,7,1: context range 26 [comment, 2, comment, 3], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 26,7,2: context range 26 [comment, 2, comment, 3], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 26,7,3: context range 26 [comment, 2, comment, 3], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 26,8,0: context range 26 [comment, 2, comment, 3], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 26,8,1: context range 26 [comment, 2, comment, 3], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 26,8,2: context range 26 [comment, 2, comment, 3], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 26,8,3: context range 26 [comment, 2, comment, 3], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 26,9,0: context range 26 [comment, 2, comment, 3], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 26,9,1: context range 26 [comment, 2, comment, 3], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 26,9,2: context range 26 [comment, 2, comment, 3], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 26,9,3: context range 26 [comment, 2, comment, 3], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 26,10,0: context range 26 [comment, 2, comment, 3], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 26,10,1: context range 26 [comment, 2, comment, 3], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 26,10,2: context range 26 [comment, 2, comment, 3], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 26,10,3: context range 26 [comment, 2, comment, 3], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 26,11,0: context range 26 [comment, 2, comment, 3], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 26,11,1: context range 26 [comment, 2, comment, 3], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 26,11,2: context range 26 [comment, 2, comment, 3], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 26,11,3: context range 26 [comment, 2, comment, 3], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 26,12,0: context range 26 [comment, 2, comment, 3], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 26,12,1: context range 26 [comment, 2, comment, 3], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 26,12,2: context range 26 [comment, 2, comment, 3], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 26,12,3: context range 26 [comment, 2, comment, 3], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 26,13,0: context range 26 [comment, 2, comment, 3], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 26,13,1: context range 26 [comment, 2, comment, 3], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 26,13,2: context range 26 [comment, 2, comment, 3], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 26,13,3: context range 26 [comment, 2, comment, 3], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 26,14,0: context range 26 [comment, 2, comment, 3], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 26,14,1: context range 26 [comment, 2, comment, 3], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 26,14,2: context range 26 [comment, 2, comment, 3], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 26,14,3: context range 26 [comment, 2, comment, 3], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 26,15,0: context range 26 [comment, 2, comment, 3], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 26,15,1: context range 26 [comment, 2, comment, 3], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 26,15,2: context range 26 [comment, 2, comment, 3], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 26,15,3: context range 26 [comment, 2, comment, 3], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 26,16,0: context range 26 [comment, 2, comment, 3], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 26,16,1: context range 26 [comment, 2, comment, 3], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 26,16,2: context range 26 [comment, 2, comment, 3], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 26,16,3: context range 26 [comment, 2, comment, 3], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 26,17,0: context range 26 [comment, 2, comment, 3], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 26,17,1: context range 26 [comment, 2, comment, 3], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 26,17,2: context range 26 [comment, 2, comment, 3], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 26,17,3: context range 26 [comment, 2, comment, 3], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 26,18,0: context range 26 [comment, 2, comment, 3], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 26,18,1: context range 26 [comment, 2, comment, 3], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 26,18,2: context range 26 [comment, 2, comment, 3], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 26,18,3: context range 26 [comment, 2, comment, 3], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 26,19,0: context range 26 [comment, 2, comment, 3], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 26,19,1: context range 26 [comment, 2, comment, 3], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 26,19,2: context range 26 [comment, 2, comment, 3], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 26,19,3: context range 26 [comment, 2, comment, 3], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 26,20,0: context range 26 [comment, 2, comment, 3], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 26,20,1: context range 26 [comment, 2, comment, 3], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 26,20,2: context range 26 [comment, 2, comment, 3], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 26,20,3: context range 26 [comment, 2, comment, 3], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 26,21,0: context range 26 [comment, 2, comment, 3], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 26,21,1: context range 26 [comment, 2, comment, 3], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 26,21,2: context range 26 [comment, 2, comment, 3], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 26,21,3: context range 26 [comment, 2, comment, 3], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 26,22,0: context range 26 [comment, 2, comment, 3], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 26,22,1: context range 26 [comment, 2, comment, 3], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 26,22,2: context range 26 [comment, 2, comment, 3], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 26,22,3: context range 26 [comment, 2, comment, 3], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 26,23,0: context range 26 [comment, 2, comment, 3], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 26,23,1: context range 26 [comment, 2, comment, 3], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 26,23,2: context range 26 [comment, 2, comment, 3], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 26,23,3: context range 26 [comment, 2, comment, 3], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 26,24,0: context range 26 [comment, 2, comment, 3], argument range 24 [document, 0, document, 1], how 0 
+PASS 26,24,1: context range 26 [comment, 2, comment, 3], argument range 24 [document, 0, document, 1], how 1 
+PASS 26,24,2: context range 26 [comment, 2, comment, 3], argument range 24 [document, 0, document, 1], how 2 
+PASS 26,24,3: context range 26 [comment, 2, comment, 3], argument range 24 [document, 0, document, 1], how 3 
+PASS 26,25,0: context range 26 [comment, 2, comment, 3], argument range 25 [document, 0, document, 2], how 0 
+PASS 26,25,1: context range 26 [comment, 2, comment, 3], argument range 25 [document, 0, document, 2], how 1 
+PASS 26,25,2: context range 26 [comment, 2, comment, 3], argument range 25 [document, 0, document, 2], how 2 
+PASS 26,25,3: context range 26 [comment, 2, comment, 3], argument range 25 [document, 0, document, 2], how 3 
+PASS 26,26,0: context range 26 [comment, 2, comment, 3], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 26,26,1: context range 26 [comment, 2, comment, 3], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 26,26,2: context range 26 [comment, 2, comment, 3], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 26,26,3: context range 26 [comment, 2, comment, 3], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 26,27,0: context range 26 [comment, 2, comment, 3], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 26,27,1: context range 26 [comment, 2, comment, 3], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 26,27,2: context range 26 [comment, 2, comment, 3], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 26,27,3: context range 26 [comment, 2, comment, 3], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 26,28,0: context range 26 [comment, 2, comment, 3], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 26,28,1: context range 26 [comment, 2, comment, 3], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 26,28,2: context range 26 [comment, 2, comment, 3], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 26,28,3: context range 26 [comment, 2, comment, 3], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 26,29,0: context range 26 [comment, 2, comment, 3], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 26,29,1: context range 26 [comment, 2, comment, 3], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 26,29,2: context range 26 [comment, 2, comment, 3], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 26,29,3: context range 26 [comment, 2, comment, 3], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 26,30,0: context range 26 [comment, 2, comment, 3], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 26,30,1: context range 26 [comment, 2, comment, 3], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 26,30,2: context range 26 [comment, 2, comment, 3], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 26,30,3: context range 26 [comment, 2, comment, 3], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 26,31,0: context range 26 [comment, 2, comment, 3], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 26,31,1: context range 26 [comment, 2, comment, 3], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 26,31,2: context range 26 [comment, 2, comment, 3], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 26,31,3: context range 26 [comment, 2, comment, 3], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 26,32,0: context range 26 [comment, 2, comment, 3], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 26,32,1: context range 26 [comment, 2, comment, 3], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 26,32,2: context range 26 [comment, 2, comment, 3], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 26,32,3: context range 26 [comment, 2, comment, 3], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 26,33,0: context range 26 [comment, 2, comment, 3], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 26,33,1: context range 26 [comment, 2, comment, 3], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 26,33,2: context range 26 [comment, 2, comment, 3], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 26,33,3: context range 26 [comment, 2, comment, 3], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 26,34,0: context range 26 [comment, 2, comment, 3], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 26,34,1: context range 26 [comment, 2, comment, 3], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 26,34,2: context range 26 [comment, 2, comment, 3], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 26,34,3: context range 26 [comment, 2, comment, 3], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 26,35,0: context range 26 [comment, 2, comment, 3], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 26,35,1: context range 26 [comment, 2, comment, 3], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 26,35,2: context range 26 [comment, 2, comment, 3], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 26,35,3: context range 26 [comment, 2, comment, 3], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 26,36,0: context range 26 [comment, 2, comment, 3], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 26,36,1: context range 26 [comment, 2, comment, 3], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 26,36,2: context range 26 [comment, 2, comment, 3], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 26,36,3: context range 26 [comment, 2, comment, 3], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 26,37,0: context range 26 [comment, 2, comment, 3], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 26,37,1: context range 26 [comment, 2, comment, 3], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 26,37,2: context range 26 [comment, 2, comment, 3], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 26,37,3: context range 26 [comment, 2, comment, 3], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 26,38,0: context range 26 [comment, 2, comment, 3], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 26,38,1: context range 26 [comment, 2, comment, 3], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 26,38,2: context range 26 [comment, 2, comment, 3], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 26,38,3: context range 26 [comment, 2, comment, 3], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 26,39,0: context range 26 [comment, 2, comment, 3], argument range same as first range, how 0 
+PASS 26,39,1: context range 26 [comment, 2, comment, 3], argument range same as first range, how 1 
+PASS 26,39,2: context range 26 [comment, 2, comment, 3], argument range same as first range, how 2 
+PASS 26,39,3: context range 26 [comment, 2, comment, 3], argument range same as first range, how 3 
+PASS 27,0,0: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how 0 
+PASS 27,0,1: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how 1 
+PASS 27,0,2: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how 2 
+PASS 27,0,3: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how 3 
+PASS 27,0,4: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how -1 
+PASS 27,0,5: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how 4 
+PASS 27,0,6: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how 5 
+PASS 27,0,7: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how NaN 
+PASS 27,0,8: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how -0 
+PASS 27,0,9: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how Infinity 
+PASS 27,0,10: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how -Infinity 
+PASS 27,0,11: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how 65535 
+PASS 27,0,12: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how 65536 
+PASS 27,0,13: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how 65537 
+PASS 27,0,14: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how 65538 
+PASS 27,0,15: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how 65539 
+PASS 27,0,16: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how 65540 
+PASS 27,0,17: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how -65537 
+PASS 27,0,18: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how -65536 
+PASS 27,0,19: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how -65535 
+PASS 27,0,20: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how -65534 
+PASS 27,0,21: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how -65533 
+PASS 27,0,22: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how -65532 
+PASS 27,0,23: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how 4294967295 
+PASS 27,0,24: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how 4294967296 
+PASS 27,0,25: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how 4294967297 
+PASS 27,0,26: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how 4294967298 
+PASS 27,0,27: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how 4294967299 
+PASS 27,0,28: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how 4294967300 
+PASS 27,0,29: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how -0.5 
+PASS 27,0,30: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how 0.5 
+PASS 27,0,31: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how 1.5 
+PASS 27,0,32: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how 2.5 
+PASS 27,0,33: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how 3.5 
+PASS 27,0,34: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how 4.5 
+PASS 27,0,35: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how -1.5 
+PASS 27,0,36: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how -0.5 
+PASS 27,0,37: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how 0.5 
+PASS 27,0,38: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how 1.5 
+PASS 27,0,39: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how 2.5 
+PASS 27,0,40: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how 3.5 
+PASS 27,0,41: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how -73.5 
+PASS 27,0,42: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how -72.5 
+PASS 27,0,43: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how -71.5 
+PASS 27,0,44: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how -70.5 
+PASS 27,0,45: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how -69.5 
+PASS 27,0,46: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how -68.5 
+PASS 27,0,47: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;0&quot; 
+PASS 27,0,48: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;1&quot; 
+PASS 27,0,49: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;2&quot; 
+PASS 27,0,50: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;3&quot; 
+PASS 27,0,51: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;-1&quot; 
+PASS 27,0,52: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;4&quot; 
+PASS 27,0,53: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;5&quot; 
+PASS 27,0,54: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;NaN&quot; 
+PASS 27,0,55: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;0&quot; 
+PASS 27,0,56: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;Infinity&quot; 
+PASS 27,0,57: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;-Infinity&quot; 
+PASS 27,0,58: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;65535&quot; 
+PASS 27,0,59: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;65536&quot; 
+PASS 27,0,60: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;65537&quot; 
+PASS 27,0,61: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;65538&quot; 
+PASS 27,0,62: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;65539&quot; 
+PASS 27,0,63: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;65540&quot; 
+PASS 27,0,64: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;-65537&quot; 
+PASS 27,0,65: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;-65536&quot; 
+PASS 27,0,66: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;-65535&quot; 
+PASS 27,0,67: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;-65534&quot; 
+PASS 27,0,68: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;-65533&quot; 
+PASS 27,0,69: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;-65532&quot; 
+PASS 27,0,70: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;4294967295&quot; 
+PASS 27,0,71: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;4294967296&quot; 
+PASS 27,0,72: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;4294967297&quot; 
+PASS 27,0,73: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;4294967298&quot; 
+PASS 27,0,74: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;4294967299&quot; 
+PASS 27,0,75: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;4294967300&quot; 
+PASS 27,0,76: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;-0.5&quot; 
+PASS 27,0,77: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;0.5&quot; 
+PASS 27,0,78: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;1.5&quot; 
+PASS 27,0,79: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;2.5&quot; 
+PASS 27,0,80: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;3.5&quot; 
+PASS 27,0,81: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;4.5&quot; 
+PASS 27,0,82: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;-1.5&quot; 
+PASS 27,0,83: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;-0.5&quot; 
+PASS 27,0,84: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;0.5&quot; 
+PASS 27,0,85: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;1.5&quot; 
+PASS 27,0,86: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;2.5&quot; 
+PASS 27,0,87: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;3.5&quot; 
+PASS 27,0,88: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;-73.5&quot; 
+PASS 27,0,89: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;-72.5&quot; 
+PASS 27,0,90: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;-71.5&quot; 
+PASS 27,0,91: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;-70.5&quot; 
+PASS 27,0,92: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;-69.5&quot; 
+PASS 27,0,93: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;-68.5&quot; 
+PASS 27,0,94: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;6.5536e4&quot; 
+PASS 27,0,95: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how null 
+PASS 27,0,96: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how undefined 
+PASS 27,0,97: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how true 
+PASS 27,0,98: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how false 
+PASS 27,0,99: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;&quot; 
+PASS 27,0,100: context range 27 [testDiv, 0, comment, 5], argument range 0 [detached], how &quot;quasit&quot; 
+PASS 27,1,0: context range 27 [testDiv, 0, comment, 5], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 27,1,1: context range 27 [testDiv, 0, comment, 5], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 27,1,2: context range 27 [testDiv, 0, comment, 5], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 27,1,3: context range 27 [testDiv, 0, comment, 5], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 27,2,0: context range 27 [testDiv, 0, comment, 5], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 27,2,1: context range 27 [testDiv, 0, comment, 5], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 27,2,2: context range 27 [testDiv, 0, comment, 5], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 27,2,3: context range 27 [testDiv, 0, comment, 5], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 27,3,0: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 27,3,1: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 27,3,2: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 27,3,3: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 27,3,4: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -1 
+PASS 27,3,5: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4 
+PASS 27,3,6: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 5 
+PASS 27,3,7: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how NaN 
+PASS 27,3,8: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -0 
+PASS 27,3,9: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how Infinity 
+PASS 27,3,10: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -Infinity 
+PASS 27,3,11: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65535 
+PASS 27,3,12: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65536 
+PASS 27,3,13: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65537 
+PASS 27,3,14: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65538 
+PASS 27,3,15: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65539 
+PASS 27,3,16: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 65540 
+PASS 27,3,17: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65537 
+PASS 27,3,18: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65536 
+PASS 27,3,19: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65535 
+PASS 27,3,20: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65534 
+PASS 27,3,21: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65533 
+PASS 27,3,22: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -65532 
+PASS 27,3,23: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967295 
+PASS 27,3,24: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967296 
+PASS 27,3,25: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967297 
+PASS 27,3,26: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967298 
+PASS 27,3,27: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967299 
+PASS 27,3,28: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4294967300 
+PASS 27,3,29: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -0.5 
+PASS 27,3,30: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0.5 
+PASS 27,3,31: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1.5 
+PASS 27,3,32: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2.5 
+PASS 27,3,33: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3.5 
+PASS 27,3,34: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 4.5 
+PASS 27,3,35: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -1.5 
+PASS 27,3,36: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -0.5 
+PASS 27,3,37: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0.5 
+PASS 27,3,38: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1.5 
+PASS 27,3,39: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2.5 
+PASS 27,3,40: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3.5 
+PASS 27,3,41: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -73.5 
+PASS 27,3,42: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -72.5 
+PASS 27,3,43: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -71.5 
+PASS 27,3,44: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -70.5 
+PASS 27,3,45: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -69.5 
+PASS 27,3,46: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how -68.5 
+PASS 27,3,47: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;0&quot; 
+PASS 27,3,48: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;1&quot; 
+PASS 27,3,49: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;2&quot; 
+PASS 27,3,50: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;3&quot; 
+PASS 27,3,51: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-1&quot; 
+PASS 27,3,52: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4&quot; 
+PASS 27,3,53: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;5&quot; 
+PASS 27,3,54: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;NaN&quot; 
+PASS 27,3,55: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;0&quot; 
+PASS 27,3,56: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;Infinity&quot; 
+PASS 27,3,57: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-Infinity&quot; 
+PASS 27,3,58: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65535&quot; 
+PASS 27,3,59: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65536&quot; 
+PASS 27,3,60: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65537&quot; 
+PASS 27,3,61: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65538&quot; 
+PASS 27,3,62: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65539&quot; 
+PASS 27,3,63: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;65540&quot; 
+PASS 27,3,64: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65537&quot; 
+PASS 27,3,65: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65536&quot; 
+PASS 27,3,66: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65535&quot; 
+PASS 27,3,67: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65534&quot; 
+PASS 27,3,68: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65533&quot; 
+PASS 27,3,69: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-65532&quot; 
+PASS 27,3,70: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967295&quot; 
+PASS 27,3,71: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967296&quot; 
+PASS 27,3,72: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967297&quot; 
+PASS 27,3,73: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967298&quot; 
+PASS 27,3,74: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967299&quot; 
+PASS 27,3,75: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4294967300&quot; 
+PASS 27,3,76: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-0.5&quot; 
+PASS 27,3,77: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;0.5&quot; 
+PASS 27,3,78: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;1.5&quot; 
+PASS 27,3,79: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;2.5&quot; 
+PASS 27,3,80: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;3.5&quot; 
+PASS 27,3,81: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;4.5&quot; 
+PASS 27,3,82: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-1.5&quot; 
+PASS 27,3,83: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-0.5&quot; 
+PASS 27,3,84: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;0.5&quot; 
+PASS 27,3,85: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;1.5&quot; 
+PASS 27,3,86: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;2.5&quot; 
+PASS 27,3,87: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;3.5&quot; 
+PASS 27,3,88: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-73.5&quot; 
+PASS 27,3,89: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-72.5&quot; 
+PASS 27,3,90: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-71.5&quot; 
+PASS 27,3,91: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-70.5&quot; 
+PASS 27,3,92: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-69.5&quot; 
+PASS 27,3,93: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;-68.5&quot; 
+PASS 27,3,94: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;6.5536e4&quot; 
+PASS 27,3,95: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how null 
+PASS 27,3,96: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how undefined 
+PASS 27,3,97: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how true 
+PASS 27,3,98: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how false 
+PASS 27,3,99: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;&quot; 
+PASS 27,3,100: context range 27 [testDiv, 0, comment, 5], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how &quot;quasit&quot; 
+PASS 27,4,0: context range 27 [testDiv, 0, comment, 5], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 27,4,1: context range 27 [testDiv, 0, comment, 5], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 27,4,2: context range 27 [testDiv, 0, comment, 5], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 27,4,3: context range 27 [testDiv, 0, comment, 5], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 27,5,0: context range 27 [testDiv, 0, comment, 5], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 27,5,1: context range 27 [testDiv, 0, comment, 5], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 27,5,2: context range 27 [testDiv, 0, comment, 5], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 27,5,3: context range 27 [testDiv, 0, comment, 5], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 27,6,0: context range 27 [testDiv, 0, comment, 5], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 27,6,1: context range 27 [testDiv, 0, comment, 5], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 27,6,2: context range 27 [testDiv, 0, comment, 5], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 27,6,3: context range 27 [testDiv, 0, comment, 5], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 27,7,0: context range 27 [testDiv, 0, comment, 5], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 27,7,1: context range 27 [testDiv, 0, comment, 5], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 27,7,2: context range 27 [testDiv, 0, comment, 5], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 27,7,3: context range 27 [testDiv, 0, comment, 5], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 27,8,0: context range 27 [testDiv, 0, comment, 5], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 27,8,1: context range 27 [testDiv, 0, comment, 5], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 27,8,2: context range 27 [testDiv, 0, comment, 5], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 27,8,3: context range 27 [testDiv, 0, comment, 5], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 27,9,0: context range 27 [testDiv, 0, comment, 5], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 27,9,1: context range 27 [testDiv, 0, comment, 5], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 27,9,2: context range 27 [testDiv, 0, comment, 5], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 27,9,3: context range 27 [testDiv, 0, comment, 5], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 27,10,0: context range 27 [testDiv, 0, comment, 5], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 27,10,1: context range 27 [testDiv, 0, comment, 5], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 27,10,2: context range 27 [testDiv, 0, comment, 5], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 27,10,3: context range 27 [testDiv, 0, comment, 5], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 27,11,0: context range 27 [testDiv, 0, comment, 5], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 27,11,1: context range 27 [testDiv, 0, comment, 5], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 27,11,2: context range 27 [testDiv, 0, comment, 5], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 27,11,3: context range 27 [testDiv, 0, comment, 5], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 27,12,0: context range 27 [testDiv, 0, comment, 5], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 27,12,1: context range 27 [testDiv, 0, comment, 5], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 27,12,2: context range 27 [testDiv, 0, comment, 5], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 27,12,3: context range 27 [testDiv, 0, comment, 5], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 27,13,0: context range 27 [testDiv, 0, comment, 5], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 27,13,1: context range 27 [testDiv, 0, comment, 5], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 27,13,2: context range 27 [testDiv, 0, comment, 5], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 27,13,3: context range 27 [testDiv, 0, comment, 5], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 27,14,0: context range 27 [testDiv, 0, comment, 5], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 27,14,1: context range 27 [testDiv, 0, comment, 5], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 27,14,2: context range 27 [testDiv, 0, comment, 5], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 27,14,3: context range 27 [testDiv, 0, comment, 5], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 27,15,0: context range 27 [testDiv, 0, comment, 5], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 27,15,1: context range 27 [testDiv, 0, comment, 5], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 27,15,2: context range 27 [testDiv, 0, comment, 5], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 27,15,3: context range 27 [testDiv, 0, comment, 5], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 27,16,0: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 27,16,1: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 27,16,2: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 27,16,3: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 27,16,4: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -1 
+PASS 27,16,5: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4 
+PASS 27,16,6: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 5 
+PASS 27,16,7: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how NaN 
+PASS 27,16,8: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -0 
+PASS 27,16,9: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how Infinity 
+PASS 27,16,10: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -Infinity 
+PASS 27,16,11: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65535 
+PASS 27,16,12: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65536 
+PASS 27,16,13: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65537 
+PASS 27,16,14: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65538 
+PASS 27,16,15: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65539 
+PASS 27,16,16: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 65540 
+PASS 27,16,17: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65537 
+PASS 27,16,18: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65536 
+PASS 27,16,19: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65535 
+PASS 27,16,20: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65534 
+PASS 27,16,21: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65533 
+PASS 27,16,22: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -65532 
+PASS 27,16,23: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967295 
+PASS 27,16,24: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967296 
+PASS 27,16,25: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967297 
+PASS 27,16,26: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967298 
+PASS 27,16,27: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967299 
+PASS 27,16,28: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4294967300 
+PASS 27,16,29: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -0.5 
+PASS 27,16,30: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0.5 
+PASS 27,16,31: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1.5 
+PASS 27,16,32: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2.5 
+PASS 27,16,33: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3.5 
+PASS 27,16,34: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 4.5 
+PASS 27,16,35: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -1.5 
+PASS 27,16,36: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -0.5 
+PASS 27,16,37: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0.5 
+PASS 27,16,38: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1.5 
+PASS 27,16,39: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2.5 
+PASS 27,16,40: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3.5 
+PASS 27,16,41: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -73.5 
+PASS 27,16,42: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -72.5 
+PASS 27,16,43: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -71.5 
+PASS 27,16,44: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -70.5 
+PASS 27,16,45: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -69.5 
+PASS 27,16,46: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how -68.5 
+PASS 27,16,47: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;0&quot; 
+PASS 27,16,48: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;1&quot; 
+PASS 27,16,49: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;2&quot; 
+PASS 27,16,50: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;3&quot; 
+PASS 27,16,51: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-1&quot; 
+PASS 27,16,52: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4&quot; 
+PASS 27,16,53: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;5&quot; 
+PASS 27,16,54: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;NaN&quot; 
+PASS 27,16,55: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;0&quot; 
+PASS 27,16,56: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;Infinity&quot; 
+PASS 27,16,57: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-Infinity&quot; 
+PASS 27,16,58: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65535&quot; 
+PASS 27,16,59: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65536&quot; 
+PASS 27,16,60: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65537&quot; 
+PASS 27,16,61: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65538&quot; 
+PASS 27,16,62: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65539&quot; 
+PASS 27,16,63: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;65540&quot; 
+PASS 27,16,64: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65537&quot; 
+PASS 27,16,65: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65536&quot; 
+PASS 27,16,66: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65535&quot; 
+PASS 27,16,67: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65534&quot; 
+PASS 27,16,68: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65533&quot; 
+PASS 27,16,69: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-65532&quot; 
+PASS 27,16,70: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967295&quot; 
+PASS 27,16,71: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967296&quot; 
+PASS 27,16,72: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967297&quot; 
+PASS 27,16,73: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967298&quot; 
+PASS 27,16,74: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967299&quot; 
+PASS 27,16,75: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4294967300&quot; 
+PASS 27,16,76: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-0.5&quot; 
+PASS 27,16,77: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;0.5&quot; 
+PASS 27,16,78: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;1.5&quot; 
+PASS 27,16,79: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;2.5&quot; 
+PASS 27,16,80: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;3.5&quot; 
+PASS 27,16,81: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;4.5&quot; 
+PASS 27,16,82: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-1.5&quot; 
+PASS 27,16,83: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-0.5&quot; 
+PASS 27,16,84: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;0.5&quot; 
+PASS 27,16,85: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;1.5&quot; 
+PASS 27,16,86: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;2.5&quot; 
+PASS 27,16,87: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;3.5&quot; 
+PASS 27,16,88: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-73.5&quot; 
+PASS 27,16,89: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-72.5&quot; 
+PASS 27,16,90: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-71.5&quot; 
+PASS 27,16,91: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-70.5&quot; 
+PASS 27,16,92: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-69.5&quot; 
+PASS 27,16,93: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;-68.5&quot; 
+PASS 27,16,94: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;6.5536e4&quot; 
+PASS 27,16,95: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how null 
+PASS 27,16,96: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how undefined 
+PASS 27,16,97: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how true 
+PASS 27,16,98: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how false 
+PASS 27,16,99: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;&quot; 
+PASS 27,16,100: context range 27 [testDiv, 0, comment, 5], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how &quot;quasit&quot; 
+PASS 27,17,0: context range 27 [testDiv, 0, comment, 5], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 27,17,1: context range 27 [testDiv, 0, comment, 5], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 27,17,2: context range 27 [testDiv, 0, comment, 5], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 27,17,3: context range 27 [testDiv, 0, comment, 5], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 27,18,0: context range 27 [testDiv, 0, comment, 5], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 27,18,1: context range 27 [testDiv, 0, comment, 5], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 27,18,2: context range 27 [testDiv, 0, comment, 5], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 27,18,3: context range 27 [testDiv, 0, comment, 5], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 27,19,0: context range 27 [testDiv, 0, comment, 5], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 27,19,1: context range 27 [testDiv, 0, comment, 5], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 27,19,2: context range 27 [testDiv, 0, comment, 5], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 27,19,3: context range 27 [testDiv, 0, comment, 5], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 27,20,0: context range 27 [testDiv, 0, comment, 5], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 27,20,1: context range 27 [testDiv, 0, comment, 5], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 27,20,2: context range 27 [testDiv, 0, comment, 5], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 27,20,3: context range 27 [testDiv, 0, comment, 5], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 27,21,0: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 27,21,1: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 27,21,2: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 27,21,3: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 27,21,4: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -1 
+PASS 27,21,5: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4 
+PASS 27,21,6: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 5 
+PASS 27,21,7: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how NaN 
+PASS 27,21,8: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -0 
+PASS 27,21,9: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how Infinity 
+PASS 27,21,10: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -Infinity 
+PASS 27,21,11: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65535 
+PASS 27,21,12: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65536 
+PASS 27,21,13: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65537 
+PASS 27,21,14: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65538 
+PASS 27,21,15: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65539 
+PASS 27,21,16: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 65540 
+PASS 27,21,17: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65537 
+PASS 27,21,18: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65536 
+PASS 27,21,19: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65535 
+PASS 27,21,20: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65534 
+PASS 27,21,21: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65533 
+PASS 27,21,22: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -65532 
+PASS 27,21,23: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967295 
+PASS 27,21,24: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967296 
+PASS 27,21,25: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967297 
+PASS 27,21,26: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967298 
+PASS 27,21,27: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967299 
+PASS 27,21,28: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4294967300 
+PASS 27,21,29: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -0.5 
+PASS 27,21,30: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0.5 
+PASS 27,21,31: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1.5 
+PASS 27,21,32: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2.5 
+PASS 27,21,33: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3.5 
+PASS 27,21,34: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 4.5 
+PASS 27,21,35: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -1.5 
+PASS 27,21,36: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -0.5 
+PASS 27,21,37: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0.5 
+PASS 27,21,38: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1.5 
+PASS 27,21,39: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2.5 
+PASS 27,21,40: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3.5 
+PASS 27,21,41: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -73.5 
+PASS 27,21,42: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -72.5 
+PASS 27,21,43: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -71.5 
+PASS 27,21,44: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -70.5 
+PASS 27,21,45: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -69.5 
+PASS 27,21,46: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how -68.5 
+PASS 27,21,47: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;0&quot; 
+PASS 27,21,48: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;1&quot; 
+PASS 27,21,49: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;2&quot; 
+PASS 27,21,50: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;3&quot; 
+PASS 27,21,51: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-1&quot; 
+PASS 27,21,52: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4&quot; 
+PASS 27,21,53: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;5&quot; 
+PASS 27,21,54: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;NaN&quot; 
+PASS 27,21,55: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;0&quot; 
+PASS 27,21,56: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;Infinity&quot; 
+PASS 27,21,57: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-Infinity&quot; 
+PASS 27,21,58: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65535&quot; 
+PASS 27,21,59: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65536&quot; 
+PASS 27,21,60: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65537&quot; 
+PASS 27,21,61: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65538&quot; 
+PASS 27,21,62: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65539&quot; 
+PASS 27,21,63: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;65540&quot; 
+PASS 27,21,64: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65537&quot; 
+PASS 27,21,65: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65536&quot; 
+PASS 27,21,66: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65535&quot; 
+PASS 27,21,67: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65534&quot; 
+PASS 27,21,68: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65533&quot; 
+PASS 27,21,69: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-65532&quot; 
+PASS 27,21,70: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967295&quot; 
+PASS 27,21,71: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967296&quot; 
+PASS 27,21,72: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967297&quot; 
+PASS 27,21,73: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967298&quot; 
+PASS 27,21,74: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967299&quot; 
+PASS 27,21,75: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4294967300&quot; 
+PASS 27,21,76: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-0.5&quot; 
+PASS 27,21,77: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;0.5&quot; 
+PASS 27,21,78: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;1.5&quot; 
+PASS 27,21,79: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;2.5&quot; 
+PASS 27,21,80: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;3.5&quot; 
+PASS 27,21,81: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;4.5&quot; 
+PASS 27,21,82: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-1.5&quot; 
+PASS 27,21,83: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-0.5&quot; 
+PASS 27,21,84: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;0.5&quot; 
+PASS 27,21,85: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;1.5&quot; 
+PASS 27,21,86: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;2.5&quot; 
+PASS 27,21,87: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;3.5&quot; 
+PASS 27,21,88: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-73.5&quot; 
+PASS 27,21,89: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-72.5&quot; 
+PASS 27,21,90: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-71.5&quot; 
+PASS 27,21,91: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-70.5&quot; 
+PASS 27,21,92: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-69.5&quot; 
+PASS 27,21,93: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;-68.5&quot; 
+PASS 27,21,94: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;6.5536e4&quot; 
+PASS 27,21,95: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how null 
+PASS 27,21,96: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how undefined 
+PASS 27,21,97: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how true 
+PASS 27,21,98: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how false 
+PASS 27,21,99: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;&quot; 
+PASS 27,21,100: context range 27 [testDiv, 0, comment, 5], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how &quot;quasit&quot; 
+PASS 27,22,0: context range 27 [testDiv, 0, comment, 5], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 27,22,1: context range 27 [testDiv, 0, comment, 5], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 27,22,2: context range 27 [testDiv, 0, comment, 5], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 27,22,3: context range 27 [testDiv, 0, comment, 5], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 27,23,0: context range 27 [testDiv, 0, comment, 5], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 27,23,1: context range 27 [testDiv, 0, comment, 5], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 27,23,2: context range 27 [testDiv, 0, comment, 5], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 27,23,3: context range 27 [testDiv, 0, comment, 5], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 27,24,0: context range 27 [testDiv, 0, comment, 5], argument range 24 [document, 0, document, 1], how 0 
+PASS 27,24,1: context range 27 [testDiv, 0, comment, 5], argument range 24 [document, 0, document, 1], how 1 
+PASS 27,24,2: context range 27 [testDiv, 0, comment, 5], argument range 24 [document, 0, document, 1], how 2 
+PASS 27,24,3: context range 27 [testDiv, 0, comment, 5], argument range 24 [document, 0, document, 1], how 3 
+PASS 27,25,0: context range 27 [testDiv, 0, comment, 5], argument range 25 [document, 0, document, 2], how 0 
+PASS 27,25,1: context range 27 [testDiv, 0, comment, 5], argument range 25 [document, 0, document, 2], how 1 
+PASS 27,25,2: context range 27 [testDiv, 0, comment, 5], argument range 25 [document, 0, document, 2], how 2 
+PASS 27,25,3: context range 27 [testDiv, 0, comment, 5], argument range 25 [document, 0, document, 2], how 3 
+PASS 27,26,0: context range 27 [testDiv, 0, comment, 5], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 27,26,1: context range 27 [testDiv, 0, comment, 5], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 27,26,2: context range 27 [testDiv, 0, comment, 5], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 27,26,3: context range 27 [testDiv, 0, comment, 5], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 27,27,0: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 27,27,1: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 27,27,2: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 27,27,3: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 27,27,4: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how -1 
+PASS 27,27,5: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how 4 
+PASS 27,27,6: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how 5 
+PASS 27,27,7: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how NaN 
+PASS 27,27,8: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how -0 
+PASS 27,27,9: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how Infinity 
+PASS 27,27,10: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how -Infinity 
+PASS 27,27,11: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how 65535 
+PASS 27,27,12: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how 65536 
+PASS 27,27,13: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how 65537 
+PASS 27,27,14: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how 65538 
+PASS 27,27,15: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how 65539 
+PASS 27,27,16: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how 65540 
+PASS 27,27,17: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how -65537 
+PASS 27,27,18: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how -65536 
+PASS 27,27,19: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how -65535 
+PASS 27,27,20: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how -65534 
+PASS 27,27,21: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how -65533 
+PASS 27,27,22: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how -65532 
+PASS 27,27,23: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how 4294967295 
+PASS 27,27,24: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how 4294967296 
+PASS 27,27,25: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how 4294967297 
+PASS 27,27,26: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how 4294967298 
+PASS 27,27,27: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how 4294967299 
+PASS 27,27,28: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how 4294967300 
+PASS 27,27,29: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how -0.5 
+PASS 27,27,30: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how 0.5 
+PASS 27,27,31: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how 1.5 
+PASS 27,27,32: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how 2.5 
+PASS 27,27,33: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how 3.5 
+PASS 27,27,34: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how 4.5 
+PASS 27,27,35: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how -1.5 
+PASS 27,27,36: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how -0.5 
+PASS 27,27,37: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how 0.5 
+PASS 27,27,38: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how 1.5 
+PASS 27,27,39: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how 2.5 
+PASS 27,27,40: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how 3.5 
+PASS 27,27,41: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how -73.5 
+PASS 27,27,42: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how -72.5 
+PASS 27,27,43: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how -71.5 
+PASS 27,27,44: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how -70.5 
+PASS 27,27,45: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how -69.5 
+PASS 27,27,46: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how -68.5 
+PASS 27,27,47: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;0&quot; 
+PASS 27,27,48: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;1&quot; 
+PASS 27,27,49: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;2&quot; 
+PASS 27,27,50: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;3&quot; 
+PASS 27,27,51: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;-1&quot; 
+PASS 27,27,52: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;4&quot; 
+PASS 27,27,53: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;5&quot; 
+PASS 27,27,54: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;NaN&quot; 
+PASS 27,27,55: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;0&quot; 
+PASS 27,27,56: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;Infinity&quot; 
+PASS 27,27,57: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;-Infinity&quot; 
+PASS 27,27,58: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;65535&quot; 
+PASS 27,27,59: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;65536&quot; 
+PASS 27,27,60: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;65537&quot; 
+PASS 27,27,61: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;65538&quot; 
+PASS 27,27,62: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;65539&quot; 
+PASS 27,27,63: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;65540&quot; 
+PASS 27,27,64: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;-65537&quot; 
+PASS 27,27,65: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;-65536&quot; 
+PASS 27,27,66: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;-65535&quot; 
+PASS 27,27,67: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;-65534&quot; 
+PASS 27,27,68: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;-65533&quot; 
+PASS 27,27,69: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;-65532&quot; 
+PASS 27,27,70: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967295&quot; 
+PASS 27,27,71: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967296&quot; 
+PASS 27,27,72: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967297&quot; 
+PASS 27,27,73: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967298&quot; 
+PASS 27,27,74: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967299&quot; 
+PASS 27,27,75: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;4294967300&quot; 
+PASS 27,27,76: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;-0.5&quot; 
+PASS 27,27,77: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;0.5&quot; 
+PASS 27,27,78: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;1.5&quot; 
+PASS 27,27,79: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;2.5&quot; 
+PASS 27,27,80: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;3.5&quot; 
+PASS 27,27,81: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;4.5&quot; 
+PASS 27,27,82: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;-1.5&quot; 
+PASS 27,27,83: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;-0.5&quot; 
+PASS 27,27,84: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;0.5&quot; 
+PASS 27,27,85: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;1.5&quot; 
+PASS 27,27,86: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;2.5&quot; 
+PASS 27,27,87: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;3.5&quot; 
+PASS 27,27,88: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;-73.5&quot; 
+PASS 27,27,89: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;-72.5&quot; 
+PASS 27,27,90: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;-71.5&quot; 
+PASS 27,27,91: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;-70.5&quot; 
+PASS 27,27,92: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;-69.5&quot; 
+PASS 27,27,93: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;-68.5&quot; 
+PASS 27,27,94: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;6.5536e4&quot; 
+PASS 27,27,95: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how null 
+PASS 27,27,96: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how undefined 
+PASS 27,27,97: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how true 
+PASS 27,27,98: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how false 
+PASS 27,27,99: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;&quot; 
+PASS 27,27,100: context range 27 [testDiv, 0, comment, 5], argument range 27 [testDiv, 0, comment, 5], how &quot;quasit&quot; 
+PASS 27,28,0: context range 27 [testDiv, 0, comment, 5], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 27,28,1: context range 27 [testDiv, 0, comment, 5], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 27,28,2: context range 27 [testDiv, 0, comment, 5], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 27,28,3: context range 27 [testDiv, 0, comment, 5], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 27,29,0: context range 27 [testDiv, 0, comment, 5], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 27,29,1: context range 27 [testDiv, 0, comment, 5], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 27,29,2: context range 27 [testDiv, 0, comment, 5], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 27,29,3: context range 27 [testDiv, 0, comment, 5], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 27,30,0: context range 27 [testDiv, 0, comment, 5], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 27,30,1: context range 27 [testDiv, 0, comment, 5], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 27,30,2: context range 27 [testDiv, 0, comment, 5], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 27,30,3: context range 27 [testDiv, 0, comment, 5], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 27,31,0: context range 27 [testDiv, 0, comment, 5], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 27,31,1: context range 27 [testDiv, 0, comment, 5], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 27,31,2: context range 27 [testDiv, 0, comment, 5], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 27,31,3: context range 27 [testDiv, 0, comment, 5], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 27,32,0: context range 27 [testDiv, 0, comment, 5], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 27,32,1: context range 27 [testDiv, 0, comment, 5], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 27,32,2: context range 27 [testDiv, 0, comment, 5], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 27,32,3: context range 27 [testDiv, 0, comment, 5], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 27,33,0: context range 27 [testDiv, 0, comment, 5], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 27,33,1: context range 27 [testDiv, 0, comment, 5], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 27,33,2: context range 27 [testDiv, 0, comment, 5], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 27,33,3: context range 27 [testDiv, 0, comment, 5], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 27,34,0: context range 27 [testDiv, 0, comment, 5], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 27,34,1: context range 27 [testDiv, 0, comment, 5], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 27,34,2: context range 27 [testDiv, 0, comment, 5], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 27,34,3: context range 27 [testDiv, 0, comment, 5], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 27,35,0: context range 27 [testDiv, 0, comment, 5], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 27,35,1: context range 27 [testDiv, 0, comment, 5], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 27,35,2: context range 27 [testDiv, 0, comment, 5], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 27,35,3: context range 27 [testDiv, 0, comment, 5], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 27,36,0: context range 27 [testDiv, 0, comment, 5], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 27,36,1: context range 27 [testDiv, 0, comment, 5], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 27,36,2: context range 27 [testDiv, 0, comment, 5], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 27,36,3: context range 27 [testDiv, 0, comment, 5], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 27,37,0: context range 27 [testDiv, 0, comment, 5], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 27,37,1: context range 27 [testDiv, 0, comment, 5], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 27,37,2: context range 27 [testDiv, 0, comment, 5], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 27,37,3: context range 27 [testDiv, 0, comment, 5], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 27,38,0: context range 27 [testDiv, 0, comment, 5], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 27,38,1: context range 27 [testDiv, 0, comment, 5], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 27,38,2: context range 27 [testDiv, 0, comment, 5], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 27,38,3: context range 27 [testDiv, 0, comment, 5], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 27,39,0: context range 27 [testDiv, 0, comment, 5], argument range same as first range, how 0 
+PASS 27,39,1: context range 27 [testDiv, 0, comment, 5], argument range same as first range, how 1 
+PASS 27,39,2: context range 27 [testDiv, 0, comment, 5], argument range same as first range, how 2 
+PASS 27,39,3: context range 27 [testDiv, 0, comment, 5], argument range same as first range, how 3 
+PASS 28,0,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 0 [detached], how 0 
+PASS 28,0,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 0 [detached], how 1 
+PASS 28,0,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 0 [detached], how 2 
+PASS 28,0,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 0 [detached], how 3 
+PASS 28,1,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 28,1,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 28,1,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 28,1,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 28,2,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 28,2,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 28,2,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 28,2,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 28,3,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 28,3,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 28,3,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 28,3,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 28,4,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 28,4,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 28,4,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 28,4,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 28,5,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 28,5,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 28,5,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 28,5,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 28,6,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 28,6,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 28,6,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 28,6,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 28,7,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 28,7,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 28,7,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 28,7,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 28,8,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 28,8,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 28,8,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 28,8,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 28,9,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 28,9,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 28,9,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 28,9,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 28,10,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 28,10,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 28,10,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 28,10,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 28,11,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 28,11,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 28,11,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 28,11,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 28,12,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 28,12,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 28,12,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 28,12,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 28,13,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 28,13,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 28,13,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 28,13,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 28,14,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 28,14,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 28,14,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 28,14,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 28,15,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 28,15,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 28,15,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 28,15,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 28,16,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 28,16,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 28,16,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 28,16,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 28,17,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 28,17,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 28,17,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 28,17,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 28,18,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 28,18,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 28,18,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 28,18,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 28,19,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 28,19,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 28,19,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 28,19,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 28,20,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 28,20,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 28,20,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 28,20,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 28,21,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 28,21,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 28,21,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 28,21,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 28,22,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 28,22,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 28,22,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 28,22,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 28,23,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 28,23,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 28,23,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 28,23,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 28,24,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 24 [document, 0, document, 1], how 0 
+PASS 28,24,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 24 [document, 0, document, 1], how 1 
+PASS 28,24,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 24 [document, 0, document, 1], how 2 
+PASS 28,24,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 24 [document, 0, document, 1], how 3 
+PASS 28,25,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 25 [document, 0, document, 2], how 0 
+PASS 28,25,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 25 [document, 0, document, 2], how 1 
+PASS 28,25,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 25 [document, 0, document, 2], how 2 
+PASS 28,25,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 25 [document, 0, document, 2], how 3 
+PASS 28,26,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 28,26,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 28,26,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 28,26,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 28,27,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 28,27,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 28,27,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 28,27,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 28,28,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 28,28,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 28,28,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 28,28,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 28,29,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 28,29,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 28,29,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 28,29,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 28,30,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 28,30,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 28,30,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 28,30,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 28,31,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 28,31,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 28,31,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 28,31,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 28,32,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 28,32,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 28,32,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 28,32,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 28,33,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 28,33,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 28,33,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 28,33,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 28,34,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 28,34,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 28,34,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 28,34,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 28,35,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 28,35,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 28,35,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 28,35,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 28,36,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 28,36,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 28,36,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 28,36,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 28,37,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 28,37,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 28,37,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 28,37,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 28,38,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 28,38,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 28,38,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 28,38,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 28,39,0: context range 28 [foreignDoc, 1, foreignComment, 2], argument range same as first range, how 0 
+PASS 28,39,1: context range 28 [foreignDoc, 1, foreignComment, 2], argument range same as first range, how 1 
+PASS 28,39,2: context range 28 [foreignDoc, 1, foreignComment, 2], argument range same as first range, how 2 
+PASS 28,39,3: context range 28 [foreignDoc, 1, foreignComment, 2], argument range same as first range, how 3 
+PASS 29,0,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 0 [detached], how 0 
+PASS 29,0,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 0 [detached], how 1 
+PASS 29,0,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 0 [detached], how 2 
+PASS 29,0,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 0 [detached], how 3 
+PASS 29,1,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 29,1,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 29,1,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 29,1,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 29,2,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 29,2,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 29,2,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 29,2,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 29,3,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 29,3,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 29,3,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 29,3,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 29,4,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 29,4,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 29,4,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 29,4,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 29,5,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 29,5,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 29,5,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 29,5,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 29,6,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 29,6,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 29,6,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 29,6,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 29,7,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 29,7,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 29,7,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 29,7,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 29,8,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 29,8,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 29,8,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 29,8,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 29,9,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 29,9,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 29,9,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 29,9,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 29,10,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 29,10,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 29,10,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 29,10,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 29,11,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 29,11,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 29,11,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 29,11,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 29,12,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 29,12,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 29,12,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 29,12,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 29,13,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 29,13,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 29,13,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 29,13,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 29,14,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 29,14,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 29,14,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 29,14,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 29,15,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 29,15,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 29,15,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 29,15,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 29,16,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 29,16,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 29,16,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 29,16,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 29,17,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 29,17,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 29,17,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 29,17,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 29,18,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 29,18,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 29,18,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 29,18,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 29,19,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 29,19,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 29,19,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 29,19,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 29,20,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 29,20,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 29,20,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 29,20,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 29,21,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 29,21,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 29,21,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 29,21,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 29,22,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 29,22,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 29,22,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 29,22,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 29,23,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 29,23,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 29,23,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 29,23,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 29,24,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 24 [document, 0, document, 1], how 0 
+PASS 29,24,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 24 [document, 0, document, 1], how 1 
+PASS 29,24,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 24 [document, 0, document, 1], how 2 
+PASS 29,24,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 24 [document, 0, document, 1], how 3 
+PASS 29,25,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 25 [document, 0, document, 2], how 0 
+PASS 29,25,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 25 [document, 0, document, 2], how 1 
+PASS 29,25,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 25 [document, 0, document, 2], how 2 
+PASS 29,25,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 25 [document, 0, document, 2], how 3 
+PASS 29,26,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 29,26,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 29,26,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 29,26,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 29,27,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 29,27,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 29,27,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 29,27,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 29,28,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 29,28,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 29,28,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 29,28,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 29,29,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 29,29,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 29,29,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 29,29,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 29,30,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 29,30,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 29,30,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 29,30,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 29,31,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 29,31,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 29,31,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 29,31,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 29,32,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 29,32,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 29,32,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 29,32,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 29,33,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 29,33,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 29,33,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 29,33,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 29,34,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 29,34,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 29,34,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 29,34,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 29,35,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 29,35,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 29,35,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 29,35,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 29,36,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 29,36,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 29,36,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 29,36,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 29,37,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 29,37,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 29,37,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 29,37,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 29,38,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 29,38,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 29,38,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 29,38,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 29,39,0: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range same as first range, how 0 
+PASS 29,39,1: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range same as first range, how 1 
+PASS 29,39,2: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range same as first range, how 2 
+PASS 29,39,3: context range 29 [foreignDoc.body, 0, foreignTextNode, 36], argument range same as first range, how 3 
+PASS 30,0,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 0 [detached], how 0 
+PASS 30,0,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 0 [detached], how 1 
+PASS 30,0,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 0 [detached], how 2 
+PASS 30,0,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 0 [detached], how 3 
+PASS 30,1,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 30,1,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 30,1,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 30,1,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 30,2,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 30,2,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 30,2,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 30,2,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 30,3,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 30,3,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 30,3,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 30,3,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 30,4,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 30,4,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 30,4,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 30,4,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 30,5,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 30,5,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 30,5,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 30,5,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 30,6,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 30,6,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 30,6,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 30,6,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 30,7,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 30,7,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 30,7,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 30,7,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 30,8,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 30,8,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 30,8,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 30,8,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 30,9,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 30,9,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 30,9,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 30,9,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 30,10,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 30,10,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 30,10,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 30,10,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 30,11,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 30,11,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 30,11,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 30,11,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 30,12,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 30,12,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 30,12,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 30,12,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 30,13,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 30,13,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 30,13,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 30,13,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 30,14,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 30,14,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 30,14,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 30,14,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 30,15,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 30,15,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 30,15,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 30,15,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 30,16,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 30,16,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 30,16,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 30,16,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 30,17,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 30,17,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 30,17,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 30,17,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 30,18,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 30,18,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 30,18,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 30,18,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 30,19,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 30,19,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 30,19,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 30,19,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 30,20,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 30,20,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 30,20,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 30,20,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 30,21,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 30,21,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 30,21,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 30,21,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 30,22,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 30,22,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 30,22,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 30,22,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 30,23,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 30,23,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 30,23,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 30,23,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 30,24,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 24 [document, 0, document, 1], how 0 
+PASS 30,24,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 24 [document, 0, document, 1], how 1 
+PASS 30,24,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 24 [document, 0, document, 1], how 2 
+PASS 30,24,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 24 [document, 0, document, 1], how 3 
+PASS 30,25,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 25 [document, 0, document, 2], how 0 
+PASS 30,25,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 25 [document, 0, document, 2], how 1 
+PASS 30,25,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 25 [document, 0, document, 2], how 2 
+PASS 30,25,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 25 [document, 0, document, 2], how 3 
+PASS 30,26,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 30,26,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 30,26,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 30,26,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 30,27,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 30,27,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 30,27,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 30,27,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 30,28,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 30,28,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 30,28,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 30,28,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 30,29,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 30,29,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 30,29,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 30,29,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 30,30,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 30,30,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 30,30,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 30,30,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 30,31,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 30,31,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 30,31,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 30,31,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 30,32,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 30,32,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 30,32,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 30,32,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 30,33,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 30,33,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 30,33,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 30,33,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 30,34,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 30,34,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 30,34,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 30,34,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 30,35,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 30,35,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 30,35,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 30,35,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 30,36,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 30,36,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 30,36,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 30,36,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 30,37,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 30,37,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 30,37,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 30,37,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 30,38,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 30,38,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 30,38,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 30,38,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 30,39,0: context range 30 [xmlDoc, 1, xmlComment, 0], argument range same as first range, how 0 
+PASS 30,39,1: context range 30 [xmlDoc, 1, xmlComment, 0], argument range same as first range, how 1 
+PASS 30,39,2: context range 30 [xmlDoc, 1, xmlComment, 0], argument range same as first range, how 2 
+PASS 30,39,3: context range 30 [xmlDoc, 1, xmlComment, 0], argument range same as first range, how 3 
+PASS 31,0,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 0 [detached], how 0 
+PASS 31,0,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 0 [detached], how 1 
+PASS 31,0,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 0 [detached], how 2 
+PASS 31,0,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 0 [detached], how 3 
+PASS 31,1,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 31,1,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 31,1,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 31,1,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 31,2,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 31,2,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 31,2,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 31,2,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 31,3,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 31,3,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 31,3,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 31,3,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 31,4,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 31,4,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 31,4,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 31,4,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 31,5,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 31,5,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 31,5,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 31,5,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 31,6,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 31,6,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 31,6,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 31,6,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 31,7,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 31,7,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 31,7,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 31,7,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 31,8,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 31,8,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 31,8,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 31,8,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 31,9,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 31,9,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 31,9,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 31,9,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 31,10,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 31,10,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 31,10,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 31,10,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 31,11,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 31,11,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 31,11,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 31,11,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 31,12,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 31,12,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 31,12,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 31,12,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 31,13,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 31,13,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 31,13,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 31,13,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 31,14,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 31,14,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 31,14,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 31,14,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 31,15,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 31,15,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 31,15,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 31,15,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 31,16,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 31,16,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 31,16,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 31,16,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 31,17,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 31,17,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 31,17,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 31,17,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 31,18,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 31,18,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 31,18,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 31,18,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 31,19,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 31,19,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 31,19,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 31,19,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 31,20,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 31,20,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 31,20,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 31,20,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 31,21,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 31,21,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 31,21,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 31,21,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 31,22,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 31,22,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 31,22,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 31,22,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 31,23,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 31,23,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 31,23,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 31,23,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 31,24,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 24 [document, 0, document, 1], how 0 
+PASS 31,24,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 24 [document, 0, document, 1], how 1 
+PASS 31,24,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 24 [document, 0, document, 1], how 2 
+PASS 31,24,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 24 [document, 0, document, 1], how 3 
+PASS 31,25,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 25 [document, 0, document, 2], how 0 
+PASS 31,25,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 25 [document, 0, document, 2], how 1 
+PASS 31,25,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 25 [document, 0, document, 2], how 2 
+PASS 31,25,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 25 [document, 0, document, 2], how 3 
+PASS 31,26,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 31,26,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 31,26,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 31,26,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 31,27,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 31,27,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 31,27,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 31,27,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 31,28,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 31,28,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 31,28,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 31,28,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 31,29,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 31,29,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 31,29,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 31,29,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 31,30,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 31,30,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 31,30,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 31,30,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 31,31,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 31,31,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 31,31,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 31,31,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 31,32,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 31,32,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 31,32,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 31,32,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 31,33,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 31,33,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 31,33,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 31,33,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 31,34,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 31,34,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 31,34,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 31,34,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 31,35,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 31,35,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 31,35,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 31,35,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 31,36,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 31,36,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 31,36,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 31,36,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 31,37,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 31,37,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 31,37,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 31,37,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 31,38,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 31,38,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 31,38,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 31,38,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 31,39,0: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range same as first range, how 0 
+PASS 31,39,1: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range same as first range, how 1 
+PASS 31,39,2: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range same as first range, how 2 
+PASS 31,39,3: context range 31 [detachedTextNode, 0, detachedTextNode, 8], argument range same as first range, how 3 
+PASS 32,0,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 0 [detached], how 0 
+PASS 32,0,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 0 [detached], how 1 
+PASS 32,0,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 0 [detached], how 2 
+PASS 32,0,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 0 [detached], how 3 
+PASS 32,1,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 32,1,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 32,1,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 32,1,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 32,2,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 32,2,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 32,2,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 32,2,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 32,3,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 32,3,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 32,3,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 32,3,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 32,4,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 32,4,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 32,4,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 32,4,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 32,5,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 32,5,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 32,5,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 32,5,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 32,6,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 32,6,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 32,6,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 32,6,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 32,7,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 32,7,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 32,7,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 32,7,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 32,8,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 32,8,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 32,8,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 32,8,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 32,9,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 32,9,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 32,9,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 32,9,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 32,10,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 32,10,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 32,10,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 32,10,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 32,11,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 32,11,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 32,11,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 32,11,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 32,12,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 32,12,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 32,12,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 32,12,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 32,13,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 32,13,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 32,13,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 32,13,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 32,14,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 32,14,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 32,14,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 32,14,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 32,15,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 32,15,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 32,15,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 32,15,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 32,16,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 32,16,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 32,16,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 32,16,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 32,17,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 32,17,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 32,17,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 32,17,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 32,18,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 32,18,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 32,18,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 32,18,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 32,19,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 32,19,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 32,19,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 32,19,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 32,20,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 32,20,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 32,20,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 32,20,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 32,21,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 32,21,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 32,21,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 32,21,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 32,22,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 32,22,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 32,22,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 32,22,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 32,23,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 32,23,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 32,23,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 32,23,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 32,24,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 24 [document, 0, document, 1], how 0 
+PASS 32,24,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 24 [document, 0, document, 1], how 1 
+PASS 32,24,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 24 [document, 0, document, 1], how 2 
+PASS 32,24,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 24 [document, 0, document, 1], how 3 
+PASS 32,25,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 25 [document, 0, document, 2], how 0 
+PASS 32,25,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 25 [document, 0, document, 2], how 1 
+PASS 32,25,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 25 [document, 0, document, 2], how 2 
+PASS 32,25,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 25 [document, 0, document, 2], how 3 
+PASS 32,26,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 32,26,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 32,26,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 32,26,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 32,27,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 32,27,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 32,27,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 32,27,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 32,28,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 32,28,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 32,28,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 32,28,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 32,29,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 32,29,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 32,29,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 32,29,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 32,30,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 32,30,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 32,30,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 32,30,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 32,31,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 32,31,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 32,31,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 32,31,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 32,32,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 32,32,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 32,32,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 32,32,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 32,33,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 32,33,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 32,33,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 32,33,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 32,34,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 32,34,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 32,34,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 32,34,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 32,35,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 32,35,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 32,35,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 32,35,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 32,36,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 32,36,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 32,36,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 32,36,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 32,37,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 32,37,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 32,37,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 32,37,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 32,38,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 32,38,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 32,38,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 32,38,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 32,39,0: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range same as first range, how 0 
+PASS 32,39,1: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range same as first range, how 1 
+PASS 32,39,2: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range same as first range, how 2 
+PASS 32,39,3: context range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], argument range same as first range, how 3 
+PASS 33,0,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 0 [detached], how 0 
+PASS 33,0,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 0 [detached], how 1 
+PASS 33,0,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 0 [detached], how 2 
+PASS 33,0,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 0 [detached], how 3 
+PASS 33,1,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 33,1,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 33,1,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 33,1,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 33,2,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 33,2,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 33,2,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 33,2,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 33,3,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 33,3,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 33,3,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 33,3,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 33,4,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 33,4,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 33,4,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 33,4,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 33,5,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 33,5,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 33,5,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 33,5,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 33,6,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 33,6,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 33,6,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 33,6,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 33,7,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 33,7,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 33,7,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 33,7,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 33,8,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 33,8,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 33,8,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 33,8,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 33,9,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 33,9,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 33,9,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 33,9,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 33,10,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 33,10,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 33,10,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 33,10,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 33,11,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 33,11,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 33,11,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 33,11,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 33,12,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 33,12,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 33,12,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 33,12,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 33,13,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 33,13,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 33,13,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 33,13,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 33,14,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 33,14,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 33,14,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 33,14,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 33,15,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 33,15,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 33,15,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 33,15,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 33,16,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 33,16,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 33,16,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 33,16,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 33,17,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 33,17,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 33,17,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 33,17,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 33,18,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 33,18,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 33,18,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 33,18,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 33,19,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 33,19,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 33,19,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 33,19,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 33,20,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 33,20,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 33,20,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 33,20,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 33,21,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 33,21,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 33,21,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 33,21,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 33,22,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 33,22,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 33,22,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 33,22,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 33,23,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 33,23,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 33,23,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 33,23,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 33,24,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 24 [document, 0, document, 1], how 0 
+PASS 33,24,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 24 [document, 0, document, 1], how 1 
+PASS 33,24,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 24 [document, 0, document, 1], how 2 
+PASS 33,24,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 24 [document, 0, document, 1], how 3 
+PASS 33,25,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 25 [document, 0, document, 2], how 0 
+PASS 33,25,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 25 [document, 0, document, 2], how 1 
+PASS 33,25,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 25 [document, 0, document, 2], how 2 
+PASS 33,25,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 25 [document, 0, document, 2], how 3 
+PASS 33,26,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 33,26,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 33,26,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 33,26,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 33,27,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 33,27,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 33,27,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 33,27,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 33,28,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 33,28,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 33,28,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 33,28,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 33,29,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 33,29,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 33,29,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 33,29,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 33,30,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 33,30,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 33,30,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 33,30,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 33,31,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 33,31,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 33,31,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 33,31,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 33,32,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 33,32,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 33,32,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 33,32,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 33,33,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 33,33,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 33,33,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 33,33,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 33,34,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 33,34,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 33,34,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 33,34,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 33,35,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 33,35,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 33,35,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 33,35,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 33,36,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 33,36,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 33,36,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 33,36,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 33,37,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 33,37,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 33,37,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 33,37,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 33,38,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 33,38,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 33,38,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 33,38,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 33,39,0: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range same as first range, how 0 
+PASS 33,39,1: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range same as first range, how 1 
+PASS 33,39,2: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range same as first range, how 2 
+PASS 33,39,3: context range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], argument range same as first range, how 3 
+PASS 34,0,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 0 [detached], how 0 
+PASS 34,0,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 0 [detached], how 1 
+PASS 34,0,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 0 [detached], how 2 
+PASS 34,0,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 0 [detached], how 3 
+PASS 34,1,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 34,1,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 34,1,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 34,1,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 34,2,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 34,2,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 34,2,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 34,2,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 34,3,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 34,3,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 34,3,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 34,3,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 34,4,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 34,4,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 34,4,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 34,4,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 34,5,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 34,5,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 34,5,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 34,5,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 34,6,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 34,6,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 34,6,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 34,6,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 34,7,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 34,7,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 34,7,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 34,7,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 34,8,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 34,8,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 34,8,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 34,8,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 34,9,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 34,9,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 34,9,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 34,9,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 34,10,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 34,10,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 34,10,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 34,10,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 34,11,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 34,11,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 34,11,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 34,11,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 34,12,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 34,12,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 34,12,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 34,12,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 34,13,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 34,13,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 34,13,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 34,13,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 34,14,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 34,14,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 34,14,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 34,14,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 34,15,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 34,15,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 34,15,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 34,15,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 34,16,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 34,16,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 34,16,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 34,16,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 34,17,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 34,17,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 34,17,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 34,17,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 34,18,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 34,18,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 34,18,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 34,18,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 34,19,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 34,19,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 34,19,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 34,19,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 34,20,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 34,20,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 34,20,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 34,20,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 34,21,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 34,21,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 34,21,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 34,21,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 34,22,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 34,22,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 34,22,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 34,22,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 34,23,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 34,23,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 34,23,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 34,23,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 34,24,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 24 [document, 0, document, 1], how 0 
+PASS 34,24,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 24 [document, 0, document, 1], how 1 
+PASS 34,24,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 24 [document, 0, document, 1], how 2 
+PASS 34,24,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 24 [document, 0, document, 1], how 3 
+PASS 34,25,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 25 [document, 0, document, 2], how 0 
+PASS 34,25,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 25 [document, 0, document, 2], how 1 
+PASS 34,25,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 25 [document, 0, document, 2], how 2 
+PASS 34,25,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 25 [document, 0, document, 2], how 3 
+PASS 34,26,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 34,26,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 34,26,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 34,26,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 34,27,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 34,27,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 34,27,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 34,27,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 34,28,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 34,28,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 34,28,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 34,28,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 34,29,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 34,29,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 34,29,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 34,29,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 34,30,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 34,30,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 34,30,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 34,30,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 34,31,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 34,31,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 34,31,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 34,31,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 34,32,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 34,32,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 34,32,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 34,32,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 34,33,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 34,33,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 34,33,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 34,33,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 34,34,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 34,34,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 34,34,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 34,34,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 34,35,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 34,35,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 34,35,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 34,35,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 34,36,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 34,36,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 34,36,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 34,36,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 34,37,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 34,37,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 34,37,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 34,37,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 34,38,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 34,38,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 34,38,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 34,38,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 34,39,0: context range 34 [detachedComment, 3, detachedComment, 4], argument range same as first range, how 0 
+PASS 34,39,1: context range 34 [detachedComment, 3, detachedComment, 4], argument range same as first range, how 1 
+PASS 34,39,2: context range 34 [detachedComment, 3, detachedComment, 4], argument range same as first range, how 2 
+PASS 34,39,3: context range 34 [detachedComment, 3, detachedComment, 4], argument range same as first range, how 3 
+PASS 35,0,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 0 [detached], how 0 
+PASS 35,0,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 0 [detached], how 1 
+PASS 35,0,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 0 [detached], how 2 
+PASS 35,0,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 0 [detached], how 3 
+PASS 35,1,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 35,1,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 35,1,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 35,1,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 35,2,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 35,2,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 35,2,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 35,2,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 35,3,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 35,3,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 35,3,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 35,3,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 35,4,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 35,4,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 35,4,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 35,4,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 35,5,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 35,5,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 35,5,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 35,5,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 35,6,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 35,6,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 35,6,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 35,6,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 35,7,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 35,7,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 35,7,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 35,7,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 35,8,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 35,8,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 35,8,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 35,8,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 35,9,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 35,9,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 35,9,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 35,9,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 35,10,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 35,10,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 35,10,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 35,10,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 35,11,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 35,11,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 35,11,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 35,11,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 35,12,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 35,12,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 35,12,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 35,12,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 35,13,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 35,13,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 35,13,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 35,13,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 35,14,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 35,14,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 35,14,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 35,14,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 35,15,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 35,15,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 35,15,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 35,15,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 35,16,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 35,16,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 35,16,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 35,16,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 35,17,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 35,17,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 35,17,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 35,17,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 35,18,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 35,18,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 35,18,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 35,18,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 35,19,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 35,19,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 35,19,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 35,19,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 35,20,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 35,20,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 35,20,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 35,20,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 35,21,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 35,21,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 35,21,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 35,21,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 35,22,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 35,22,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 35,22,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 35,22,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 35,23,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 35,23,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 35,23,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 35,23,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 35,24,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 24 [document, 0, document, 1], how 0 
+PASS 35,24,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 24 [document, 0, document, 1], how 1 
+PASS 35,24,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 24 [document, 0, document, 1], how 2 
+PASS 35,24,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 24 [document, 0, document, 1], how 3 
+PASS 35,25,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 25 [document, 0, document, 2], how 0 
+PASS 35,25,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 25 [document, 0, document, 2], how 1 
+PASS 35,25,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 25 [document, 0, document, 2], how 2 
+PASS 35,25,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 25 [document, 0, document, 2], how 3 
+PASS 35,26,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 35,26,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 35,26,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 35,26,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 35,27,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 35,27,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 35,27,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 35,27,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 35,28,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 35,28,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 35,28,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 35,28,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 35,29,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 35,29,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 35,29,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 35,29,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 35,30,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 35,30,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 35,30,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 35,30,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 35,31,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 35,31,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 35,31,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 35,31,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 35,32,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 35,32,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 35,32,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 35,32,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 35,33,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 35,33,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 35,33,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 35,33,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 35,34,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 35,34,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 35,34,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 35,34,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 35,35,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 35,35,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 35,35,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 35,35,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 35,36,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 35,36,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 35,36,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 35,36,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 35,37,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 35,37,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 35,37,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 35,37,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 35,38,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 35,38,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 35,38,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 35,38,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 35,39,0: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range same as first range, how 0 
+PASS 35,39,1: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range same as first range, how 1 
+PASS 35,39,2: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range same as first range, how 2 
+PASS 35,39,3: context range 35 [detachedForeignComment, 0, detachedForeignComment, 1], argument range same as first range, how 3 
+PASS 36,0,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 0 [detached], how 0 
+PASS 36,0,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 0 [detached], how 1 
+PASS 36,0,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 0 [detached], how 2 
+PASS 36,0,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 0 [detached], how 3 
+PASS 36,1,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 36,1,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 36,1,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 36,1,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 36,2,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 36,2,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 36,2,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 36,2,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 36,3,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 36,3,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 36,3,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 36,3,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 36,4,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 36,4,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 36,4,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 36,4,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 36,5,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 36,5,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 36,5,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 36,5,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 36,6,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 36,6,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 36,6,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 36,6,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 36,7,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 36,7,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 36,7,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 36,7,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 36,8,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 36,8,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 36,8,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 36,8,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 36,9,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 36,9,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 36,9,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 36,9,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 36,10,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 36,10,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 36,10,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 36,10,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 36,11,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 36,11,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 36,11,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 36,11,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 36,12,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 36,12,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 36,12,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 36,12,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 36,13,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 36,13,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 36,13,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 36,13,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 36,14,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 36,14,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 36,14,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 36,14,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 36,15,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 36,15,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 36,15,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 36,15,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 36,16,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 36,16,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 36,16,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 36,16,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 36,17,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 36,17,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 36,17,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 36,17,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 36,18,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 36,18,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 36,18,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 36,18,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 36,19,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 36,19,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 36,19,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 36,19,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 36,20,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 36,20,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 36,20,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 36,20,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 36,21,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 36,21,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 36,21,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 36,21,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 36,22,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 36,22,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 36,22,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 36,22,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 36,23,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 36,23,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 36,23,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 36,23,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 36,24,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 24 [document, 0, document, 1], how 0 
+PASS 36,24,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 24 [document, 0, document, 1], how 1 
+PASS 36,24,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 24 [document, 0, document, 1], how 2 
+PASS 36,24,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 24 [document, 0, document, 1], how 3 
+PASS 36,25,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 25 [document, 0, document, 2], how 0 
+PASS 36,25,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 25 [document, 0, document, 2], how 1 
+PASS 36,25,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 25 [document, 0, document, 2], how 2 
+PASS 36,25,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 25 [document, 0, document, 2], how 3 
+PASS 36,26,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 36,26,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 36,26,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 36,26,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 36,27,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 36,27,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 36,27,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 36,27,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 36,28,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 36,28,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 36,28,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 36,28,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 36,29,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 36,29,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 36,29,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 36,29,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 36,30,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 36,30,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 36,30,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 36,30,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 36,31,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 36,31,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 36,31,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 36,31,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 36,32,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 36,32,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 36,32,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 36,32,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 36,33,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 36,33,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 36,33,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 36,33,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 36,34,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 36,34,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 36,34,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 36,34,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 36,35,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 36,35,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 36,35,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 36,35,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 36,36,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 36,36,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 36,36,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 36,36,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 36,37,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 36,37,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 36,37,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 36,37,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 36,38,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 36,38,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 36,38,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 36,38,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 36,39,0: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range same as first range, how 0 
+PASS 36,39,1: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range same as first range, how 1 
+PASS 36,39,2: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range same as first range, how 2 
+PASS 36,39,3: context range 36 [detachedXmlComment, 2, detachedXmlComment, 6], argument range same as first range, how 3 
+PASS 37,0,0: context range 37 [docfrag, 0, docfrag, 0], argument range 0 [detached], how 0 
+PASS 37,0,1: context range 37 [docfrag, 0, docfrag, 0], argument range 0 [detached], how 1 
+PASS 37,0,2: context range 37 [docfrag, 0, docfrag, 0], argument range 0 [detached], how 2 
+PASS 37,0,3: context range 37 [docfrag, 0, docfrag, 0], argument range 0 [detached], how 3 
+PASS 37,1,0: context range 37 [docfrag, 0, docfrag, 0], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 37,1,1: context range 37 [docfrag, 0, docfrag, 0], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 37,1,2: context range 37 [docfrag, 0, docfrag, 0], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 37,1,3: context range 37 [docfrag, 0, docfrag, 0], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 37,2,0: context range 37 [docfrag, 0, docfrag, 0], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 37,2,1: context range 37 [docfrag, 0, docfrag, 0], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 37,2,2: context range 37 [docfrag, 0, docfrag, 0], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 37,2,3: context range 37 [docfrag, 0, docfrag, 0], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 37,3,0: context range 37 [docfrag, 0, docfrag, 0], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 37,3,1: context range 37 [docfrag, 0, docfrag, 0], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 37,3,2: context range 37 [docfrag, 0, docfrag, 0], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 37,3,3: context range 37 [docfrag, 0, docfrag, 0], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 37,4,0: context range 37 [docfrag, 0, docfrag, 0], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 37,4,1: context range 37 [docfrag, 0, docfrag, 0], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 37,4,2: context range 37 [docfrag, 0, docfrag, 0], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 37,4,3: context range 37 [docfrag, 0, docfrag, 0], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 37,5,0: context range 37 [docfrag, 0, docfrag, 0], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 37,5,1: context range 37 [docfrag, 0, docfrag, 0], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 37,5,2: context range 37 [docfrag, 0, docfrag, 0], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 37,5,3: context range 37 [docfrag, 0, docfrag, 0], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 37,6,0: context range 37 [docfrag, 0, docfrag, 0], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 37,6,1: context range 37 [docfrag, 0, docfrag, 0], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 37,6,2: context range 37 [docfrag, 0, docfrag, 0], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 37,6,3: context range 37 [docfrag, 0, docfrag, 0], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 37,7,0: context range 37 [docfrag, 0, docfrag, 0], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 37,7,1: context range 37 [docfrag, 0, docfrag, 0], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 37,7,2: context range 37 [docfrag, 0, docfrag, 0], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 37,7,3: context range 37 [docfrag, 0, docfrag, 0], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 37,8,0: context range 37 [docfrag, 0, docfrag, 0], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 37,8,1: context range 37 [docfrag, 0, docfrag, 0], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 37,8,2: context range 37 [docfrag, 0, docfrag, 0], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 37,8,3: context range 37 [docfrag, 0, docfrag, 0], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 37,9,0: context range 37 [docfrag, 0, docfrag, 0], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 37,9,1: context range 37 [docfrag, 0, docfrag, 0], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 37,9,2: context range 37 [docfrag, 0, docfrag, 0], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 37,9,3: context range 37 [docfrag, 0, docfrag, 0], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 37,10,0: context range 37 [docfrag, 0, docfrag, 0], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 37,10,1: context range 37 [docfrag, 0, docfrag, 0], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 37,10,2: context range 37 [docfrag, 0, docfrag, 0], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 37,10,3: context range 37 [docfrag, 0, docfrag, 0], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 37,11,0: context range 37 [docfrag, 0, docfrag, 0], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 37,11,1: context range 37 [docfrag, 0, docfrag, 0], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 37,11,2: context range 37 [docfrag, 0, docfrag, 0], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 37,11,3: context range 37 [docfrag, 0, docfrag, 0], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 37,12,0: context range 37 [docfrag, 0, docfrag, 0], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 37,12,1: context range 37 [docfrag, 0, docfrag, 0], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 37,12,2: context range 37 [docfrag, 0, docfrag, 0], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 37,12,3: context range 37 [docfrag, 0, docfrag, 0], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 37,13,0: context range 37 [docfrag, 0, docfrag, 0], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 37,13,1: context range 37 [docfrag, 0, docfrag, 0], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 37,13,2: context range 37 [docfrag, 0, docfrag, 0], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 37,13,3: context range 37 [docfrag, 0, docfrag, 0], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 37,14,0: context range 37 [docfrag, 0, docfrag, 0], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 37,14,1: context range 37 [docfrag, 0, docfrag, 0], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 37,14,2: context range 37 [docfrag, 0, docfrag, 0], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 37,14,3: context range 37 [docfrag, 0, docfrag, 0], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 37,15,0: context range 37 [docfrag, 0, docfrag, 0], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 37,15,1: context range 37 [docfrag, 0, docfrag, 0], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 37,15,2: context range 37 [docfrag, 0, docfrag, 0], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 37,15,3: context range 37 [docfrag, 0, docfrag, 0], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 37,16,0: context range 37 [docfrag, 0, docfrag, 0], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 37,16,1: context range 37 [docfrag, 0, docfrag, 0], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 37,16,2: context range 37 [docfrag, 0, docfrag, 0], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 37,16,3: context range 37 [docfrag, 0, docfrag, 0], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 37,17,0: context range 37 [docfrag, 0, docfrag, 0], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 37,17,1: context range 37 [docfrag, 0, docfrag, 0], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 37,17,2: context range 37 [docfrag, 0, docfrag, 0], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 37,17,3: context range 37 [docfrag, 0, docfrag, 0], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 37,18,0: context range 37 [docfrag, 0, docfrag, 0], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 37,18,1: context range 37 [docfrag, 0, docfrag, 0], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 37,18,2: context range 37 [docfrag, 0, docfrag, 0], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 37,18,3: context range 37 [docfrag, 0, docfrag, 0], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 37,19,0: context range 37 [docfrag, 0, docfrag, 0], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 37,19,1: context range 37 [docfrag, 0, docfrag, 0], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 37,19,2: context range 37 [docfrag, 0, docfrag, 0], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 37,19,3: context range 37 [docfrag, 0, docfrag, 0], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 37,20,0: context range 37 [docfrag, 0, docfrag, 0], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 37,20,1: context range 37 [docfrag, 0, docfrag, 0], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 37,20,2: context range 37 [docfrag, 0, docfrag, 0], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 37,20,3: context range 37 [docfrag, 0, docfrag, 0], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 37,21,0: context range 37 [docfrag, 0, docfrag, 0], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 37,21,1: context range 37 [docfrag, 0, docfrag, 0], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 37,21,2: context range 37 [docfrag, 0, docfrag, 0], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 37,21,3: context range 37 [docfrag, 0, docfrag, 0], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 37,22,0: context range 37 [docfrag, 0, docfrag, 0], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 37,22,1: context range 37 [docfrag, 0, docfrag, 0], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 37,22,2: context range 37 [docfrag, 0, docfrag, 0], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 37,22,3: context range 37 [docfrag, 0, docfrag, 0], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 37,23,0: context range 37 [docfrag, 0, docfrag, 0], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 37,23,1: context range 37 [docfrag, 0, docfrag, 0], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 37,23,2: context range 37 [docfrag, 0, docfrag, 0], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 37,23,3: context range 37 [docfrag, 0, docfrag, 0], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 37,24,0: context range 37 [docfrag, 0, docfrag, 0], argument range 24 [document, 0, document, 1], how 0 
+PASS 37,24,1: context range 37 [docfrag, 0, docfrag, 0], argument range 24 [document, 0, document, 1], how 1 
+PASS 37,24,2: context range 37 [docfrag, 0, docfrag, 0], argument range 24 [document, 0, document, 1], how 2 
+PASS 37,24,3: context range 37 [docfrag, 0, docfrag, 0], argument range 24 [document, 0, document, 1], how 3 
+PASS 37,25,0: context range 37 [docfrag, 0, docfrag, 0], argument range 25 [document, 0, document, 2], how 0 
+PASS 37,25,1: context range 37 [docfrag, 0, docfrag, 0], argument range 25 [document, 0, document, 2], how 1 
+PASS 37,25,2: context range 37 [docfrag, 0, docfrag, 0], argument range 25 [document, 0, document, 2], how 2 
+PASS 37,25,3: context range 37 [docfrag, 0, docfrag, 0], argument range 25 [document, 0, document, 2], how 3 
+PASS 37,26,0: context range 37 [docfrag, 0, docfrag, 0], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 37,26,1: context range 37 [docfrag, 0, docfrag, 0], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 37,26,2: context range 37 [docfrag, 0, docfrag, 0], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 37,26,3: context range 37 [docfrag, 0, docfrag, 0], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 37,27,0: context range 37 [docfrag, 0, docfrag, 0], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 37,27,1: context range 37 [docfrag, 0, docfrag, 0], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 37,27,2: context range 37 [docfrag, 0, docfrag, 0], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 37,27,3: context range 37 [docfrag, 0, docfrag, 0], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 37,28,0: context range 37 [docfrag, 0, docfrag, 0], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 37,28,1: context range 37 [docfrag, 0, docfrag, 0], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 37,28,2: context range 37 [docfrag, 0, docfrag, 0], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 37,28,3: context range 37 [docfrag, 0, docfrag, 0], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 37,29,0: context range 37 [docfrag, 0, docfrag, 0], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 37,29,1: context range 37 [docfrag, 0, docfrag, 0], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 37,29,2: context range 37 [docfrag, 0, docfrag, 0], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 37,29,3: context range 37 [docfrag, 0, docfrag, 0], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 37,30,0: context range 37 [docfrag, 0, docfrag, 0], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 37,30,1: context range 37 [docfrag, 0, docfrag, 0], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 37,30,2: context range 37 [docfrag, 0, docfrag, 0], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 37,30,3: context range 37 [docfrag, 0, docfrag, 0], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 37,31,0: context range 37 [docfrag, 0, docfrag, 0], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 37,31,1: context range 37 [docfrag, 0, docfrag, 0], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 37,31,2: context range 37 [docfrag, 0, docfrag, 0], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 37,31,3: context range 37 [docfrag, 0, docfrag, 0], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 37,32,0: context range 37 [docfrag, 0, docfrag, 0], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 37,32,1: context range 37 [docfrag, 0, docfrag, 0], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 37,32,2: context range 37 [docfrag, 0, docfrag, 0], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 37,32,3: context range 37 [docfrag, 0, docfrag, 0], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 37,33,0: context range 37 [docfrag, 0, docfrag, 0], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 37,33,1: context range 37 [docfrag, 0, docfrag, 0], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 37,33,2: context range 37 [docfrag, 0, docfrag, 0], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 37,33,3: context range 37 [docfrag, 0, docfrag, 0], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 37,34,0: context range 37 [docfrag, 0, docfrag, 0], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 37,34,1: context range 37 [docfrag, 0, docfrag, 0], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 37,34,2: context range 37 [docfrag, 0, docfrag, 0], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 37,34,3: context range 37 [docfrag, 0, docfrag, 0], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 37,35,0: context range 37 [docfrag, 0, docfrag, 0], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 37,35,1: context range 37 [docfrag, 0, docfrag, 0], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 37,35,2: context range 37 [docfrag, 0, docfrag, 0], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 37,35,3: context range 37 [docfrag, 0, docfrag, 0], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 37,36,0: context range 37 [docfrag, 0, docfrag, 0], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 37,36,1: context range 37 [docfrag, 0, docfrag, 0], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 37,36,2: context range 37 [docfrag, 0, docfrag, 0], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 37,36,3: context range 37 [docfrag, 0, docfrag, 0], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 37,37,0: context range 37 [docfrag, 0, docfrag, 0], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 37,37,1: context range 37 [docfrag, 0, docfrag, 0], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 37,37,2: context range 37 [docfrag, 0, docfrag, 0], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 37,37,3: context range 37 [docfrag, 0, docfrag, 0], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 37,38,0: context range 37 [docfrag, 0, docfrag, 0], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 37,38,1: context range 37 [docfrag, 0, docfrag, 0], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 37,38,2: context range 37 [docfrag, 0, docfrag, 0], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 37,38,3: context range 37 [docfrag, 0, docfrag, 0], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 37,39,0: context range 37 [docfrag, 0, docfrag, 0], argument range same as first range, how 0 
+PASS 37,39,1: context range 37 [docfrag, 0, docfrag, 0], argument range same as first range, how 1 
+PASS 37,39,2: context range 37 [docfrag, 0, docfrag, 0], argument range same as first range, how 2 
+PASS 37,39,3: context range 37 [docfrag, 0, docfrag, 0], argument range same as first range, how 3 
+PASS 38,0,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 0 [detached], how 0 
+PASS 38,0,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 0 [detached], how 1 
+PASS 38,0,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 0 [detached], how 2 
+PASS 38,0,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 0 [detached], how 3 
+PASS 38,1,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 0 
+PASS 38,1,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 1 
+PASS 38,1,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 2 
+PASS 38,1,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 1 [paras[0].firstChild, 0, paras[0].firstChild, 0], how 3 
+PASS 38,2,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 0 
+PASS 38,2,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 1 
+PASS 38,2,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 2 
+PASS 38,2,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 2 [paras[0].firstChild, 0, paras[0].firstChild, 1], how 3 
+PASS 38,3,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 0 
+PASS 38,3,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 1 
+PASS 38,3,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 2 
+PASS 38,3,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 3 [paras[0].firstChild, 2, paras[0].firstChild, 8], how 3 
+PASS 38,4,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 0 
+PASS 38,4,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 1 
+PASS 38,4,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 2 
+PASS 38,4,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 4 [paras[0].firstChild, 2, paras[0].firstChild, 9], how 3 
+PASS 38,5,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 38,5,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 38,5,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 38,5,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 5 [paras[1].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 38,6,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 0 
+PASS 38,6,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 1 
+PASS 38,6,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 2 
+PASS 38,6,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 6 [paras[1].firstChild, 2, paras[1].firstChild, 9], how 3 
+PASS 38,7,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 0 
+PASS 38,7,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 1 
+PASS 38,7,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 2 
+PASS 38,7,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 7 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], how 3 
+PASS 38,8,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 0 
+PASS 38,8,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 1 
+PASS 38,8,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 2 
+PASS 38,8,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 8 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], how 3 
+PASS 38,9,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 0 
+PASS 38,9,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 1 
+PASS 38,9,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 2 
+PASS 38,9,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 9 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], how 3 
+PASS 38,10,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 0 
+PASS 38,10,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 1 
+PASS 38,10,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 2 
+PASS 38,10,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 10 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], how 3 
+PASS 38,11,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 0 
+PASS 38,11,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 1 
+PASS 38,11,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 2 
+PASS 38,11,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 11 [document.documentElement, 0, document.documentElement, 1], how 3 
+PASS 38,12,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 0 
+PASS 38,12,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 1 
+PASS 38,12,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 2 
+PASS 38,12,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 12 [document.documentElement, 0, document.documentElement, 2], how 3 
+PASS 38,13,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 0 
+PASS 38,13,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 1 
+PASS 38,13,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 2 
+PASS 38,13,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 13 [document.documentElement, 1, document.documentElement, 2], how 3 
+PASS 38,14,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 14 [document.head, 1, document.head, 1], how 0 
+PASS 38,14,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 14 [document.head, 1, document.head, 1], how 1 
+PASS 38,14,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 14 [document.head, 1, document.head, 1], how 2 
+PASS 38,14,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 14 [document.head, 1, document.head, 1], how 3 
+PASS 38,15,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 15 [document.body, 4, document.body, 5], how 0 
+PASS 38,15,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 15 [document.body, 4, document.body, 5], how 1 
+PASS 38,15,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 15 [document.body, 4, document.body, 5], how 2 
+PASS 38,15,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 15 [document.body, 4, document.body, 5], how 3 
+PASS 38,16,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 0 
+PASS 38,16,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 1 
+PASS 38,16,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 2 
+PASS 38,16,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 16 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], how 3 
+PASS 38,17,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 17 [paras[0], 0, paras[0], 1], how 0 
+PASS 38,17,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 17 [paras[0], 0, paras[0], 1], how 1 
+PASS 38,17,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 17 [paras[0], 0, paras[0], 1], how 2 
+PASS 38,17,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 17 [paras[0], 0, paras[0], 1], how 3 
+PASS 38,18,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 0 
+PASS 38,18,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 1 
+PASS 38,18,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 2 
+PASS 38,18,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 18 [detachedPara1, 0, detachedPara1, 1], how 3 
+PASS 38,19,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 0 
+PASS 38,19,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 1 
+PASS 38,19,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 2 
+PASS 38,19,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 19 [paras[0].firstChild, 0, paras[1].firstChild, 0], how 3 
+PASS 38,20,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 0 
+PASS 38,20,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 1 
+PASS 38,20,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 2 
+PASS 38,20,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 20 [paras[0].firstChild, 0, paras[1].firstChild, 8], how 3 
+PASS 38,21,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 0 
+PASS 38,21,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 1 
+PASS 38,21,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 2 
+PASS 38,21,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 21 [paras[0].firstChild, 3, paras[3], 1], how 3 
+PASS 38,22,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 0 
+PASS 38,22,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 1 
+PASS 38,22,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 2 
+PASS 38,22,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 22 [paras[0], 0, paras[0].firstChild, 7], how 3 
+PASS 38,23,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 23 [testDiv, 2, paras[4], 1], how 0 
+PASS 38,23,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 23 [testDiv, 2, paras[4], 1], how 1 
+PASS 38,23,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 23 [testDiv, 2, paras[4], 1], how 2 
+PASS 38,23,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 23 [testDiv, 2, paras[4], 1], how 3 
+PASS 38,24,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 24 [document, 0, document, 1], how 0 
+PASS 38,24,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 24 [document, 0, document, 1], how 1 
+PASS 38,24,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 24 [document, 0, document, 1], how 2 
+PASS 38,24,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 24 [document, 0, document, 1], how 3 
+PASS 38,25,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 25 [document, 0, document, 2], how 0 
+PASS 38,25,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 25 [document, 0, document, 2], how 1 
+PASS 38,25,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 25 [document, 0, document, 2], how 2 
+PASS 38,25,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 25 [document, 0, document, 2], how 3 
+PASS 38,26,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 26 [comment, 2, comment, 3], how 0 
+PASS 38,26,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 26 [comment, 2, comment, 3], how 1 
+PASS 38,26,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 26 [comment, 2, comment, 3], how 2 
+PASS 38,26,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 26 [comment, 2, comment, 3], how 3 
+PASS 38,27,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 27 [testDiv, 0, comment, 5], how 0 
+PASS 38,27,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 27 [testDiv, 0, comment, 5], how 1 
+PASS 38,27,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 27 [testDiv, 0, comment, 5], how 2 
+PASS 38,27,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 27 [testDiv, 0, comment, 5], how 3 
+PASS 38,28,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 28 [foreignDoc, 1, foreignComment, 2], how 0 
+PASS 38,28,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 28 [foreignDoc, 1, foreignComment, 2], how 1 
+PASS 38,28,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 28 [foreignDoc, 1, foreignComment, 2], how 2 
+PASS 38,28,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 28 [foreignDoc, 1, foreignComment, 2], how 3 
+PASS 38,29,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 0 
+PASS 38,29,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 1 
+PASS 38,29,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 2 
+PASS 38,29,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 29 [foreignDoc.body, 0, foreignTextNode, 36], how 3 
+PASS 38,30,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 30 [xmlDoc, 1, xmlComment, 0], how 0 
+PASS 38,30,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 30 [xmlDoc, 1, xmlComment, 0], how 1 
+PASS 38,30,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 30 [xmlDoc, 1, xmlComment, 0], how 2 
+PASS 38,30,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 30 [xmlDoc, 1, xmlComment, 0], how 3 
+PASS 38,31,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 0 
+PASS 38,31,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 1 
+PASS 38,31,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 2 
+PASS 38,31,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 31 [detachedTextNode, 0, detachedTextNode, 8], how 3 
+PASS 38,32,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 0 
+PASS 38,32,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 1 
+PASS 38,32,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 2 
+PASS 38,32,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 32 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], how 3 
+PASS 38,33,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 0 
+PASS 38,33,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 1 
+PASS 38,33,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 2 
+PASS 38,33,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 33 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], how 3 
+PASS 38,34,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 34 [detachedComment, 3, detachedComment, 4], how 0 
+PASS 38,34,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 34 [detachedComment, 3, detachedComment, 4], how 1 
+PASS 38,34,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 34 [detachedComment, 3, detachedComment, 4], how 2 
+PASS 38,34,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 34 [detachedComment, 3, detachedComment, 4], how 3 
+PASS 38,35,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 0 
+PASS 38,35,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 1 
+PASS 38,35,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 2 
+PASS 38,35,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 35 [detachedForeignComment, 0, detachedForeignComment, 1], how 3 
+PASS 38,36,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 0 
+PASS 38,36,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 1 
+PASS 38,36,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 2 
+PASS 38,36,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 36 [detachedXmlComment, 2, detachedXmlComment, 6], how 3 
+PASS 38,37,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 37 [docfrag, 0, docfrag, 0], how 0 
+PASS 38,37,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 37 [docfrag, 0, docfrag, 0], how 1 
+PASS 38,37,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 37 [docfrag, 0, docfrag, 0], how 2 
+PASS 38,37,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 37 [docfrag, 0, docfrag, 0], how 3 
+PASS 38,38,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 0 
+PASS 38,38,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 1 
+PASS 38,38,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 2 
+PASS 38,38,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range 38 [processingInstruction, 0, processingInstruction, 4], how 3 
+PASS 38,39,0: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range same as first range, how 0 
+PASS 38,39,1: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range same as first range, how 1 
+PASS 38,39,2: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range same as first range, how 2 
+PASS 38,39,3: context range 38 [processingInstruction, 0, processingInstruction, 4], argument range same as first range, how 3 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecompareBoundaryPointshtmlfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangecompareBoundaryPointshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-compareBoundaryPoints.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-compareBoundaryPoints.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-compareBoundaryPoints.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-compareBoundaryPoints.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,182 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Range.compareBoundaryPoints() tests&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Aryeh Gregor&quot; href=ayg@aryeh.name&gt;
+&lt;meta name=timeout content=long&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;script src=../common.js&gt;&lt;/script&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+
+var testRangesCached = [];
+testRangesCached.push(document.createRange());
+testRangesCached[0].detach();
+for (var i = 0; i &lt; testRangesShort.length; i++) {
+  try {
+    testRangesCached.push(rangeFromEndpoints(eval(testRangesShort[i])));
+  } catch(e) {
+    testRangesCached.push(null);
+  }
+}
+
+var testRangesCachedClones = [];
+testRangesCachedClones.push(document.createRange());
+testRangesCachedClones[0].detach();
+for (var i = 1; i &lt; testRangesCached.length; i++) {
+  if (testRangesCached[i]) {
+    testRangesCachedClones.push(testRangesCached[i].cloneRange());
+  } else {
+    testRangesCachedClones.push(null);
+  }
+}
+
+// We want to run a whole bunch of extra tests with invalid &quot;how&quot; values (not
+// 0-3), but it's excessive to run them for every single pair of ranges --
+// there are too many of them.  So just run them for a handful of the tests.
+var extraTests = [0, // detached
+  1 + testRanges.indexOf(&quot;[paras[0].firstChild, 2, paras[0].firstChild, 8]&quot;),
+  1 + testRanges.indexOf(&quot;[paras[0].firstChild, 3, paras[3], 1]&quot;),
+  1 + testRanges.indexOf(&quot;[testDiv, 0, comment, 5]&quot;),
+  1 + testRanges.indexOf(&quot;[foreignDoc.documentElement, 0, foreignDoc.documentElement, 1]&quot;)];
+
+for (var i = 0; i &lt; testRangesCached.length; i++) {
+  var range1 = testRangesCached[i];
+  var range1Desc = i + &quot; &quot; + (i == 0 ? &quot;[detached]&quot; : testRanges[i - 1]);
+  for (var j = 0; j &lt;= testRangesCachedClones.length; j++) {
+    var range2;
+    var range2Desc;
+    if (j == testRangesCachedClones.length) {
+      range2 = range1;
+      range2Desc = &quot;same as first range&quot;;
+    } else {
+      range2 = testRangesCachedClones[j];
+      range2Desc = j + &quot; &quot; + (j == 0 ? &quot;[detached]&quot; : testRanges[j - 1]);
+    }
+
+    var hows = [Range.START_TO_START, Range.START_TO_END, Range.END_TO_END,
+      Range.END_TO_START];
+    if (extraTests.indexOf(i) != -1 &amp;&amp; extraTests.indexOf(j) != -1) {
+      // TODO: Make some type of reusable utility function to do this
+      // work.
+      hows.push(-1, 4, 5, NaN, -0, +Infinity, -Infinity);
+      [65536, -65536, 65536*65536, 0.5, -0.5, -72.5].forEach(function(addend) {
+        hows.push(-1 + addend, 0 + addend, 1 + addend,
+          2 + addend, 3 + addend, 4 + addend);
+      });
+      hows.forEach(function(how) { hows.push(String(how)) });
+      hows.push(&quot;6.5536e4&quot;, null, undefined, true, false, &quot;&quot;, &quot;quasit&quot;);
+    }
+
+    for (var k = 0; k &lt; hows.length; k++) {
+      var how = hows[k];
+      test(function() {
+        assert_not_equals(range1, null,
+          &quot;Creating context range threw an exception&quot;);
+        assert_not_equals(range2, null,
+          &quot;Creating argument range threw an exception&quot;);
+
+        // Convert how per WebIDL.  TODO: Make some type of reusable
+        // utility function to do this work.
+        // &quot;Let number be the result of calling ToNumber on the input
+        // argument.&quot;
+        var convertedHow = Number(how);
+
+        // &quot;If number is NaN, +0, −0, +∞, or −∞, return +0.&quot;
+        if (isNaN(convertedHow)
+        || convertedHow == 0
+        || convertedHow == Infinity
+        || convertedHow == -Infinity) {
+          convertedHow = 0;
+        } else {
+          // &quot;Let posInt be sign(number) * floor(abs(number)).&quot;
+          var posInt = (convertedHow &lt; 0 ? -1 : 1) * Math.floor(Math.abs(convertedHow));
+
+          // &quot;Let int16bit be posInt modulo 2^16; that is, a finite
+          // integer value k of Number type with positive sign and
+          // less than 2^16 in magnitude such that the mathematical
+          // difference of posInt and k is mathematically an integer
+          // multiple of 2^16.&quot;
+          //
+          // &quot;Return int16bit.&quot;
+          convertedHow = posInt % 65536;
+          if (convertedHow &lt; 0) {
+            convertedHow += 65536;
+          }
+        }
+
+        // Now to the actual algorithm.
+        // &quot;If how is not one of
+        //   START_TO_START,
+        //   START_TO_END,
+        //   END_TO_END, and
+        //   END_TO_START,
+        // throw a &quot;NotSupportedError&quot; exception and terminate these
+        // steps.&quot;
+        if (convertedHow != Range.START_TO_START
+        &amp;&amp; convertedHow != Range.START_TO_END
+        &amp;&amp; convertedHow != Range.END_TO_END
+        &amp;&amp; convertedHow != Range.END_TO_START) {
+          assert_throws(&quot;NOT_SUPPORTED_ERR&quot;, function() {
+            range1.compareBoundaryPoints(how, range2);
+          }, &quot;NotSupportedError required if first parameter doesn't convert to 0-3 per WebIDL&quot;);
+          return;
+        }
+
+        // &quot;If context object's root is not the same as sourceRange's
+        // root, throw a &quot;WrongDocumentError&quot; exception and terminate
+        // these steps.&quot;
+        if (furthestAncestor(range1.startContainer) != furthestAncestor(range2.startContainer)) {
+          assert_throws(&quot;WRONG_DOCUMENT_ERR&quot;, function() {
+            range1.compareBoundaryPoints(how, range2);
+          }, &quot;WrongDocumentError required if the ranges don't share a root&quot;);
+          return;
+        }
+
+        // &quot;If how is:
+        //   START_TO_START:
+        //     Let this point be the context object's start.
+        //     Let other point be sourceRange's start.
+        //   START_TO_END:
+        //     Let this point be the context object's end.
+        //     Let other point be sourceRange's start.
+        //   END_TO_END:
+        //     Let this point be the context object's end.
+        //     Let other point be sourceRange's end.
+        //   END_TO_START:
+        //     Let this point be the context object's start.
+        //     Let other point be sourceRange's end.&quot;
+        var thisPoint = convertedHow == Range.START_TO_START || convertedHow == Range.END_TO_START
+          ? [range1.startContainer, range1.startOffset]
+          : [range1.endContainer, range1.endOffset];
+        var otherPoint = convertedHow == Range.START_TO_START || convertedHow == Range.START_TO_END
+          ? [range2.startContainer, range2.startOffset]
+          : [range2.endContainer, range2.endOffset];
+
+        // &quot;If the position of this point relative to other point is
+        //   before
+        //     Return −1.
+        //   equal
+        //     Return 0.
+        //   after
+        //     Return 1.&quot;
+        var position = getPosition(thisPoint[0], thisPoint[1], otherPoint[0], otherPoint[1]);
+        var expected;
+        if (position == &quot;before&quot;) {
+          expected = -1;
+        } else if (position == &quot;equal&quot;) {
+          expected = 0;
+        } else if (position == &quot;after&quot;) {
+          expected = 1;
+        }
+
+        assert_equals(range1.compareBoundaryPoints(how, range2), expected,
+          &quot;Wrong return value&quot;);
+      }, i + &quot;,&quot; + j + &quot;,&quot; + k + &quot;: context range &quot; + range1Desc + &quot;, argument range &quot; + range2Desc + &quot;, how &quot; + format_value(how));
+    }
+  }
+}
+
+testDiv.style.display = &quot;none&quot;;
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecomparePoint2expectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangecomparePoint2expectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-comparePoint-2-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-comparePoint-2-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-comparePoint-2-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-comparePoint-2-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+
+PASS Range.comparePoint 
+PASS Range.comparePoint 1 
+PASS Range.comparePoint 2 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecomparePoint2htmlfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangecomparePoint2html"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-comparePoint-2.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-comparePoint-2.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-comparePoint-2.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-comparePoint-2.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,23 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;Range.comparePoint&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Ms2ger&quot; href=&quot;mailto:ms2ger@gmail.com&quot;&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  var r = document.createRange();
+  r.detach()
+  assert_equals(r.comparePoint(document.body, 0), 1)
+})
+test(function() {
+  var r = document.createRange();
+  assert_throws(new TypeError(), function() { r.comparePoint(null, 0) })
+})
+test(function() {
+  var doc = document.implementation.createHTMLDocument(&quot;tralala&quot;)
+  var r = document.createRange();
+  assert_throws(&quot;WRONG_DOCUMENT_ERR&quot;, function() { r.comparePoint(doc.body, 0) })
+})
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecomparePointexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangecomparePointexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-comparePoint-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-comparePoint-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-comparePoint-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-comparePoint-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,5282 @@
</span><ins>+
+PASS Point 0 [paras[0].firstChild, -1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 0 [paras[0].firstChild, -1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 0 [paras[0].firstChild, -1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 0 [paras[0].firstChild, -1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 0 [paras[0].firstChild, -1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 0 [paras[0].firstChild, -1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 0 [paras[0].firstChild, -1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 0 [paras[0].firstChild, -1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 0 [paras[0].firstChild, -1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 0 [paras[0].firstChild, -1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 0 [paras[0].firstChild, -1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 0 [paras[0].firstChild, -1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 0 [paras[0].firstChild, -1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 0 [paras[0].firstChild, -1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 0 [paras[0].firstChild, -1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 0 [paras[0].firstChild, -1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 0 [paras[0].firstChild, -1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 0 [paras[0].firstChild, -1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 0 [paras[0].firstChild, -1], range 23 [document, 0, document, 1] 
+PASS Point 0 [paras[0].firstChild, -1], range 24 [document, 0, document, 2] 
+PASS Point 0 [paras[0].firstChild, -1], range 25 [comment, 2, comment, 3] 
+PASS Point 0 [paras[0].firstChild, -1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 0 [paras[0].firstChild, -1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 0 [paras[0].firstChild, -1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 0 [paras[0].firstChild, -1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 0 [paras[0].firstChild, -1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 0 [paras[0].firstChild, -1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 0 [paras[0].firstChild, -1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 0 [paras[0].firstChild, -1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 0 [paras[0].firstChild, -1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 0 [paras[0].firstChild, -1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 0 [paras[0].firstChild, -1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 0 [paras[0].firstChild, -1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 0 [paras[0].firstChild, -1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 0 [paras[0].firstChild, -1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 0 [paras[0].firstChild, -1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 0 [paras[0].firstChild, -1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 0 [paras[0].firstChild, -1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 49 [document, 1, document, 2] 
+PASS Point 0 [paras[0].firstChild, -1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 0 [paras[0].firstChild, -1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 0 [paras[0].firstChild, -1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 0 [paras[0].firstChild, -1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 0 [paras[0].firstChild, -1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 0 [paras[0].firstChild, -1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 0 [paras[0].firstChild, -1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 1 [paras[0].firstChild, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 1 [paras[0].firstChild, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 1 [paras[0].firstChild, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 1 [paras[0].firstChild, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 1 [paras[0].firstChild, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 1 [paras[0].firstChild, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 1 [paras[0].firstChild, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 1 [paras[0].firstChild, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 1 [paras[0].firstChild, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 1 [paras[0].firstChild, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 1 [paras[0].firstChild, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 1 [paras[0].firstChild, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 1 [paras[0].firstChild, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 1 [paras[0].firstChild, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 1 [paras[0].firstChild, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 1 [paras[0].firstChild, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 1 [paras[0].firstChild, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 1 [paras[0].firstChild, 0], range 23 [document, 0, document, 1] 
+PASS Point 1 [paras[0].firstChild, 0], range 24 [document, 0, document, 2] 
+PASS Point 1 [paras[0].firstChild, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 1 [paras[0].firstChild, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 1 [paras[0].firstChild, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 1 [paras[0].firstChild, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 1 [paras[0].firstChild, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 1 [paras[0].firstChild, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 1 [paras[0].firstChild, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 1 [paras[0].firstChild, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 1 [paras[0].firstChild, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 1 [paras[0].firstChild, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 1 [paras[0].firstChild, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 1 [paras[0].firstChild, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 1 [paras[0].firstChild, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 1 [paras[0].firstChild, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 1 [paras[0].firstChild, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 1 [paras[0].firstChild, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 1 [paras[0].firstChild, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 1 [paras[0].firstChild, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 49 [document, 1, document, 2] 
+PASS Point 1 [paras[0].firstChild, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 1 [paras[0].firstChild, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 1 [paras[0].firstChild, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 1 [paras[0].firstChild, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 1 [paras[0].firstChild, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 1 [paras[0].firstChild, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 1 [paras[0].firstChild, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 2 [paras[0].firstChild, 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 2 [paras[0].firstChild, 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 2 [paras[0].firstChild, 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 2 [paras[0].firstChild, 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 2 [paras[0].firstChild, 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 2 [paras[0].firstChild, 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 2 [paras[0].firstChild, 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 2 [paras[0].firstChild, 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 2 [paras[0].firstChild, 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 2 [paras[0].firstChild, 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 2 [paras[0].firstChild, 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 2 [paras[0].firstChild, 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 2 [paras[0].firstChild, 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 2 [paras[0].firstChild, 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 2 [paras[0].firstChild, 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 2 [paras[0].firstChild, 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 2 [paras[0].firstChild, 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 2 [paras[0].firstChild, 1], range 23 [document, 0, document, 1] 
+PASS Point 2 [paras[0].firstChild, 1], range 24 [document, 0, document, 2] 
+PASS Point 2 [paras[0].firstChild, 1], range 25 [comment, 2, comment, 3] 
+PASS Point 2 [paras[0].firstChild, 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 2 [paras[0].firstChild, 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 2 [paras[0].firstChild, 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 2 [paras[0].firstChild, 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 2 [paras[0].firstChild, 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 2 [paras[0].firstChild, 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 2 [paras[0].firstChild, 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 2 [paras[0].firstChild, 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 2 [paras[0].firstChild, 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 2 [paras[0].firstChild, 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 2 [paras[0].firstChild, 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 2 [paras[0].firstChild, 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 2 [paras[0].firstChild, 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 2 [paras[0].firstChild, 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 2 [paras[0].firstChild, 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 2 [paras[0].firstChild, 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 2 [paras[0].firstChild, 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 49 [document, 1, document, 2] 
+PASS Point 2 [paras[0].firstChild, 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 2 [paras[0].firstChild, 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 2 [paras[0].firstChild, 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 2 [paras[0].firstChild, 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 2 [paras[0].firstChild, 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 2 [paras[0].firstChild, 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 2 [paras[0].firstChild, 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 3 [paras[0].firstChild, 2], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 3 [paras[0].firstChild, 2], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 3 [paras[0].firstChild, 2], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 3 [paras[0].firstChild, 2], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 3 [paras[0].firstChild, 2], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 3 [paras[0].firstChild, 2], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 3 [paras[0].firstChild, 2], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 3 [paras[0].firstChild, 2], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 3 [paras[0].firstChild, 2], range 13 [document.head, 1, document.head, 1] 
+PASS Point 3 [paras[0].firstChild, 2], range 14 [document.body, 4, document.body, 5] 
+PASS Point 3 [paras[0].firstChild, 2], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 3 [paras[0].firstChild, 2], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 3 [paras[0].firstChild, 2], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 3 [paras[0].firstChild, 2], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 3 [paras[0].firstChild, 2], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 3 [paras[0].firstChild, 2], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 3 [paras[0].firstChild, 2], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 3 [paras[0].firstChild, 2], range 23 [document, 0, document, 1] 
+PASS Point 3 [paras[0].firstChild, 2], range 24 [document, 0, document, 2] 
+PASS Point 3 [paras[0].firstChild, 2], range 25 [comment, 2, comment, 3] 
+PASS Point 3 [paras[0].firstChild, 2], range 26 [testDiv, 0, comment, 5] 
+PASS Point 3 [paras[0].firstChild, 2], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 3 [paras[0].firstChild, 2], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 3 [paras[0].firstChild, 2], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 3 [paras[0].firstChild, 2], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 3 [paras[0].firstChild, 2], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 3 [paras[0].firstChild, 2], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 3 [paras[0].firstChild, 2], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 3 [paras[0].firstChild, 2], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 3 [paras[0].firstChild, 2], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 3 [paras[0].firstChild, 2], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 3 [paras[0].firstChild, 2], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 3 [paras[0].firstChild, 2], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 3 [paras[0].firstChild, 2], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 3 [paras[0].firstChild, 2], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 3 [paras[0].firstChild, 2], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 3 [paras[0].firstChild, 2], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 49 [document, 1, document, 2] 
+PASS Point 3 [paras[0].firstChild, 2], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 3 [paras[0].firstChild, 2], range 51 [paras[3], 1, comment, 8] 
+PASS Point 3 [paras[0].firstChild, 2], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 3 [paras[0].firstChild, 2], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 3 [paras[0].firstChild, 2], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 3 [paras[0].firstChild, 2], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 3 [paras[0].firstChild, 2], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 4 [paras[0].firstChild, 8], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 4 [paras[0].firstChild, 8], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 4 [paras[0].firstChild, 8], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 4 [paras[0].firstChild, 8], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 4 [paras[0].firstChild, 8], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 4 [paras[0].firstChild, 8], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 4 [paras[0].firstChild, 8], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 4 [paras[0].firstChild, 8], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 4 [paras[0].firstChild, 8], range 13 [document.head, 1, document.head, 1] 
+PASS Point 4 [paras[0].firstChild, 8], range 14 [document.body, 4, document.body, 5] 
+PASS Point 4 [paras[0].firstChild, 8], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 4 [paras[0].firstChild, 8], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 4 [paras[0].firstChild, 8], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 4 [paras[0].firstChild, 8], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 4 [paras[0].firstChild, 8], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 4 [paras[0].firstChild, 8], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 4 [paras[0].firstChild, 8], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 4 [paras[0].firstChild, 8], range 23 [document, 0, document, 1] 
+PASS Point 4 [paras[0].firstChild, 8], range 24 [document, 0, document, 2] 
+PASS Point 4 [paras[0].firstChild, 8], range 25 [comment, 2, comment, 3] 
+PASS Point 4 [paras[0].firstChild, 8], range 26 [testDiv, 0, comment, 5] 
+PASS Point 4 [paras[0].firstChild, 8], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 4 [paras[0].firstChild, 8], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 4 [paras[0].firstChild, 8], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 4 [paras[0].firstChild, 8], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 4 [paras[0].firstChild, 8], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 4 [paras[0].firstChild, 8], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 4 [paras[0].firstChild, 8], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 4 [paras[0].firstChild, 8], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 4 [paras[0].firstChild, 8], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 4 [paras[0].firstChild, 8], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 4 [paras[0].firstChild, 8], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 4 [paras[0].firstChild, 8], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 4 [paras[0].firstChild, 8], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 4 [paras[0].firstChild, 8], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 4 [paras[0].firstChild, 8], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 4 [paras[0].firstChild, 8], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 49 [document, 1, document, 2] 
+PASS Point 4 [paras[0].firstChild, 8], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 4 [paras[0].firstChild, 8], range 51 [paras[3], 1, comment, 8] 
+PASS Point 4 [paras[0].firstChild, 8], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 4 [paras[0].firstChild, 8], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 4 [paras[0].firstChild, 8], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 4 [paras[0].firstChild, 8], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 4 [paras[0].firstChild, 8], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 5 [paras[0].firstChild, 9], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 5 [paras[0].firstChild, 9], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 5 [paras[0].firstChild, 9], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 5 [paras[0].firstChild, 9], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 5 [paras[0].firstChild, 9], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 5 [paras[0].firstChild, 9], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 5 [paras[0].firstChild, 9], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 5 [paras[0].firstChild, 9], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 5 [paras[0].firstChild, 9], range 13 [document.head, 1, document.head, 1] 
+PASS Point 5 [paras[0].firstChild, 9], range 14 [document.body, 4, document.body, 5] 
+PASS Point 5 [paras[0].firstChild, 9], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 5 [paras[0].firstChild, 9], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 5 [paras[0].firstChild, 9], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 5 [paras[0].firstChild, 9], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 5 [paras[0].firstChild, 9], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 5 [paras[0].firstChild, 9], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 5 [paras[0].firstChild, 9], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 5 [paras[0].firstChild, 9], range 23 [document, 0, document, 1] 
+PASS Point 5 [paras[0].firstChild, 9], range 24 [document, 0, document, 2] 
+PASS Point 5 [paras[0].firstChild, 9], range 25 [comment, 2, comment, 3] 
+PASS Point 5 [paras[0].firstChild, 9], range 26 [testDiv, 0, comment, 5] 
+PASS Point 5 [paras[0].firstChild, 9], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 5 [paras[0].firstChild, 9], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 5 [paras[0].firstChild, 9], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 5 [paras[0].firstChild, 9], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 5 [paras[0].firstChild, 9], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 5 [paras[0].firstChild, 9], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 5 [paras[0].firstChild, 9], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 5 [paras[0].firstChild, 9], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 5 [paras[0].firstChild, 9], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 5 [paras[0].firstChild, 9], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 5 [paras[0].firstChild, 9], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 5 [paras[0].firstChild, 9], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 5 [paras[0].firstChild, 9], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 5 [paras[0].firstChild, 9], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 5 [paras[0].firstChild, 9], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 5 [paras[0].firstChild, 9], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 49 [document, 1, document, 2] 
+PASS Point 5 [paras[0].firstChild, 9], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 5 [paras[0].firstChild, 9], range 51 [paras[3], 1, comment, 8] 
+PASS Point 5 [paras[0].firstChild, 9], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 5 [paras[0].firstChild, 9], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 5 [paras[0].firstChild, 9], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 5 [paras[0].firstChild, 9], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 5 [paras[0].firstChild, 9], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 6 [paras[0].firstChild, 10], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 6 [paras[0].firstChild, 10], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 6 [paras[0].firstChild, 10], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 6 [paras[0].firstChild, 10], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 6 [paras[0].firstChild, 10], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 6 [paras[0].firstChild, 10], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 6 [paras[0].firstChild, 10], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 6 [paras[0].firstChild, 10], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 6 [paras[0].firstChild, 10], range 13 [document.head, 1, document.head, 1] 
+PASS Point 6 [paras[0].firstChild, 10], range 14 [document.body, 4, document.body, 5] 
+PASS Point 6 [paras[0].firstChild, 10], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 6 [paras[0].firstChild, 10], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 6 [paras[0].firstChild, 10], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 6 [paras[0].firstChild, 10], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 6 [paras[0].firstChild, 10], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 6 [paras[0].firstChild, 10], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 6 [paras[0].firstChild, 10], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 6 [paras[0].firstChild, 10], range 23 [document, 0, document, 1] 
+PASS Point 6 [paras[0].firstChild, 10], range 24 [document, 0, document, 2] 
+PASS Point 6 [paras[0].firstChild, 10], range 25 [comment, 2, comment, 3] 
+PASS Point 6 [paras[0].firstChild, 10], range 26 [testDiv, 0, comment, 5] 
+PASS Point 6 [paras[0].firstChild, 10], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 6 [paras[0].firstChild, 10], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 6 [paras[0].firstChild, 10], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 6 [paras[0].firstChild, 10], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 6 [paras[0].firstChild, 10], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 6 [paras[0].firstChild, 10], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 6 [paras[0].firstChild, 10], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 6 [paras[0].firstChild, 10], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 6 [paras[0].firstChild, 10], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 6 [paras[0].firstChild, 10], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 6 [paras[0].firstChild, 10], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 6 [paras[0].firstChild, 10], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 6 [paras[0].firstChild, 10], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 6 [paras[0].firstChild, 10], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 6 [paras[0].firstChild, 10], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 6 [paras[0].firstChild, 10], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 49 [document, 1, document, 2] 
+PASS Point 6 [paras[0].firstChild, 10], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 6 [paras[0].firstChild, 10], range 51 [paras[3], 1, comment, 8] 
+PASS Point 6 [paras[0].firstChild, 10], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 6 [paras[0].firstChild, 10], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 6 [paras[0].firstChild, 10], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 6 [paras[0].firstChild, 10], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 6 [paras[0].firstChild, 10], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 7 [paras[0].firstChild, 65535], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 7 [paras[0].firstChild, 65535], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 7 [paras[0].firstChild, 65535], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 7 [paras[0].firstChild, 65535], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 7 [paras[0].firstChild, 65535], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 7 [paras[0].firstChild, 65535], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 7 [paras[0].firstChild, 65535], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 7 [paras[0].firstChild, 65535], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 7 [paras[0].firstChild, 65535], range 13 [document.head, 1, document.head, 1] 
+PASS Point 7 [paras[0].firstChild, 65535], range 14 [document.body, 4, document.body, 5] 
+PASS Point 7 [paras[0].firstChild, 65535], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 7 [paras[0].firstChild, 65535], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 7 [paras[0].firstChild, 65535], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 7 [paras[0].firstChild, 65535], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 7 [paras[0].firstChild, 65535], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 7 [paras[0].firstChild, 65535], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 7 [paras[0].firstChild, 65535], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 7 [paras[0].firstChild, 65535], range 23 [document, 0, document, 1] 
+PASS Point 7 [paras[0].firstChild, 65535], range 24 [document, 0, document, 2] 
+PASS Point 7 [paras[0].firstChild, 65535], range 25 [comment, 2, comment, 3] 
+PASS Point 7 [paras[0].firstChild, 65535], range 26 [testDiv, 0, comment, 5] 
+PASS Point 7 [paras[0].firstChild, 65535], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 7 [paras[0].firstChild, 65535], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 7 [paras[0].firstChild, 65535], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 7 [paras[0].firstChild, 65535], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 7 [paras[0].firstChild, 65535], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 7 [paras[0].firstChild, 65535], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 7 [paras[0].firstChild, 65535], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 7 [paras[0].firstChild, 65535], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 7 [paras[0].firstChild, 65535], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 7 [paras[0].firstChild, 65535], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 7 [paras[0].firstChild, 65535], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 7 [paras[0].firstChild, 65535], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 7 [paras[0].firstChild, 65535], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 7 [paras[0].firstChild, 65535], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 7 [paras[0].firstChild, 65535], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 7 [paras[0].firstChild, 65535], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 49 [document, 1, document, 2] 
+PASS Point 7 [paras[0].firstChild, 65535], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 7 [paras[0].firstChild, 65535], range 51 [paras[3], 1, comment, 8] 
+PASS Point 7 [paras[0].firstChild, 65535], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 7 [paras[0].firstChild, 65535], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 7 [paras[0].firstChild, 65535], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 7 [paras[0].firstChild, 65535], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 7 [paras[0].firstChild, 65535], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 8 [paras[1].firstChild, -1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 8 [paras[1].firstChild, -1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 8 [paras[1].firstChild, -1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 8 [paras[1].firstChild, -1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 8 [paras[1].firstChild, -1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 8 [paras[1].firstChild, -1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 8 [paras[1].firstChild, -1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 8 [paras[1].firstChild, -1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 8 [paras[1].firstChild, -1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 8 [paras[1].firstChild, -1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 8 [paras[1].firstChild, -1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 8 [paras[1].firstChild, -1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 8 [paras[1].firstChild, -1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 8 [paras[1].firstChild, -1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 8 [paras[1].firstChild, -1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 8 [paras[1].firstChild, -1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 8 [paras[1].firstChild, -1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 8 [paras[1].firstChild, -1], range 23 [document, 0, document, 1] 
+PASS Point 8 [paras[1].firstChild, -1], range 24 [document, 0, document, 2] 
+PASS Point 8 [paras[1].firstChild, -1], range 25 [comment, 2, comment, 3] 
+PASS Point 8 [paras[1].firstChild, -1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 8 [paras[1].firstChild, -1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 8 [paras[1].firstChild, -1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 8 [paras[1].firstChild, -1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 8 [paras[1].firstChild, -1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 8 [paras[1].firstChild, -1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 8 [paras[1].firstChild, -1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 8 [paras[1].firstChild, -1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 8 [paras[1].firstChild, -1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 8 [paras[1].firstChild, -1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 8 [paras[1].firstChild, -1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 8 [paras[1].firstChild, -1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 8 [paras[1].firstChild, -1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 8 [paras[1].firstChild, -1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 8 [paras[1].firstChild, -1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 8 [paras[1].firstChild, -1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 8 [paras[1].firstChild, -1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 49 [document, 1, document, 2] 
+PASS Point 8 [paras[1].firstChild, -1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 8 [paras[1].firstChild, -1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 8 [paras[1].firstChild, -1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 8 [paras[1].firstChild, -1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 8 [paras[1].firstChild, -1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 8 [paras[1].firstChild, -1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 8 [paras[1].firstChild, -1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 9 [paras[1].firstChild, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 9 [paras[1].firstChild, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 9 [paras[1].firstChild, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 9 [paras[1].firstChild, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 9 [paras[1].firstChild, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 9 [paras[1].firstChild, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 9 [paras[1].firstChild, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 9 [paras[1].firstChild, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 9 [paras[1].firstChild, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 9 [paras[1].firstChild, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 9 [paras[1].firstChild, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 9 [paras[1].firstChild, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 9 [paras[1].firstChild, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 9 [paras[1].firstChild, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 9 [paras[1].firstChild, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 9 [paras[1].firstChild, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 9 [paras[1].firstChild, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 9 [paras[1].firstChild, 0], range 23 [document, 0, document, 1] 
+PASS Point 9 [paras[1].firstChild, 0], range 24 [document, 0, document, 2] 
+PASS Point 9 [paras[1].firstChild, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 9 [paras[1].firstChild, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 9 [paras[1].firstChild, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 9 [paras[1].firstChild, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 9 [paras[1].firstChild, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 9 [paras[1].firstChild, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 9 [paras[1].firstChild, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 9 [paras[1].firstChild, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 9 [paras[1].firstChild, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 9 [paras[1].firstChild, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 9 [paras[1].firstChild, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 9 [paras[1].firstChild, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 9 [paras[1].firstChild, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 9 [paras[1].firstChild, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 9 [paras[1].firstChild, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 9 [paras[1].firstChild, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 9 [paras[1].firstChild, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 9 [paras[1].firstChild, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 49 [document, 1, document, 2] 
+PASS Point 9 [paras[1].firstChild, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 9 [paras[1].firstChild, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 9 [paras[1].firstChild, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 9 [paras[1].firstChild, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 9 [paras[1].firstChild, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 9 [paras[1].firstChild, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 9 [paras[1].firstChild, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 10 [paras[1].firstChild, 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 10 [paras[1].firstChild, 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 10 [paras[1].firstChild, 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 10 [paras[1].firstChild, 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 10 [paras[1].firstChild, 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 10 [paras[1].firstChild, 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 10 [paras[1].firstChild, 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 10 [paras[1].firstChild, 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 10 [paras[1].firstChild, 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 10 [paras[1].firstChild, 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 10 [paras[1].firstChild, 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 10 [paras[1].firstChild, 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 10 [paras[1].firstChild, 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 10 [paras[1].firstChild, 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 10 [paras[1].firstChild, 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 10 [paras[1].firstChild, 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 10 [paras[1].firstChild, 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 10 [paras[1].firstChild, 1], range 23 [document, 0, document, 1] 
+PASS Point 10 [paras[1].firstChild, 1], range 24 [document, 0, document, 2] 
+PASS Point 10 [paras[1].firstChild, 1], range 25 [comment, 2, comment, 3] 
+PASS Point 10 [paras[1].firstChild, 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 10 [paras[1].firstChild, 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 10 [paras[1].firstChild, 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 10 [paras[1].firstChild, 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 10 [paras[1].firstChild, 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 10 [paras[1].firstChild, 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 10 [paras[1].firstChild, 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 10 [paras[1].firstChild, 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 10 [paras[1].firstChild, 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 10 [paras[1].firstChild, 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 10 [paras[1].firstChild, 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 10 [paras[1].firstChild, 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 10 [paras[1].firstChild, 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 10 [paras[1].firstChild, 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 10 [paras[1].firstChild, 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 10 [paras[1].firstChild, 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 10 [paras[1].firstChild, 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 49 [document, 1, document, 2] 
+PASS Point 10 [paras[1].firstChild, 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 10 [paras[1].firstChild, 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 10 [paras[1].firstChild, 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 10 [paras[1].firstChild, 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 10 [paras[1].firstChild, 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 10 [paras[1].firstChild, 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 10 [paras[1].firstChild, 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 11 [paras[1].firstChild, 2], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 11 [paras[1].firstChild, 2], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 11 [paras[1].firstChild, 2], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 11 [paras[1].firstChild, 2], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 11 [paras[1].firstChild, 2], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 11 [paras[1].firstChild, 2], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 11 [paras[1].firstChild, 2], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 11 [paras[1].firstChild, 2], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 11 [paras[1].firstChild, 2], range 13 [document.head, 1, document.head, 1] 
+PASS Point 11 [paras[1].firstChild, 2], range 14 [document.body, 4, document.body, 5] 
+PASS Point 11 [paras[1].firstChild, 2], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 11 [paras[1].firstChild, 2], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 11 [paras[1].firstChild, 2], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 11 [paras[1].firstChild, 2], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 11 [paras[1].firstChild, 2], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 11 [paras[1].firstChild, 2], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 11 [paras[1].firstChild, 2], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 11 [paras[1].firstChild, 2], range 23 [document, 0, document, 1] 
+PASS Point 11 [paras[1].firstChild, 2], range 24 [document, 0, document, 2] 
+PASS Point 11 [paras[1].firstChild, 2], range 25 [comment, 2, comment, 3] 
+PASS Point 11 [paras[1].firstChild, 2], range 26 [testDiv, 0, comment, 5] 
+PASS Point 11 [paras[1].firstChild, 2], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 11 [paras[1].firstChild, 2], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 11 [paras[1].firstChild, 2], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 11 [paras[1].firstChild, 2], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 11 [paras[1].firstChild, 2], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 11 [paras[1].firstChild, 2], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 11 [paras[1].firstChild, 2], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 11 [paras[1].firstChild, 2], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 11 [paras[1].firstChild, 2], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 11 [paras[1].firstChild, 2], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 11 [paras[1].firstChild, 2], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 11 [paras[1].firstChild, 2], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 11 [paras[1].firstChild, 2], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 11 [paras[1].firstChild, 2], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 11 [paras[1].firstChild, 2], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 11 [paras[1].firstChild, 2], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 49 [document, 1, document, 2] 
+PASS Point 11 [paras[1].firstChild, 2], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 11 [paras[1].firstChild, 2], range 51 [paras[3], 1, comment, 8] 
+PASS Point 11 [paras[1].firstChild, 2], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 11 [paras[1].firstChild, 2], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 11 [paras[1].firstChild, 2], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 11 [paras[1].firstChild, 2], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 11 [paras[1].firstChild, 2], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 12 [paras[1].firstChild, 8], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 12 [paras[1].firstChild, 8], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 12 [paras[1].firstChild, 8], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 12 [paras[1].firstChild, 8], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 12 [paras[1].firstChild, 8], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 12 [paras[1].firstChild, 8], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 12 [paras[1].firstChild, 8], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 12 [paras[1].firstChild, 8], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 12 [paras[1].firstChild, 8], range 13 [document.head, 1, document.head, 1] 
+PASS Point 12 [paras[1].firstChild, 8], range 14 [document.body, 4, document.body, 5] 
+PASS Point 12 [paras[1].firstChild, 8], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 12 [paras[1].firstChild, 8], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 12 [paras[1].firstChild, 8], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 12 [paras[1].firstChild, 8], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 12 [paras[1].firstChild, 8], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 12 [paras[1].firstChild, 8], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 12 [paras[1].firstChild, 8], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 12 [paras[1].firstChild, 8], range 23 [document, 0, document, 1] 
+PASS Point 12 [paras[1].firstChild, 8], range 24 [document, 0, document, 2] 
+PASS Point 12 [paras[1].firstChild, 8], range 25 [comment, 2, comment, 3] 
+PASS Point 12 [paras[1].firstChild, 8], range 26 [testDiv, 0, comment, 5] 
+PASS Point 12 [paras[1].firstChild, 8], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 12 [paras[1].firstChild, 8], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 12 [paras[1].firstChild, 8], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 12 [paras[1].firstChild, 8], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 12 [paras[1].firstChild, 8], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 12 [paras[1].firstChild, 8], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 12 [paras[1].firstChild, 8], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 12 [paras[1].firstChild, 8], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 12 [paras[1].firstChild, 8], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 12 [paras[1].firstChild, 8], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 12 [paras[1].firstChild, 8], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 12 [paras[1].firstChild, 8], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 12 [paras[1].firstChild, 8], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 12 [paras[1].firstChild, 8], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 12 [paras[1].firstChild, 8], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 12 [paras[1].firstChild, 8], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 49 [document, 1, document, 2] 
+PASS Point 12 [paras[1].firstChild, 8], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 12 [paras[1].firstChild, 8], range 51 [paras[3], 1, comment, 8] 
+PASS Point 12 [paras[1].firstChild, 8], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 12 [paras[1].firstChild, 8], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 12 [paras[1].firstChild, 8], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 12 [paras[1].firstChild, 8], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 12 [paras[1].firstChild, 8], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 13 [paras[1].firstChild, 9], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 13 [paras[1].firstChild, 9], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 13 [paras[1].firstChild, 9], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 13 [paras[1].firstChild, 9], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 13 [paras[1].firstChild, 9], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 13 [paras[1].firstChild, 9], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 13 [paras[1].firstChild, 9], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 13 [paras[1].firstChild, 9], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 13 [paras[1].firstChild, 9], range 13 [document.head, 1, document.head, 1] 
+PASS Point 13 [paras[1].firstChild, 9], range 14 [document.body, 4, document.body, 5] 
+PASS Point 13 [paras[1].firstChild, 9], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 13 [paras[1].firstChild, 9], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 13 [paras[1].firstChild, 9], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 13 [paras[1].firstChild, 9], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 13 [paras[1].firstChild, 9], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 13 [paras[1].firstChild, 9], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 13 [paras[1].firstChild, 9], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 13 [paras[1].firstChild, 9], range 23 [document, 0, document, 1] 
+PASS Point 13 [paras[1].firstChild, 9], range 24 [document, 0, document, 2] 
+PASS Point 13 [paras[1].firstChild, 9], range 25 [comment, 2, comment, 3] 
+PASS Point 13 [paras[1].firstChild, 9], range 26 [testDiv, 0, comment, 5] 
+PASS Point 13 [paras[1].firstChild, 9], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 13 [paras[1].firstChild, 9], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 13 [paras[1].firstChild, 9], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 13 [paras[1].firstChild, 9], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 13 [paras[1].firstChild, 9], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 13 [paras[1].firstChild, 9], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 13 [paras[1].firstChild, 9], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 13 [paras[1].firstChild, 9], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 13 [paras[1].firstChild, 9], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 13 [paras[1].firstChild, 9], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 13 [paras[1].firstChild, 9], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 13 [paras[1].firstChild, 9], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 13 [paras[1].firstChild, 9], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 13 [paras[1].firstChild, 9], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 13 [paras[1].firstChild, 9], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 13 [paras[1].firstChild, 9], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 49 [document, 1, document, 2] 
+PASS Point 13 [paras[1].firstChild, 9], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 13 [paras[1].firstChild, 9], range 51 [paras[3], 1, comment, 8] 
+PASS Point 13 [paras[1].firstChild, 9], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 13 [paras[1].firstChild, 9], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 13 [paras[1].firstChild, 9], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 13 [paras[1].firstChild, 9], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 13 [paras[1].firstChild, 9], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 14 [paras[1].firstChild, 10], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 14 [paras[1].firstChild, 10], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 14 [paras[1].firstChild, 10], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 14 [paras[1].firstChild, 10], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 14 [paras[1].firstChild, 10], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 14 [paras[1].firstChild, 10], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 14 [paras[1].firstChild, 10], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 14 [paras[1].firstChild, 10], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 14 [paras[1].firstChild, 10], range 13 [document.head, 1, document.head, 1] 
+PASS Point 14 [paras[1].firstChild, 10], range 14 [document.body, 4, document.body, 5] 
+PASS Point 14 [paras[1].firstChild, 10], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 14 [paras[1].firstChild, 10], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 14 [paras[1].firstChild, 10], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 14 [paras[1].firstChild, 10], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 14 [paras[1].firstChild, 10], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 14 [paras[1].firstChild, 10], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 14 [paras[1].firstChild, 10], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 14 [paras[1].firstChild, 10], range 23 [document, 0, document, 1] 
+PASS Point 14 [paras[1].firstChild, 10], range 24 [document, 0, document, 2] 
+PASS Point 14 [paras[1].firstChild, 10], range 25 [comment, 2, comment, 3] 
+PASS Point 14 [paras[1].firstChild, 10], range 26 [testDiv, 0, comment, 5] 
+PASS Point 14 [paras[1].firstChild, 10], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 14 [paras[1].firstChild, 10], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 14 [paras[1].firstChild, 10], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 14 [paras[1].firstChild, 10], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 14 [paras[1].firstChild, 10], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 14 [paras[1].firstChild, 10], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 14 [paras[1].firstChild, 10], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 14 [paras[1].firstChild, 10], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 14 [paras[1].firstChild, 10], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 14 [paras[1].firstChild, 10], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 14 [paras[1].firstChild, 10], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 14 [paras[1].firstChild, 10], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 14 [paras[1].firstChild, 10], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 14 [paras[1].firstChild, 10], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 14 [paras[1].firstChild, 10], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 14 [paras[1].firstChild, 10], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 49 [document, 1, document, 2] 
+PASS Point 14 [paras[1].firstChild, 10], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 14 [paras[1].firstChild, 10], range 51 [paras[3], 1, comment, 8] 
+PASS Point 14 [paras[1].firstChild, 10], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 14 [paras[1].firstChild, 10], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 14 [paras[1].firstChild, 10], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 14 [paras[1].firstChild, 10], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 14 [paras[1].firstChild, 10], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 15 [paras[1].firstChild, 65535], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 15 [paras[1].firstChild, 65535], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 15 [paras[1].firstChild, 65535], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 15 [paras[1].firstChild, 65535], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 15 [paras[1].firstChild, 65535], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 15 [paras[1].firstChild, 65535], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 15 [paras[1].firstChild, 65535], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 15 [paras[1].firstChild, 65535], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 15 [paras[1].firstChild, 65535], range 13 [document.head, 1, document.head, 1] 
+PASS Point 15 [paras[1].firstChild, 65535], range 14 [document.body, 4, document.body, 5] 
+PASS Point 15 [paras[1].firstChild, 65535], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 15 [paras[1].firstChild, 65535], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 15 [paras[1].firstChild, 65535], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 15 [paras[1].firstChild, 65535], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 15 [paras[1].firstChild, 65535], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 15 [paras[1].firstChild, 65535], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 15 [paras[1].firstChild, 65535], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 15 [paras[1].firstChild, 65535], range 23 [document, 0, document, 1] 
+PASS Point 15 [paras[1].firstChild, 65535], range 24 [document, 0, document, 2] 
+PASS Point 15 [paras[1].firstChild, 65535], range 25 [comment, 2, comment, 3] 
+PASS Point 15 [paras[1].firstChild, 65535], range 26 [testDiv, 0, comment, 5] 
+PASS Point 15 [paras[1].firstChild, 65535], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 15 [paras[1].firstChild, 65535], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 15 [paras[1].firstChild, 65535], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 15 [paras[1].firstChild, 65535], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 15 [paras[1].firstChild, 65535], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 15 [paras[1].firstChild, 65535], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 15 [paras[1].firstChild, 65535], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 15 [paras[1].firstChild, 65535], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 15 [paras[1].firstChild, 65535], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 15 [paras[1].firstChild, 65535], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 15 [paras[1].firstChild, 65535], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 15 [paras[1].firstChild, 65535], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 15 [paras[1].firstChild, 65535], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 15 [paras[1].firstChild, 65535], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 15 [paras[1].firstChild, 65535], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 15 [paras[1].firstChild, 65535], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 49 [document, 1, document, 2] 
+PASS Point 15 [paras[1].firstChild, 65535], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 15 [paras[1].firstChild, 65535], range 51 [paras[3], 1, comment, 8] 
+PASS Point 15 [paras[1].firstChild, 65535], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 15 [paras[1].firstChild, 65535], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 15 [paras[1].firstChild, 65535], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 15 [paras[1].firstChild, 65535], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 15 [paras[1].firstChild, 65535], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 23 [document, 0, document, 1] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 24 [document, 0, document, 2] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 49 [document, 1, document, 2] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 23 [document, 0, document, 1] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 24 [document, 0, document, 2] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 25 [comment, 2, comment, 3] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 49 [document, 1, document, 2] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 13 [document.head, 1, document.head, 1] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 14 [document.body, 4, document.body, 5] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 23 [document, 0, document, 1] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 24 [document, 0, document, 2] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 25 [comment, 2, comment, 3] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 26 [testDiv, 0, comment, 5] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 49 [document, 1, document, 2] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 51 [paras[3], 1, comment, 8] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 13 [document.head, 1, document.head, 1] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 14 [document.body, 4, document.body, 5] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 23 [document, 0, document, 1] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 24 [document, 0, document, 2] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 25 [comment, 2, comment, 3] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 26 [testDiv, 0, comment, 5] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 49 [document, 1, document, 2] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 51 [paras[3], 1, comment, 8] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 23 [document, 0, document, 1] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 24 [document, 0, document, 2] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 49 [document, 1, document, 2] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 23 [document, 0, document, 1] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 24 [document, 0, document, 2] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 25 [comment, 2, comment, 3] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 49 [document, 1, document, 2] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 13 [document.head, 1, document.head, 1] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 14 [document.body, 4, document.body, 5] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 23 [document, 0, document, 1] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 24 [document, 0, document, 2] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 25 [comment, 2, comment, 3] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 26 [testDiv, 0, comment, 5] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 49 [document, 1, document, 2] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 51 [paras[3], 1, comment, 8] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 13 [document.head, 1, document.head, 1] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 14 [document.body, 4, document.body, 5] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 23 [document, 0, document, 1] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 24 [document, 0, document, 2] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 25 [comment, 2, comment, 3] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 26 [testDiv, 0, comment, 5] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 49 [document, 1, document, 2] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 51 [paras[3], 1, comment, 8] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 24 [document.documentElement, -1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 24 [document.documentElement, -1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 24 [document.documentElement, -1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 24 [document.documentElement, -1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 24 [document.documentElement, -1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 24 [document.documentElement, -1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 24 [document.documentElement, -1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 24 [document.documentElement, -1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 24 [document.documentElement, -1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 24 [document.documentElement, -1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 24 [document.documentElement, -1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 24 [document.documentElement, -1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 24 [document.documentElement, -1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 24 [document.documentElement, -1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 24 [document.documentElement, -1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 24 [document.documentElement, -1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 24 [document.documentElement, -1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 24 [document.documentElement, -1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 24 [document.documentElement, -1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 24 [document.documentElement, -1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 24 [document.documentElement, -1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 24 [document.documentElement, -1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 24 [document.documentElement, -1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 24 [document.documentElement, -1], range 23 [document, 0, document, 1] 
+PASS Point 24 [document.documentElement, -1], range 24 [document, 0, document, 2] 
+PASS Point 24 [document.documentElement, -1], range 25 [comment, 2, comment, 3] 
+PASS Point 24 [document.documentElement, -1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 24 [document.documentElement, -1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 24 [document.documentElement, -1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 24 [document.documentElement, -1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 24 [document.documentElement, -1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 24 [document.documentElement, -1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 24 [document.documentElement, -1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 24 [document.documentElement, -1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 24 [document.documentElement, -1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 24 [document.documentElement, -1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 24 [document.documentElement, -1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 24 [document.documentElement, -1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 24 [document.documentElement, -1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 24 [document.documentElement, -1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 24 [document.documentElement, -1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 24 [document.documentElement, -1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 24 [document.documentElement, -1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 24 [document.documentElement, -1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 24 [document.documentElement, -1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 24 [document.documentElement, -1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 24 [document.documentElement, -1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 24 [document.documentElement, -1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 24 [document.documentElement, -1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 24 [document.documentElement, -1], range 49 [document, 1, document, 2] 
+PASS Point 24 [document.documentElement, -1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 24 [document.documentElement, -1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 24 [document.documentElement, -1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 24 [document.documentElement, -1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 24 [document.documentElement, -1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 24 [document.documentElement, -1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 24 [document.documentElement, -1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 24 [document.documentElement, -1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 24 [document.documentElement, -1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 24 [document.documentElement, -1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 25 [document.documentElement, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 25 [document.documentElement, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 25 [document.documentElement, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 25 [document.documentElement, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 25 [document.documentElement, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 25 [document.documentElement, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 25 [document.documentElement, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 25 [document.documentElement, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 25 [document.documentElement, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 25 [document.documentElement, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 25 [document.documentElement, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 25 [document.documentElement, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 25 [document.documentElement, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 25 [document.documentElement, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 25 [document.documentElement, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 25 [document.documentElement, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 25 [document.documentElement, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 25 [document.documentElement, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 25 [document.documentElement, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 25 [document.documentElement, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 25 [document.documentElement, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 25 [document.documentElement, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 25 [document.documentElement, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 25 [document.documentElement, 0], range 23 [document, 0, document, 1] 
+PASS Point 25 [document.documentElement, 0], range 24 [document, 0, document, 2] 
+PASS Point 25 [document.documentElement, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 25 [document.documentElement, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 25 [document.documentElement, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 25 [document.documentElement, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 25 [document.documentElement, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 25 [document.documentElement, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 25 [document.documentElement, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 25 [document.documentElement, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 25 [document.documentElement, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 25 [document.documentElement, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 25 [document.documentElement, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 25 [document.documentElement, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 25 [document.documentElement, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 25 [document.documentElement, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 25 [document.documentElement, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 25 [document.documentElement, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 25 [document.documentElement, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 25 [document.documentElement, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 25 [document.documentElement, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 25 [document.documentElement, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 25 [document.documentElement, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 25 [document.documentElement, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 25 [document.documentElement, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 25 [document.documentElement, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 25 [document.documentElement, 0], range 49 [document, 1, document, 2] 
+PASS Point 25 [document.documentElement, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 25 [document.documentElement, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 25 [document.documentElement, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 25 [document.documentElement, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 25 [document.documentElement, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 25 [document.documentElement, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 25 [document.documentElement, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 25 [document.documentElement, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 25 [document.documentElement, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 25 [document.documentElement, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 26 [document.documentElement, 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 26 [document.documentElement, 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 26 [document.documentElement, 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 26 [document.documentElement, 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 26 [document.documentElement, 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 26 [document.documentElement, 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 26 [document.documentElement, 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 26 [document.documentElement, 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 26 [document.documentElement, 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 26 [document.documentElement, 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 26 [document.documentElement, 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 26 [document.documentElement, 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 26 [document.documentElement, 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 26 [document.documentElement, 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 26 [document.documentElement, 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 26 [document.documentElement, 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 26 [document.documentElement, 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 26 [document.documentElement, 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 26 [document.documentElement, 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 26 [document.documentElement, 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 26 [document.documentElement, 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 26 [document.documentElement, 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 26 [document.documentElement, 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 26 [document.documentElement, 1], range 23 [document, 0, document, 1] 
+PASS Point 26 [document.documentElement, 1], range 24 [document, 0, document, 2] 
+PASS Point 26 [document.documentElement, 1], range 25 [comment, 2, comment, 3] 
+PASS Point 26 [document.documentElement, 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 26 [document.documentElement, 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 26 [document.documentElement, 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 26 [document.documentElement, 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 26 [document.documentElement, 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 26 [document.documentElement, 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 26 [document.documentElement, 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 26 [document.documentElement, 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 26 [document.documentElement, 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 26 [document.documentElement, 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 26 [document.documentElement, 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 26 [document.documentElement, 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 26 [document.documentElement, 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 26 [document.documentElement, 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 26 [document.documentElement, 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 26 [document.documentElement, 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 26 [document.documentElement, 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 26 [document.documentElement, 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 26 [document.documentElement, 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 26 [document.documentElement, 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 26 [document.documentElement, 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 26 [document.documentElement, 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 26 [document.documentElement, 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 26 [document.documentElement, 1], range 49 [document, 1, document, 2] 
+PASS Point 26 [document.documentElement, 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 26 [document.documentElement, 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 26 [document.documentElement, 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 26 [document.documentElement, 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 26 [document.documentElement, 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 26 [document.documentElement, 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 26 [document.documentElement, 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 26 [document.documentElement, 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 26 [document.documentElement, 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 26 [document.documentElement, 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 27 [document.documentElement, 2], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 27 [document.documentElement, 2], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 27 [document.documentElement, 2], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 27 [document.documentElement, 2], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 27 [document.documentElement, 2], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 27 [document.documentElement, 2], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 27 [document.documentElement, 2], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 27 [document.documentElement, 2], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 27 [document.documentElement, 2], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 27 [document.documentElement, 2], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 27 [document.documentElement, 2], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 27 [document.documentElement, 2], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 27 [document.documentElement, 2], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 27 [document.documentElement, 2], range 13 [document.head, 1, document.head, 1] 
+PASS Point 27 [document.documentElement, 2], range 14 [document.body, 4, document.body, 5] 
+PASS Point 27 [document.documentElement, 2], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 27 [document.documentElement, 2], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 27 [document.documentElement, 2], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 27 [document.documentElement, 2], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 27 [document.documentElement, 2], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 27 [document.documentElement, 2], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 27 [document.documentElement, 2], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 27 [document.documentElement, 2], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 27 [document.documentElement, 2], range 23 [document, 0, document, 1] 
+PASS Point 27 [document.documentElement, 2], range 24 [document, 0, document, 2] 
+PASS Point 27 [document.documentElement, 2], range 25 [comment, 2, comment, 3] 
+PASS Point 27 [document.documentElement, 2], range 26 [testDiv, 0, comment, 5] 
+PASS Point 27 [document.documentElement, 2], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 27 [document.documentElement, 2], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 27 [document.documentElement, 2], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 27 [document.documentElement, 2], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 27 [document.documentElement, 2], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 27 [document.documentElement, 2], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 27 [document.documentElement, 2], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 27 [document.documentElement, 2], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 27 [document.documentElement, 2], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 27 [document.documentElement, 2], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 27 [document.documentElement, 2], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 27 [document.documentElement, 2], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 27 [document.documentElement, 2], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 27 [document.documentElement, 2], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 27 [document.documentElement, 2], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 27 [document.documentElement, 2], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 27 [document.documentElement, 2], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 27 [document.documentElement, 2], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 27 [document.documentElement, 2], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 27 [document.documentElement, 2], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 27 [document.documentElement, 2], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 27 [document.documentElement, 2], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 27 [document.documentElement, 2], range 49 [document, 1, document, 2] 
+PASS Point 27 [document.documentElement, 2], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 27 [document.documentElement, 2], range 51 [paras[3], 1, comment, 8] 
+PASS Point 27 [document.documentElement, 2], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 27 [document.documentElement, 2], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 27 [document.documentElement, 2], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 27 [document.documentElement, 2], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 27 [document.documentElement, 2], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 27 [document.documentElement, 2], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 27 [document.documentElement, 2], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 27 [document.documentElement, 2], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 28 [document.documentElement, 7], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 28 [document.documentElement, 7], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 28 [document.documentElement, 7], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 28 [document.documentElement, 7], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 28 [document.documentElement, 7], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 28 [document.documentElement, 7], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 28 [document.documentElement, 7], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 28 [document.documentElement, 7], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 28 [document.documentElement, 7], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 28 [document.documentElement, 7], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 28 [document.documentElement, 7], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 28 [document.documentElement, 7], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 28 [document.documentElement, 7], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 28 [document.documentElement, 7], range 13 [document.head, 1, document.head, 1] 
+PASS Point 28 [document.documentElement, 7], range 14 [document.body, 4, document.body, 5] 
+PASS Point 28 [document.documentElement, 7], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 28 [document.documentElement, 7], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 28 [document.documentElement, 7], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 28 [document.documentElement, 7], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 28 [document.documentElement, 7], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 28 [document.documentElement, 7], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 28 [document.documentElement, 7], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 28 [document.documentElement, 7], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 28 [document.documentElement, 7], range 23 [document, 0, document, 1] 
+PASS Point 28 [document.documentElement, 7], range 24 [document, 0, document, 2] 
+PASS Point 28 [document.documentElement, 7], range 25 [comment, 2, comment, 3] 
+PASS Point 28 [document.documentElement, 7], range 26 [testDiv, 0, comment, 5] 
+PASS Point 28 [document.documentElement, 7], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 28 [document.documentElement, 7], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 28 [document.documentElement, 7], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 28 [document.documentElement, 7], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 28 [document.documentElement, 7], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 28 [document.documentElement, 7], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 28 [document.documentElement, 7], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 28 [document.documentElement, 7], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 28 [document.documentElement, 7], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 28 [document.documentElement, 7], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 28 [document.documentElement, 7], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 28 [document.documentElement, 7], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 28 [document.documentElement, 7], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 28 [document.documentElement, 7], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 28 [document.documentElement, 7], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 28 [document.documentElement, 7], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 28 [document.documentElement, 7], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 28 [document.documentElement, 7], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 28 [document.documentElement, 7], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 28 [document.documentElement, 7], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 28 [document.documentElement, 7], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 28 [document.documentElement, 7], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 28 [document.documentElement, 7], range 49 [document, 1, document, 2] 
+PASS Point 28 [document.documentElement, 7], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 28 [document.documentElement, 7], range 51 [paras[3], 1, comment, 8] 
+PASS Point 28 [document.documentElement, 7], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 28 [document.documentElement, 7], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 28 [document.documentElement, 7], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 28 [document.documentElement, 7], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 28 [document.documentElement, 7], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 28 [document.documentElement, 7], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 28 [document.documentElement, 7], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 28 [document.documentElement, 7], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 29 [document.head, 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 29 [document.head, 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 29 [document.head, 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 29 [document.head, 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 29 [document.head, 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 29 [document.head, 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 29 [document.head, 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 29 [document.head, 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 29 [document.head, 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 29 [document.head, 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 29 [document.head, 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 29 [document.head, 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 29 [document.head, 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 29 [document.head, 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 29 [document.head, 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 29 [document.head, 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 29 [document.head, 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 29 [document.head, 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 29 [document.head, 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 29 [document.head, 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 29 [document.head, 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 29 [document.head, 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 29 [document.head, 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 29 [document.head, 1], range 23 [document, 0, document, 1] 
+PASS Point 29 [document.head, 1], range 24 [document, 0, document, 2] 
+PASS Point 29 [document.head, 1], range 25 [comment, 2, comment, 3] 
+PASS Point 29 [document.head, 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 29 [document.head, 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 29 [document.head, 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 29 [document.head, 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 29 [document.head, 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 29 [document.head, 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 29 [document.head, 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 29 [document.head, 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 29 [document.head, 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 29 [document.head, 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 29 [document.head, 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 29 [document.head, 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 29 [document.head, 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 29 [document.head, 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 29 [document.head, 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 29 [document.head, 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 29 [document.head, 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 29 [document.head, 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 29 [document.head, 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 29 [document.head, 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 29 [document.head, 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 29 [document.head, 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 29 [document.head, 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 29 [document.head, 1], range 49 [document, 1, document, 2] 
+PASS Point 29 [document.head, 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 29 [document.head, 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 29 [document.head, 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 29 [document.head, 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 29 [document.head, 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 29 [document.head, 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 29 [document.head, 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 29 [document.head, 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 29 [document.head, 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 29 [document.head, 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 30 [document.body, 3], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 30 [document.body, 3], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 30 [document.body, 3], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 30 [document.body, 3], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 30 [document.body, 3], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 30 [document.body, 3], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 30 [document.body, 3], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 30 [document.body, 3], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 30 [document.body, 3], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 30 [document.body, 3], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 30 [document.body, 3], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 30 [document.body, 3], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 30 [document.body, 3], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 30 [document.body, 3], range 13 [document.head, 1, document.head, 1] 
+PASS Point 30 [document.body, 3], range 14 [document.body, 4, document.body, 5] 
+PASS Point 30 [document.body, 3], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 30 [document.body, 3], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 30 [document.body, 3], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 30 [document.body, 3], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 30 [document.body, 3], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 30 [document.body, 3], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 30 [document.body, 3], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 30 [document.body, 3], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 30 [document.body, 3], range 23 [document, 0, document, 1] 
+PASS Point 30 [document.body, 3], range 24 [document, 0, document, 2] 
+PASS Point 30 [document.body, 3], range 25 [comment, 2, comment, 3] 
+PASS Point 30 [document.body, 3], range 26 [testDiv, 0, comment, 5] 
+PASS Point 30 [document.body, 3], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 30 [document.body, 3], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 30 [document.body, 3], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 30 [document.body, 3], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 30 [document.body, 3], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 30 [document.body, 3], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 30 [document.body, 3], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 30 [document.body, 3], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 30 [document.body, 3], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 30 [document.body, 3], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 30 [document.body, 3], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 30 [document.body, 3], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 30 [document.body, 3], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 30 [document.body, 3], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 30 [document.body, 3], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 30 [document.body, 3], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 30 [document.body, 3], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 30 [document.body, 3], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 30 [document.body, 3], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 30 [document.body, 3], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 30 [document.body, 3], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 30 [document.body, 3], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 30 [document.body, 3], range 49 [document, 1, document, 2] 
+PASS Point 30 [document.body, 3], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 30 [document.body, 3], range 51 [paras[3], 1, comment, 8] 
+PASS Point 30 [document.body, 3], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 30 [document.body, 3], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 30 [document.body, 3], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 30 [document.body, 3], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 30 [document.body, 3], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 30 [document.body, 3], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 30 [document.body, 3], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 30 [document.body, 3], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 23 [document, 0, document, 1] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 24 [document, 0, document, 2] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 49 [document, 1, document, 2] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 23 [document, 0, document, 1] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 24 [document, 0, document, 2] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 25 [comment, 2, comment, 3] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 49 [document, 1, document, 2] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 33 [foreignDoc.head, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 33 [foreignDoc.head, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 33 [foreignDoc.head, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 33 [foreignDoc.head, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 33 [foreignDoc.head, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 33 [foreignDoc.head, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 33 [foreignDoc.head, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 33 [foreignDoc.head, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 33 [foreignDoc.head, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 33 [foreignDoc.head, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 33 [foreignDoc.head, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 33 [foreignDoc.head, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 33 [foreignDoc.head, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 33 [foreignDoc.head, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 33 [foreignDoc.head, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 33 [foreignDoc.head, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 33 [foreignDoc.head, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 33 [foreignDoc.head, 0], range 23 [document, 0, document, 1] 
+PASS Point 33 [foreignDoc.head, 0], range 24 [document, 0, document, 2] 
+PASS Point 33 [foreignDoc.head, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 33 [foreignDoc.head, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 33 [foreignDoc.head, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 33 [foreignDoc.head, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 33 [foreignDoc.head, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 33 [foreignDoc.head, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 33 [foreignDoc.head, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 33 [foreignDoc.head, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 33 [foreignDoc.head, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 33 [foreignDoc.head, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 33 [foreignDoc.head, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 33 [foreignDoc.head, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 33 [foreignDoc.head, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 33 [foreignDoc.head, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 33 [foreignDoc.head, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 33 [foreignDoc.head, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 33 [foreignDoc.head, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 33 [foreignDoc.head, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 33 [foreignDoc.head, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 49 [document, 1, document, 2] 
+PASS Point 33 [foreignDoc.head, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 33 [foreignDoc.head, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 33 [foreignDoc.head, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 33 [foreignDoc.head, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 33 [foreignDoc.head, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 33 [foreignDoc.head, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 33 [foreignDoc.head, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 34 [foreignDoc.body, 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 34 [foreignDoc.body, 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 34 [foreignDoc.body, 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 34 [foreignDoc.body, 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 34 [foreignDoc.body, 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 34 [foreignDoc.body, 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 34 [foreignDoc.body, 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 34 [foreignDoc.body, 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 34 [foreignDoc.body, 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 34 [foreignDoc.body, 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 34 [foreignDoc.body, 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 34 [foreignDoc.body, 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 34 [foreignDoc.body, 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 34 [foreignDoc.body, 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 34 [foreignDoc.body, 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 34 [foreignDoc.body, 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 34 [foreignDoc.body, 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 34 [foreignDoc.body, 1], range 23 [document, 0, document, 1] 
+PASS Point 34 [foreignDoc.body, 1], range 24 [document, 0, document, 2] 
+PASS Point 34 [foreignDoc.body, 1], range 25 [comment, 2, comment, 3] 
+PASS Point 34 [foreignDoc.body, 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 34 [foreignDoc.body, 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 34 [foreignDoc.body, 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 34 [foreignDoc.body, 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 34 [foreignDoc.body, 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 34 [foreignDoc.body, 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 34 [foreignDoc.body, 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 34 [foreignDoc.body, 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 34 [foreignDoc.body, 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 34 [foreignDoc.body, 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 34 [foreignDoc.body, 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 34 [foreignDoc.body, 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 34 [foreignDoc.body, 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 34 [foreignDoc.body, 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 34 [foreignDoc.body, 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 34 [foreignDoc.body, 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 34 [foreignDoc.body, 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 34 [foreignDoc.body, 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 49 [document, 1, document, 2] 
+PASS Point 34 [foreignDoc.body, 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 34 [foreignDoc.body, 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 34 [foreignDoc.body, 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 34 [foreignDoc.body, 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 34 [foreignDoc.body, 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 34 [foreignDoc.body, 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 34 [foreignDoc.body, 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 35 [paras[0], 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 35 [paras[0], 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 35 [paras[0], 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 35 [paras[0], 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 35 [paras[0], 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 35 [paras[0], 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 35 [paras[0], 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 35 [paras[0], 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 35 [paras[0], 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 35 [paras[0], 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 35 [paras[0], 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 35 [paras[0], 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 35 [paras[0], 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 35 [paras[0], 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 35 [paras[0], 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 35 [paras[0], 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 35 [paras[0], 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 35 [paras[0], 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 35 [paras[0], 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 35 [paras[0], 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 35 [paras[0], 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 35 [paras[0], 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 35 [paras[0], 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 35 [paras[0], 0], range 23 [document, 0, document, 1] 
+PASS Point 35 [paras[0], 0], range 24 [document, 0, document, 2] 
+PASS Point 35 [paras[0], 0], range 25 [comment, 2, comment, 3] 
+PASS Point 35 [paras[0], 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 35 [paras[0], 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 35 [paras[0], 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 35 [paras[0], 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 35 [paras[0], 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 35 [paras[0], 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 35 [paras[0], 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 35 [paras[0], 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 35 [paras[0], 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 35 [paras[0], 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 35 [paras[0], 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 35 [paras[0], 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 35 [paras[0], 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 35 [paras[0], 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 35 [paras[0], 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 35 [paras[0], 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 35 [paras[0], 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 35 [paras[0], 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 35 [paras[0], 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 35 [paras[0], 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 35 [paras[0], 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 35 [paras[0], 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 35 [paras[0], 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 35 [paras[0], 0], range 49 [document, 1, document, 2] 
+PASS Point 35 [paras[0], 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 35 [paras[0], 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 35 [paras[0], 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 35 [paras[0], 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 35 [paras[0], 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 35 [paras[0], 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 35 [paras[0], 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 35 [paras[0], 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 35 [paras[0], 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 35 [paras[0], 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 36 [paras[0], 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 36 [paras[0], 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 36 [paras[0], 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 36 [paras[0], 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 36 [paras[0], 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 36 [paras[0], 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 36 [paras[0], 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 36 [paras[0], 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 36 [paras[0], 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 36 [paras[0], 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 36 [paras[0], 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 36 [paras[0], 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 36 [paras[0], 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 36 [paras[0], 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 36 [paras[0], 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 36 [paras[0], 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 36 [paras[0], 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 36 [paras[0], 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 36 [paras[0], 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 36 [paras[0], 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 36 [paras[0], 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 36 [paras[0], 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 36 [paras[0], 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 36 [paras[0], 1], range 23 [document, 0, document, 1] 
+PASS Point 36 [paras[0], 1], range 24 [document, 0, document, 2] 
+PASS Point 36 [paras[0], 1], range 25 [comment, 2, comment, 3] 
+PASS Point 36 [paras[0], 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 36 [paras[0], 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 36 [paras[0], 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 36 [paras[0], 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 36 [paras[0], 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 36 [paras[0], 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 36 [paras[0], 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 36 [paras[0], 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 36 [paras[0], 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 36 [paras[0], 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 36 [paras[0], 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 36 [paras[0], 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 36 [paras[0], 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 36 [paras[0], 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 36 [paras[0], 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 36 [paras[0], 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 36 [paras[0], 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 36 [paras[0], 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 36 [paras[0], 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 36 [paras[0], 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 36 [paras[0], 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 36 [paras[0], 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 36 [paras[0], 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 36 [paras[0], 1], range 49 [document, 1, document, 2] 
+PASS Point 36 [paras[0], 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 36 [paras[0], 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 36 [paras[0], 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 36 [paras[0], 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 36 [paras[0], 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 36 [paras[0], 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 36 [paras[0], 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 36 [paras[0], 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 36 [paras[0], 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 36 [paras[0], 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 37 [paras[0], 2], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 37 [paras[0], 2], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 37 [paras[0], 2], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 37 [paras[0], 2], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 37 [paras[0], 2], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 37 [paras[0], 2], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 37 [paras[0], 2], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 37 [paras[0], 2], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 37 [paras[0], 2], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 37 [paras[0], 2], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 37 [paras[0], 2], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 37 [paras[0], 2], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 37 [paras[0], 2], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 37 [paras[0], 2], range 13 [document.head, 1, document.head, 1] 
+PASS Point 37 [paras[0], 2], range 14 [document.body, 4, document.body, 5] 
+PASS Point 37 [paras[0], 2], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 37 [paras[0], 2], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 37 [paras[0], 2], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 37 [paras[0], 2], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 37 [paras[0], 2], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 37 [paras[0], 2], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 37 [paras[0], 2], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 37 [paras[0], 2], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 37 [paras[0], 2], range 23 [document, 0, document, 1] 
+PASS Point 37 [paras[0], 2], range 24 [document, 0, document, 2] 
+PASS Point 37 [paras[0], 2], range 25 [comment, 2, comment, 3] 
+PASS Point 37 [paras[0], 2], range 26 [testDiv, 0, comment, 5] 
+PASS Point 37 [paras[0], 2], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 37 [paras[0], 2], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 37 [paras[0], 2], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 37 [paras[0], 2], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 37 [paras[0], 2], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 37 [paras[0], 2], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 37 [paras[0], 2], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 37 [paras[0], 2], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 37 [paras[0], 2], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 37 [paras[0], 2], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 37 [paras[0], 2], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 37 [paras[0], 2], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 37 [paras[0], 2], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 37 [paras[0], 2], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 37 [paras[0], 2], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 37 [paras[0], 2], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 37 [paras[0], 2], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 37 [paras[0], 2], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 37 [paras[0], 2], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 37 [paras[0], 2], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 37 [paras[0], 2], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 37 [paras[0], 2], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 37 [paras[0], 2], range 49 [document, 1, document, 2] 
+PASS Point 37 [paras[0], 2], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 37 [paras[0], 2], range 51 [paras[3], 1, comment, 8] 
+PASS Point 37 [paras[0], 2], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 37 [paras[0], 2], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 37 [paras[0], 2], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 37 [paras[0], 2], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 37 [paras[0], 2], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 37 [paras[0], 2], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 37 [paras[0], 2], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 37 [paras[0], 2], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 38 [paras[1], 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 38 [paras[1], 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 38 [paras[1], 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 38 [paras[1], 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 38 [paras[1], 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 38 [paras[1], 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 38 [paras[1], 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 38 [paras[1], 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 38 [paras[1], 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 38 [paras[1], 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 38 [paras[1], 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 38 [paras[1], 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 38 [paras[1], 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 38 [paras[1], 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 38 [paras[1], 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 38 [paras[1], 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 38 [paras[1], 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 38 [paras[1], 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 38 [paras[1], 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 38 [paras[1], 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 38 [paras[1], 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 38 [paras[1], 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 38 [paras[1], 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 38 [paras[1], 0], range 23 [document, 0, document, 1] 
+PASS Point 38 [paras[1], 0], range 24 [document, 0, document, 2] 
+PASS Point 38 [paras[1], 0], range 25 [comment, 2, comment, 3] 
+PASS Point 38 [paras[1], 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 38 [paras[1], 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 38 [paras[1], 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 38 [paras[1], 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 38 [paras[1], 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 38 [paras[1], 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 38 [paras[1], 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 38 [paras[1], 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 38 [paras[1], 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 38 [paras[1], 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 38 [paras[1], 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 38 [paras[1], 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 38 [paras[1], 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 38 [paras[1], 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 38 [paras[1], 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 38 [paras[1], 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 38 [paras[1], 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 38 [paras[1], 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 38 [paras[1], 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 38 [paras[1], 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 38 [paras[1], 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 38 [paras[1], 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 38 [paras[1], 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 38 [paras[1], 0], range 49 [document, 1, document, 2] 
+PASS Point 38 [paras[1], 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 38 [paras[1], 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 38 [paras[1], 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 38 [paras[1], 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 38 [paras[1], 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 38 [paras[1], 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 38 [paras[1], 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 38 [paras[1], 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 38 [paras[1], 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 38 [paras[1], 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 39 [paras[1], 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 39 [paras[1], 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 39 [paras[1], 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 39 [paras[1], 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 39 [paras[1], 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 39 [paras[1], 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 39 [paras[1], 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 39 [paras[1], 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 39 [paras[1], 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 39 [paras[1], 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 39 [paras[1], 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 39 [paras[1], 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 39 [paras[1], 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 39 [paras[1], 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 39 [paras[1], 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 39 [paras[1], 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 39 [paras[1], 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 39 [paras[1], 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 39 [paras[1], 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 39 [paras[1], 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 39 [paras[1], 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 39 [paras[1], 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 39 [paras[1], 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 39 [paras[1], 1], range 23 [document, 0, document, 1] 
+PASS Point 39 [paras[1], 1], range 24 [document, 0, document, 2] 
+PASS Point 39 [paras[1], 1], range 25 [comment, 2, comment, 3] 
+PASS Point 39 [paras[1], 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 39 [paras[1], 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 39 [paras[1], 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 39 [paras[1], 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 39 [paras[1], 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 39 [paras[1], 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 39 [paras[1], 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 39 [paras[1], 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 39 [paras[1], 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 39 [paras[1], 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 39 [paras[1], 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 39 [paras[1], 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 39 [paras[1], 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 39 [paras[1], 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 39 [paras[1], 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 39 [paras[1], 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 39 [paras[1], 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 39 [paras[1], 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 39 [paras[1], 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 39 [paras[1], 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 39 [paras[1], 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 39 [paras[1], 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 39 [paras[1], 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 39 [paras[1], 1], range 49 [document, 1, document, 2] 
+PASS Point 39 [paras[1], 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 39 [paras[1], 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 39 [paras[1], 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 39 [paras[1], 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 39 [paras[1], 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 39 [paras[1], 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 39 [paras[1], 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 39 [paras[1], 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 39 [paras[1], 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 39 [paras[1], 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 40 [paras[1], 2], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 40 [paras[1], 2], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 40 [paras[1], 2], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 40 [paras[1], 2], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 40 [paras[1], 2], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 40 [paras[1], 2], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 40 [paras[1], 2], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 40 [paras[1], 2], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 40 [paras[1], 2], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 40 [paras[1], 2], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 40 [paras[1], 2], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 40 [paras[1], 2], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 40 [paras[1], 2], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 40 [paras[1], 2], range 13 [document.head, 1, document.head, 1] 
+PASS Point 40 [paras[1], 2], range 14 [document.body, 4, document.body, 5] 
+PASS Point 40 [paras[1], 2], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 40 [paras[1], 2], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 40 [paras[1], 2], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 40 [paras[1], 2], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 40 [paras[1], 2], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 40 [paras[1], 2], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 40 [paras[1], 2], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 40 [paras[1], 2], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 40 [paras[1], 2], range 23 [document, 0, document, 1] 
+PASS Point 40 [paras[1], 2], range 24 [document, 0, document, 2] 
+PASS Point 40 [paras[1], 2], range 25 [comment, 2, comment, 3] 
+PASS Point 40 [paras[1], 2], range 26 [testDiv, 0, comment, 5] 
+PASS Point 40 [paras[1], 2], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 40 [paras[1], 2], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 40 [paras[1], 2], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 40 [paras[1], 2], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 40 [paras[1], 2], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 40 [paras[1], 2], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 40 [paras[1], 2], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 40 [paras[1], 2], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 40 [paras[1], 2], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 40 [paras[1], 2], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 40 [paras[1], 2], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 40 [paras[1], 2], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 40 [paras[1], 2], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 40 [paras[1], 2], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 40 [paras[1], 2], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 40 [paras[1], 2], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 40 [paras[1], 2], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 40 [paras[1], 2], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 40 [paras[1], 2], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 40 [paras[1], 2], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 40 [paras[1], 2], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 40 [paras[1], 2], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 40 [paras[1], 2], range 49 [document, 1, document, 2] 
+PASS Point 40 [paras[1], 2], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 40 [paras[1], 2], range 51 [paras[3], 1, comment, 8] 
+PASS Point 40 [paras[1], 2], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 40 [paras[1], 2], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 40 [paras[1], 2], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 40 [paras[1], 2], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 40 [paras[1], 2], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 40 [paras[1], 2], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 40 [paras[1], 2], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 40 [paras[1], 2], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 41 [detachedPara1, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 41 [detachedPara1, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 41 [detachedPara1, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 41 [detachedPara1, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 41 [detachedPara1, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 41 [detachedPara1, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 41 [detachedPara1, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 41 [detachedPara1, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 41 [detachedPara1, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 41 [detachedPara1, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 41 [detachedPara1, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 41 [detachedPara1, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 41 [detachedPara1, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 41 [detachedPara1, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 41 [detachedPara1, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 41 [detachedPara1, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 41 [detachedPara1, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 41 [detachedPara1, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 41 [detachedPara1, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 41 [detachedPara1, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 41 [detachedPara1, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 41 [detachedPara1, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 41 [detachedPara1, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 41 [detachedPara1, 0], range 23 [document, 0, document, 1] 
+PASS Point 41 [detachedPara1, 0], range 24 [document, 0, document, 2] 
+PASS Point 41 [detachedPara1, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 41 [detachedPara1, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 41 [detachedPara1, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 41 [detachedPara1, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 41 [detachedPara1, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 41 [detachedPara1, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 41 [detachedPara1, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 41 [detachedPara1, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 41 [detachedPara1, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 41 [detachedPara1, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 41 [detachedPara1, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 41 [detachedPara1, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 41 [detachedPara1, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 41 [detachedPara1, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 41 [detachedPara1, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 41 [detachedPara1, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 41 [detachedPara1, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 41 [detachedPara1, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 41 [detachedPara1, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 41 [detachedPara1, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 41 [detachedPara1, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 41 [detachedPara1, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 41 [detachedPara1, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 41 [detachedPara1, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 41 [detachedPara1, 0], range 49 [document, 1, document, 2] 
+PASS Point 41 [detachedPara1, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 41 [detachedPara1, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 41 [detachedPara1, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 41 [detachedPara1, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 41 [detachedPara1, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 41 [detachedPara1, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 41 [detachedPara1, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 41 [detachedPara1, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 41 [detachedPara1, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 41 [detachedPara1, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 42 [detachedPara1, 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 42 [detachedPara1, 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 42 [detachedPara1, 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 42 [detachedPara1, 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 42 [detachedPara1, 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 42 [detachedPara1, 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 42 [detachedPara1, 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 42 [detachedPara1, 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 42 [detachedPara1, 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 42 [detachedPara1, 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 42 [detachedPara1, 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 42 [detachedPara1, 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 42 [detachedPara1, 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 42 [detachedPara1, 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 42 [detachedPara1, 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 42 [detachedPara1, 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 42 [detachedPara1, 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 42 [detachedPara1, 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 42 [detachedPara1, 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 42 [detachedPara1, 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 42 [detachedPara1, 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 42 [detachedPara1, 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 42 [detachedPara1, 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 42 [detachedPara1, 1], range 23 [document, 0, document, 1] 
+PASS Point 42 [detachedPara1, 1], range 24 [document, 0, document, 2] 
+PASS Point 42 [detachedPara1, 1], range 25 [comment, 2, comment, 3] 
+PASS Point 42 [detachedPara1, 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 42 [detachedPara1, 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 42 [detachedPara1, 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 42 [detachedPara1, 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 42 [detachedPara1, 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 42 [detachedPara1, 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 42 [detachedPara1, 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 42 [detachedPara1, 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 42 [detachedPara1, 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 42 [detachedPara1, 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 42 [detachedPara1, 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 42 [detachedPara1, 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 42 [detachedPara1, 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 42 [detachedPara1, 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 42 [detachedPara1, 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 42 [detachedPara1, 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 42 [detachedPara1, 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 42 [detachedPara1, 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 42 [detachedPara1, 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 42 [detachedPara1, 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 42 [detachedPara1, 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 42 [detachedPara1, 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 42 [detachedPara1, 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 42 [detachedPara1, 1], range 49 [document, 1, document, 2] 
+PASS Point 42 [detachedPara1, 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 42 [detachedPara1, 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 42 [detachedPara1, 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 42 [detachedPara1, 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 42 [detachedPara1, 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 42 [detachedPara1, 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 42 [detachedPara1, 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 42 [detachedPara1, 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 42 [detachedPara1, 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 42 [detachedPara1, 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 43 [testDiv, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 43 [testDiv, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 43 [testDiv, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 43 [testDiv, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 43 [testDiv, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 43 [testDiv, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 43 [testDiv, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 43 [testDiv, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 43 [testDiv, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 43 [testDiv, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 43 [testDiv, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 43 [testDiv, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 43 [testDiv, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 43 [testDiv, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 43 [testDiv, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 43 [testDiv, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 43 [testDiv, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 43 [testDiv, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 43 [testDiv, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 43 [testDiv, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 43 [testDiv, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 43 [testDiv, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 43 [testDiv, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 43 [testDiv, 0], range 23 [document, 0, document, 1] 
+PASS Point 43 [testDiv, 0], range 24 [document, 0, document, 2] 
+PASS Point 43 [testDiv, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 43 [testDiv, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 43 [testDiv, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 43 [testDiv, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 43 [testDiv, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 43 [testDiv, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 43 [testDiv, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 43 [testDiv, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 43 [testDiv, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 43 [testDiv, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 43 [testDiv, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 43 [testDiv, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 43 [testDiv, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 43 [testDiv, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 43 [testDiv, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 43 [testDiv, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 43 [testDiv, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 43 [testDiv, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 43 [testDiv, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 43 [testDiv, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 43 [testDiv, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 43 [testDiv, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 43 [testDiv, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 43 [testDiv, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 43 [testDiv, 0], range 49 [document, 1, document, 2] 
+PASS Point 43 [testDiv, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 43 [testDiv, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 43 [testDiv, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 43 [testDiv, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 43 [testDiv, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 43 [testDiv, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 43 [testDiv, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 43 [testDiv, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 43 [testDiv, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 43 [testDiv, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 44 [testDiv, 3], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 44 [testDiv, 3], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 44 [testDiv, 3], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 44 [testDiv, 3], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 44 [testDiv, 3], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 44 [testDiv, 3], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 44 [testDiv, 3], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 44 [testDiv, 3], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 44 [testDiv, 3], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 44 [testDiv, 3], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 44 [testDiv, 3], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 44 [testDiv, 3], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 44 [testDiv, 3], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 44 [testDiv, 3], range 13 [document.head, 1, document.head, 1] 
+PASS Point 44 [testDiv, 3], range 14 [document.body, 4, document.body, 5] 
+PASS Point 44 [testDiv, 3], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 44 [testDiv, 3], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 44 [testDiv, 3], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 44 [testDiv, 3], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 44 [testDiv, 3], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 44 [testDiv, 3], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 44 [testDiv, 3], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 44 [testDiv, 3], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 44 [testDiv, 3], range 23 [document, 0, document, 1] 
+PASS Point 44 [testDiv, 3], range 24 [document, 0, document, 2] 
+PASS Point 44 [testDiv, 3], range 25 [comment, 2, comment, 3] 
+PASS Point 44 [testDiv, 3], range 26 [testDiv, 0, comment, 5] 
+PASS Point 44 [testDiv, 3], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 44 [testDiv, 3], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 44 [testDiv, 3], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 44 [testDiv, 3], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 44 [testDiv, 3], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 44 [testDiv, 3], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 44 [testDiv, 3], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 44 [testDiv, 3], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 44 [testDiv, 3], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 44 [testDiv, 3], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 44 [testDiv, 3], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 44 [testDiv, 3], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 44 [testDiv, 3], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 44 [testDiv, 3], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 44 [testDiv, 3], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 44 [testDiv, 3], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 44 [testDiv, 3], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 44 [testDiv, 3], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 44 [testDiv, 3], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 44 [testDiv, 3], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 44 [testDiv, 3], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 44 [testDiv, 3], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 44 [testDiv, 3], range 49 [document, 1, document, 2] 
+PASS Point 44 [testDiv, 3], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 44 [testDiv, 3], range 51 [paras[3], 1, comment, 8] 
+PASS Point 44 [testDiv, 3], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 44 [testDiv, 3], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 44 [testDiv, 3], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 44 [testDiv, 3], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 44 [testDiv, 3], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 44 [testDiv, 3], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 44 [testDiv, 3], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 44 [testDiv, 3], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 45 [document, -1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 45 [document, -1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 45 [document, -1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 45 [document, -1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 45 [document, -1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 45 [document, -1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 45 [document, -1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 45 [document, -1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 45 [document, -1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 45 [document, -1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 45 [document, -1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 45 [document, -1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 45 [document, -1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 45 [document, -1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 45 [document, -1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 45 [document, -1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 45 [document, -1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 45 [document, -1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 45 [document, -1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 45 [document, -1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 45 [document, -1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 45 [document, -1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 45 [document, -1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 45 [document, -1], range 23 [document, 0, document, 1] 
+PASS Point 45 [document, -1], range 24 [document, 0, document, 2] 
+PASS Point 45 [document, -1], range 25 [comment, 2, comment, 3] 
+PASS Point 45 [document, -1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 45 [document, -1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 45 [document, -1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 45 [document, -1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 45 [document, -1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 45 [document, -1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 45 [document, -1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 45 [document, -1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 45 [document, -1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 45 [document, -1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 45 [document, -1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 45 [document, -1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 45 [document, -1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 45 [document, -1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 45 [document, -1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 45 [document, -1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 45 [document, -1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 45 [document, -1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 45 [document, -1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 45 [document, -1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 45 [document, -1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 45 [document, -1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 45 [document, -1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 45 [document, -1], range 49 [document, 1, document, 2] 
+PASS Point 45 [document, -1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 45 [document, -1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 45 [document, -1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 45 [document, -1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 45 [document, -1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 45 [document, -1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 45 [document, -1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 45 [document, -1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 45 [document, -1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 45 [document, -1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 46 [document, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 46 [document, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 46 [document, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 46 [document, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 46 [document, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 46 [document, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 46 [document, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 46 [document, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 46 [document, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 46 [document, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 46 [document, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 46 [document, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 46 [document, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 46 [document, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 46 [document, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 46 [document, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 46 [document, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 46 [document, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 46 [document, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 46 [document, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 46 [document, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 46 [document, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 46 [document, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 46 [document, 0], range 23 [document, 0, document, 1] 
+PASS Point 46 [document, 0], range 24 [document, 0, document, 2] 
+PASS Point 46 [document, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 46 [document, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 46 [document, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 46 [document, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 46 [document, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 46 [document, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 46 [document, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 46 [document, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 46 [document, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 46 [document, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 46 [document, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 46 [document, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 46 [document, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 46 [document, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 46 [document, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 46 [document, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 46 [document, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 46 [document, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 46 [document, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 46 [document, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 46 [document, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 46 [document, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 46 [document, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 46 [document, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 46 [document, 0], range 49 [document, 1, document, 2] 
+PASS Point 46 [document, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 46 [document, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 46 [document, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 46 [document, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 46 [document, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 46 [document, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 46 [document, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 46 [document, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 46 [document, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 46 [document, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 47 [document, 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 47 [document, 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 47 [document, 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 47 [document, 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 47 [document, 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 47 [document, 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 47 [document, 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 47 [document, 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 47 [document, 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 47 [document, 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 47 [document, 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 47 [document, 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 47 [document, 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 47 [document, 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 47 [document, 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 47 [document, 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 47 [document, 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 47 [document, 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 47 [document, 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 47 [document, 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 47 [document, 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 47 [document, 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 47 [document, 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 47 [document, 1], range 23 [document, 0, document, 1] 
+PASS Point 47 [document, 1], range 24 [document, 0, document, 2] 
+PASS Point 47 [document, 1], range 25 [comment, 2, comment, 3] 
+PASS Point 47 [document, 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 47 [document, 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 47 [document, 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 47 [document, 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 47 [document, 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 47 [document, 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 47 [document, 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 47 [document, 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 47 [document, 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 47 [document, 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 47 [document, 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 47 [document, 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 47 [document, 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 47 [document, 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 47 [document, 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 47 [document, 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 47 [document, 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 47 [document, 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 47 [document, 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 47 [document, 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 47 [document, 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 47 [document, 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 47 [document, 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 47 [document, 1], range 49 [document, 1, document, 2] 
+PASS Point 47 [document, 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 47 [document, 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 47 [document, 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 47 [document, 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 47 [document, 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 47 [document, 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 47 [document, 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 47 [document, 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 47 [document, 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 47 [document, 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 48 [document, 2], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 48 [document, 2], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 48 [document, 2], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 48 [document, 2], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 48 [document, 2], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 48 [document, 2], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 48 [document, 2], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 48 [document, 2], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 48 [document, 2], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 48 [document, 2], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 48 [document, 2], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 48 [document, 2], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 48 [document, 2], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 48 [document, 2], range 13 [document.head, 1, document.head, 1] 
+PASS Point 48 [document, 2], range 14 [document.body, 4, document.body, 5] 
+PASS Point 48 [document, 2], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 48 [document, 2], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 48 [document, 2], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 48 [document, 2], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 48 [document, 2], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 48 [document, 2], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 48 [document, 2], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 48 [document, 2], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 48 [document, 2], range 23 [document, 0, document, 1] 
+PASS Point 48 [document, 2], range 24 [document, 0, document, 2] 
+PASS Point 48 [document, 2], range 25 [comment, 2, comment, 3] 
+PASS Point 48 [document, 2], range 26 [testDiv, 0, comment, 5] 
+PASS Point 48 [document, 2], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 48 [document, 2], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 48 [document, 2], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 48 [document, 2], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 48 [document, 2], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 48 [document, 2], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 48 [document, 2], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 48 [document, 2], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 48 [document, 2], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 48 [document, 2], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 48 [document, 2], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 48 [document, 2], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 48 [document, 2], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 48 [document, 2], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 48 [document, 2], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 48 [document, 2], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 48 [document, 2], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 48 [document, 2], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 48 [document, 2], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 48 [document, 2], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 48 [document, 2], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 48 [document, 2], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 48 [document, 2], range 49 [document, 1, document, 2] 
+PASS Point 48 [document, 2], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 48 [document, 2], range 51 [paras[3], 1, comment, 8] 
+PASS Point 48 [document, 2], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 48 [document, 2], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 48 [document, 2], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 48 [document, 2], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 48 [document, 2], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 48 [document, 2], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 48 [document, 2], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 48 [document, 2], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 49 [document, 3], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 49 [document, 3], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 49 [document, 3], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 49 [document, 3], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 49 [document, 3], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 49 [document, 3], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 49 [document, 3], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 49 [document, 3], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 49 [document, 3], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 49 [document, 3], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 49 [document, 3], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 49 [document, 3], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 49 [document, 3], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 49 [document, 3], range 13 [document.head, 1, document.head, 1] 
+PASS Point 49 [document, 3], range 14 [document.body, 4, document.body, 5] 
+PASS Point 49 [document, 3], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 49 [document, 3], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 49 [document, 3], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 49 [document, 3], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 49 [document, 3], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 49 [document, 3], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 49 [document, 3], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 49 [document, 3], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 49 [document, 3], range 23 [document, 0, document, 1] 
+PASS Point 49 [document, 3], range 24 [document, 0, document, 2] 
+PASS Point 49 [document, 3], range 25 [comment, 2, comment, 3] 
+PASS Point 49 [document, 3], range 26 [testDiv, 0, comment, 5] 
+PASS Point 49 [document, 3], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 49 [document, 3], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 49 [document, 3], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 49 [document, 3], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 49 [document, 3], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 49 [document, 3], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 49 [document, 3], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 49 [document, 3], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 49 [document, 3], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 49 [document, 3], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 49 [document, 3], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 49 [document, 3], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 49 [document, 3], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 49 [document, 3], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 49 [document, 3], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 49 [document, 3], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 49 [document, 3], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 49 [document, 3], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 49 [document, 3], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 49 [document, 3], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 49 [document, 3], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 49 [document, 3], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 49 [document, 3], range 49 [document, 1, document, 2] 
+PASS Point 49 [document, 3], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 49 [document, 3], range 51 [paras[3], 1, comment, 8] 
+PASS Point 49 [document, 3], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 49 [document, 3], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 49 [document, 3], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 49 [document, 3], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 49 [document, 3], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 49 [document, 3], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 49 [document, 3], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 49 [document, 3], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 50 [comment, -1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 50 [comment, -1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 50 [comment, -1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 50 [comment, -1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 50 [comment, -1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 50 [comment, -1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 50 [comment, -1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 50 [comment, -1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 50 [comment, -1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 50 [comment, -1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 50 [comment, -1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 50 [comment, -1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 50 [comment, -1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 50 [comment, -1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 50 [comment, -1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 50 [comment, -1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 50 [comment, -1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 50 [comment, -1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 50 [comment, -1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 50 [comment, -1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 50 [comment, -1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 50 [comment, -1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 50 [comment, -1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 50 [comment, -1], range 23 [document, 0, document, 1] 
+PASS Point 50 [comment, -1], range 24 [document, 0, document, 2] 
+PASS Point 50 [comment, -1], range 25 [comment, 2, comment, 3] 
+PASS Point 50 [comment, -1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 50 [comment, -1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 50 [comment, -1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 50 [comment, -1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 50 [comment, -1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 50 [comment, -1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 50 [comment, -1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 50 [comment, -1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 50 [comment, -1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 50 [comment, -1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 50 [comment, -1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 50 [comment, -1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 50 [comment, -1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 50 [comment, -1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 50 [comment, -1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 50 [comment, -1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 50 [comment, -1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 50 [comment, -1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 50 [comment, -1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 50 [comment, -1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 50 [comment, -1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 50 [comment, -1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 50 [comment, -1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 50 [comment, -1], range 49 [document, 1, document, 2] 
+PASS Point 50 [comment, -1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 50 [comment, -1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 50 [comment, -1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 50 [comment, -1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 50 [comment, -1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 50 [comment, -1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 50 [comment, -1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 50 [comment, -1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 50 [comment, -1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 50 [comment, -1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 51 [comment, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 51 [comment, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 51 [comment, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 51 [comment, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 51 [comment, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 51 [comment, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 51 [comment, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 51 [comment, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 51 [comment, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 51 [comment, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 51 [comment, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 51 [comment, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 51 [comment, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 51 [comment, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 51 [comment, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 51 [comment, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 51 [comment, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 51 [comment, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 51 [comment, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 51 [comment, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 51 [comment, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 51 [comment, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 51 [comment, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 51 [comment, 0], range 23 [document, 0, document, 1] 
+PASS Point 51 [comment, 0], range 24 [document, 0, document, 2] 
+PASS Point 51 [comment, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 51 [comment, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 51 [comment, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 51 [comment, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 51 [comment, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 51 [comment, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 51 [comment, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 51 [comment, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 51 [comment, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 51 [comment, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 51 [comment, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 51 [comment, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 51 [comment, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 51 [comment, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 51 [comment, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 51 [comment, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 51 [comment, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 51 [comment, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 51 [comment, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 51 [comment, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 51 [comment, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 51 [comment, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 51 [comment, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 51 [comment, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 51 [comment, 0], range 49 [document, 1, document, 2] 
+PASS Point 51 [comment, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 51 [comment, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 51 [comment, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 51 [comment, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 51 [comment, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 51 [comment, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 51 [comment, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 51 [comment, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 51 [comment, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 51 [comment, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 52 [comment, 4], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 52 [comment, 4], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 52 [comment, 4], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 52 [comment, 4], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 52 [comment, 4], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 52 [comment, 4], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 52 [comment, 4], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 52 [comment, 4], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 52 [comment, 4], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 52 [comment, 4], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 52 [comment, 4], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 52 [comment, 4], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 52 [comment, 4], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 52 [comment, 4], range 13 [document.head, 1, document.head, 1] 
+PASS Point 52 [comment, 4], range 14 [document.body, 4, document.body, 5] 
+PASS Point 52 [comment, 4], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 52 [comment, 4], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 52 [comment, 4], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 52 [comment, 4], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 52 [comment, 4], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 52 [comment, 4], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 52 [comment, 4], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 52 [comment, 4], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 52 [comment, 4], range 23 [document, 0, document, 1] 
+PASS Point 52 [comment, 4], range 24 [document, 0, document, 2] 
+PASS Point 52 [comment, 4], range 25 [comment, 2, comment, 3] 
+PASS Point 52 [comment, 4], range 26 [testDiv, 0, comment, 5] 
+PASS Point 52 [comment, 4], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 52 [comment, 4], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 52 [comment, 4], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 52 [comment, 4], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 52 [comment, 4], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 52 [comment, 4], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 52 [comment, 4], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 52 [comment, 4], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 52 [comment, 4], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 52 [comment, 4], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 52 [comment, 4], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 52 [comment, 4], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 52 [comment, 4], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 52 [comment, 4], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 52 [comment, 4], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 52 [comment, 4], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 52 [comment, 4], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 52 [comment, 4], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 52 [comment, 4], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 52 [comment, 4], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 52 [comment, 4], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 52 [comment, 4], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 52 [comment, 4], range 49 [document, 1, document, 2] 
+PASS Point 52 [comment, 4], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 52 [comment, 4], range 51 [paras[3], 1, comment, 8] 
+PASS Point 52 [comment, 4], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 52 [comment, 4], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 52 [comment, 4], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 52 [comment, 4], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 52 [comment, 4], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 52 [comment, 4], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 52 [comment, 4], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 52 [comment, 4], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 53 [comment, 96], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 53 [comment, 96], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 53 [comment, 96], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 53 [comment, 96], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 53 [comment, 96], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 53 [comment, 96], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 53 [comment, 96], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 53 [comment, 96], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 53 [comment, 96], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 53 [comment, 96], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 53 [comment, 96], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 53 [comment, 96], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 53 [comment, 96], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 53 [comment, 96], range 13 [document.head, 1, document.head, 1] 
+PASS Point 53 [comment, 96], range 14 [document.body, 4, document.body, 5] 
+PASS Point 53 [comment, 96], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 53 [comment, 96], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 53 [comment, 96], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 53 [comment, 96], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 53 [comment, 96], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 53 [comment, 96], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 53 [comment, 96], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 53 [comment, 96], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 53 [comment, 96], range 23 [document, 0, document, 1] 
+PASS Point 53 [comment, 96], range 24 [document, 0, document, 2] 
+PASS Point 53 [comment, 96], range 25 [comment, 2, comment, 3] 
+PASS Point 53 [comment, 96], range 26 [testDiv, 0, comment, 5] 
+PASS Point 53 [comment, 96], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 53 [comment, 96], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 53 [comment, 96], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 53 [comment, 96], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 53 [comment, 96], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 53 [comment, 96], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 53 [comment, 96], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 53 [comment, 96], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 53 [comment, 96], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 53 [comment, 96], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 53 [comment, 96], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 53 [comment, 96], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 53 [comment, 96], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 53 [comment, 96], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 53 [comment, 96], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 53 [comment, 96], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 53 [comment, 96], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 53 [comment, 96], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 53 [comment, 96], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 53 [comment, 96], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 53 [comment, 96], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 53 [comment, 96], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 53 [comment, 96], range 49 [document, 1, document, 2] 
+PASS Point 53 [comment, 96], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 53 [comment, 96], range 51 [paras[3], 1, comment, 8] 
+PASS Point 53 [comment, 96], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 53 [comment, 96], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 53 [comment, 96], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 53 [comment, 96], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 53 [comment, 96], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 53 [comment, 96], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 53 [comment, 96], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 53 [comment, 96], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 54 [foreignDoc, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 54 [foreignDoc, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 54 [foreignDoc, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 54 [foreignDoc, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 54 [foreignDoc, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 54 [foreignDoc, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 54 [foreignDoc, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 54 [foreignDoc, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 54 [foreignDoc, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 54 [foreignDoc, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 54 [foreignDoc, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 54 [foreignDoc, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 54 [foreignDoc, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 54 [foreignDoc, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 54 [foreignDoc, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 54 [foreignDoc, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 54 [foreignDoc, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 54 [foreignDoc, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 54 [foreignDoc, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 54 [foreignDoc, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 54 [foreignDoc, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 54 [foreignDoc, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 54 [foreignDoc, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 54 [foreignDoc, 0], range 23 [document, 0, document, 1] 
+PASS Point 54 [foreignDoc, 0], range 24 [document, 0, document, 2] 
+PASS Point 54 [foreignDoc, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 54 [foreignDoc, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 54 [foreignDoc, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 54 [foreignDoc, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 54 [foreignDoc, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 54 [foreignDoc, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 54 [foreignDoc, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 54 [foreignDoc, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 54 [foreignDoc, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 54 [foreignDoc, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 54 [foreignDoc, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 54 [foreignDoc, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 54 [foreignDoc, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 54 [foreignDoc, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 54 [foreignDoc, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 54 [foreignDoc, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 54 [foreignDoc, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 54 [foreignDoc, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 54 [foreignDoc, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 54 [foreignDoc, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 54 [foreignDoc, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 54 [foreignDoc, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 54 [foreignDoc, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 54 [foreignDoc, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 54 [foreignDoc, 0], range 49 [document, 1, document, 2] 
+PASS Point 54 [foreignDoc, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 54 [foreignDoc, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 54 [foreignDoc, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 54 [foreignDoc, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 54 [foreignDoc, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 54 [foreignDoc, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 54 [foreignDoc, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 54 [foreignDoc, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 54 [foreignDoc, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 54 [foreignDoc, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 55 [foreignDoc, 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 55 [foreignDoc, 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 55 [foreignDoc, 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 55 [foreignDoc, 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 55 [foreignDoc, 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 55 [foreignDoc, 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 55 [foreignDoc, 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 55 [foreignDoc, 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 55 [foreignDoc, 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 55 [foreignDoc, 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 55 [foreignDoc, 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 55 [foreignDoc, 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 55 [foreignDoc, 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 55 [foreignDoc, 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 55 [foreignDoc, 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 55 [foreignDoc, 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 55 [foreignDoc, 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 55 [foreignDoc, 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 55 [foreignDoc, 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 55 [foreignDoc, 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 55 [foreignDoc, 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 55 [foreignDoc, 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 55 [foreignDoc, 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 55 [foreignDoc, 1], range 23 [document, 0, document, 1] 
+PASS Point 55 [foreignDoc, 1], range 24 [document, 0, document, 2] 
+PASS Point 55 [foreignDoc, 1], range 25 [comment, 2, comment, 3] 
+PASS Point 55 [foreignDoc, 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 55 [foreignDoc, 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 55 [foreignDoc, 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 55 [foreignDoc, 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 55 [foreignDoc, 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 55 [foreignDoc, 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 55 [foreignDoc, 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 55 [foreignDoc, 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 55 [foreignDoc, 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 55 [foreignDoc, 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 55 [foreignDoc, 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 55 [foreignDoc, 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 55 [foreignDoc, 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 55 [foreignDoc, 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 55 [foreignDoc, 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 55 [foreignDoc, 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 55 [foreignDoc, 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 55 [foreignDoc, 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 55 [foreignDoc, 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 55 [foreignDoc, 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 55 [foreignDoc, 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 55 [foreignDoc, 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 55 [foreignDoc, 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 55 [foreignDoc, 1], range 49 [document, 1, document, 2] 
+PASS Point 55 [foreignDoc, 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 55 [foreignDoc, 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 55 [foreignDoc, 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 55 [foreignDoc, 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 55 [foreignDoc, 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 55 [foreignDoc, 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 55 [foreignDoc, 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 55 [foreignDoc, 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 55 [foreignDoc, 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 55 [foreignDoc, 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 56 [foreignComment, 2], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 56 [foreignComment, 2], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 56 [foreignComment, 2], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 56 [foreignComment, 2], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 56 [foreignComment, 2], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 56 [foreignComment, 2], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 56 [foreignComment, 2], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 56 [foreignComment, 2], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 56 [foreignComment, 2], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 56 [foreignComment, 2], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 56 [foreignComment, 2], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 56 [foreignComment, 2], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 56 [foreignComment, 2], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 56 [foreignComment, 2], range 13 [document.head, 1, document.head, 1] 
+PASS Point 56 [foreignComment, 2], range 14 [document.body, 4, document.body, 5] 
+PASS Point 56 [foreignComment, 2], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 56 [foreignComment, 2], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 56 [foreignComment, 2], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 56 [foreignComment, 2], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 56 [foreignComment, 2], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 56 [foreignComment, 2], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 56 [foreignComment, 2], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 56 [foreignComment, 2], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 56 [foreignComment, 2], range 23 [document, 0, document, 1] 
+PASS Point 56 [foreignComment, 2], range 24 [document, 0, document, 2] 
+PASS Point 56 [foreignComment, 2], range 25 [comment, 2, comment, 3] 
+PASS Point 56 [foreignComment, 2], range 26 [testDiv, 0, comment, 5] 
+PASS Point 56 [foreignComment, 2], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 56 [foreignComment, 2], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 56 [foreignComment, 2], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 56 [foreignComment, 2], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 56 [foreignComment, 2], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 56 [foreignComment, 2], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 56 [foreignComment, 2], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 56 [foreignComment, 2], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 56 [foreignComment, 2], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 56 [foreignComment, 2], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 56 [foreignComment, 2], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 56 [foreignComment, 2], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 56 [foreignComment, 2], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 56 [foreignComment, 2], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 56 [foreignComment, 2], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 56 [foreignComment, 2], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 56 [foreignComment, 2], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 56 [foreignComment, 2], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 56 [foreignComment, 2], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 56 [foreignComment, 2], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 56 [foreignComment, 2], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 56 [foreignComment, 2], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 56 [foreignComment, 2], range 49 [document, 1, document, 2] 
+PASS Point 56 [foreignComment, 2], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 56 [foreignComment, 2], range 51 [paras[3], 1, comment, 8] 
+PASS Point 56 [foreignComment, 2], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 56 [foreignComment, 2], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 56 [foreignComment, 2], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 56 [foreignComment, 2], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 56 [foreignComment, 2], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 56 [foreignComment, 2], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 56 [foreignComment, 2], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 56 [foreignComment, 2], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 57 [foreignTextNode, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 57 [foreignTextNode, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 57 [foreignTextNode, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 57 [foreignTextNode, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 57 [foreignTextNode, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 57 [foreignTextNode, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 57 [foreignTextNode, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 57 [foreignTextNode, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 57 [foreignTextNode, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 57 [foreignTextNode, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 57 [foreignTextNode, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 57 [foreignTextNode, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 57 [foreignTextNode, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 57 [foreignTextNode, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 57 [foreignTextNode, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 57 [foreignTextNode, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 57 [foreignTextNode, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 57 [foreignTextNode, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 57 [foreignTextNode, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 57 [foreignTextNode, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 57 [foreignTextNode, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 57 [foreignTextNode, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 57 [foreignTextNode, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 57 [foreignTextNode, 0], range 23 [document, 0, document, 1] 
+PASS Point 57 [foreignTextNode, 0], range 24 [document, 0, document, 2] 
+PASS Point 57 [foreignTextNode, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 57 [foreignTextNode, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 57 [foreignTextNode, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 57 [foreignTextNode, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 57 [foreignTextNode, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 57 [foreignTextNode, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 57 [foreignTextNode, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 57 [foreignTextNode, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 57 [foreignTextNode, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 57 [foreignTextNode, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 57 [foreignTextNode, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 57 [foreignTextNode, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 57 [foreignTextNode, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 57 [foreignTextNode, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 57 [foreignTextNode, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 57 [foreignTextNode, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 57 [foreignTextNode, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 57 [foreignTextNode, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 57 [foreignTextNode, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 57 [foreignTextNode, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 57 [foreignTextNode, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 57 [foreignTextNode, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 57 [foreignTextNode, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 57 [foreignTextNode, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 57 [foreignTextNode, 0], range 49 [document, 1, document, 2] 
+PASS Point 57 [foreignTextNode, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 57 [foreignTextNode, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 57 [foreignTextNode, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 57 [foreignTextNode, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 57 [foreignTextNode, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 57 [foreignTextNode, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 57 [foreignTextNode, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 57 [foreignTextNode, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 57 [foreignTextNode, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 57 [foreignTextNode, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 58 [foreignTextNode, 36], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 58 [foreignTextNode, 36], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 58 [foreignTextNode, 36], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 58 [foreignTextNode, 36], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 58 [foreignTextNode, 36], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 58 [foreignTextNode, 36], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 58 [foreignTextNode, 36], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 58 [foreignTextNode, 36], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 58 [foreignTextNode, 36], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 58 [foreignTextNode, 36], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 58 [foreignTextNode, 36], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 58 [foreignTextNode, 36], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 58 [foreignTextNode, 36], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 58 [foreignTextNode, 36], range 13 [document.head, 1, document.head, 1] 
+PASS Point 58 [foreignTextNode, 36], range 14 [document.body, 4, document.body, 5] 
+PASS Point 58 [foreignTextNode, 36], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 58 [foreignTextNode, 36], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 58 [foreignTextNode, 36], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 58 [foreignTextNode, 36], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 58 [foreignTextNode, 36], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 58 [foreignTextNode, 36], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 58 [foreignTextNode, 36], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 58 [foreignTextNode, 36], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 58 [foreignTextNode, 36], range 23 [document, 0, document, 1] 
+PASS Point 58 [foreignTextNode, 36], range 24 [document, 0, document, 2] 
+PASS Point 58 [foreignTextNode, 36], range 25 [comment, 2, comment, 3] 
+PASS Point 58 [foreignTextNode, 36], range 26 [testDiv, 0, comment, 5] 
+PASS Point 58 [foreignTextNode, 36], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 58 [foreignTextNode, 36], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 58 [foreignTextNode, 36], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 58 [foreignTextNode, 36], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 58 [foreignTextNode, 36], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 58 [foreignTextNode, 36], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 58 [foreignTextNode, 36], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 58 [foreignTextNode, 36], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 58 [foreignTextNode, 36], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 58 [foreignTextNode, 36], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 58 [foreignTextNode, 36], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 58 [foreignTextNode, 36], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 58 [foreignTextNode, 36], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 58 [foreignTextNode, 36], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 58 [foreignTextNode, 36], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 58 [foreignTextNode, 36], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 58 [foreignTextNode, 36], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 58 [foreignTextNode, 36], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 58 [foreignTextNode, 36], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 58 [foreignTextNode, 36], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 58 [foreignTextNode, 36], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 58 [foreignTextNode, 36], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 58 [foreignTextNode, 36], range 49 [document, 1, document, 2] 
+PASS Point 58 [foreignTextNode, 36], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 58 [foreignTextNode, 36], range 51 [paras[3], 1, comment, 8] 
+PASS Point 58 [foreignTextNode, 36], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 58 [foreignTextNode, 36], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 58 [foreignTextNode, 36], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 58 [foreignTextNode, 36], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 58 [foreignTextNode, 36], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 58 [foreignTextNode, 36], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 58 [foreignTextNode, 36], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 58 [foreignTextNode, 36], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 59 [xmlDoc, -1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 59 [xmlDoc, -1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 59 [xmlDoc, -1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 59 [xmlDoc, -1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 59 [xmlDoc, -1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 59 [xmlDoc, -1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 59 [xmlDoc, -1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 59 [xmlDoc, -1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 59 [xmlDoc, -1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 59 [xmlDoc, -1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 59 [xmlDoc, -1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 59 [xmlDoc, -1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 59 [xmlDoc, -1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 59 [xmlDoc, -1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 59 [xmlDoc, -1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 59 [xmlDoc, -1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 59 [xmlDoc, -1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 59 [xmlDoc, -1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 59 [xmlDoc, -1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 59 [xmlDoc, -1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 59 [xmlDoc, -1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 59 [xmlDoc, -1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 59 [xmlDoc, -1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 59 [xmlDoc, -1], range 23 [document, 0, document, 1] 
+PASS Point 59 [xmlDoc, -1], range 24 [document, 0, document, 2] 
+PASS Point 59 [xmlDoc, -1], range 25 [comment, 2, comment, 3] 
+PASS Point 59 [xmlDoc, -1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 59 [xmlDoc, -1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 59 [xmlDoc, -1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 59 [xmlDoc, -1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 59 [xmlDoc, -1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 59 [xmlDoc, -1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 59 [xmlDoc, -1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 59 [xmlDoc, -1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 59 [xmlDoc, -1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 59 [xmlDoc, -1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 59 [xmlDoc, -1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 59 [xmlDoc, -1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 59 [xmlDoc, -1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 59 [xmlDoc, -1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 59 [xmlDoc, -1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 59 [xmlDoc, -1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 59 [xmlDoc, -1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 59 [xmlDoc, -1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 59 [xmlDoc, -1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 59 [xmlDoc, -1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 59 [xmlDoc, -1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 59 [xmlDoc, -1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 59 [xmlDoc, -1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 59 [xmlDoc, -1], range 49 [document, 1, document, 2] 
+PASS Point 59 [xmlDoc, -1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 59 [xmlDoc, -1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 59 [xmlDoc, -1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 59 [xmlDoc, -1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 59 [xmlDoc, -1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 59 [xmlDoc, -1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 59 [xmlDoc, -1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 59 [xmlDoc, -1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 59 [xmlDoc, -1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 59 [xmlDoc, -1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 60 [xmlDoc, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 60 [xmlDoc, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 60 [xmlDoc, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 60 [xmlDoc, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 60 [xmlDoc, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 60 [xmlDoc, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 60 [xmlDoc, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 60 [xmlDoc, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 60 [xmlDoc, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 60 [xmlDoc, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 60 [xmlDoc, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 60 [xmlDoc, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 60 [xmlDoc, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 60 [xmlDoc, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 60 [xmlDoc, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 60 [xmlDoc, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 60 [xmlDoc, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 60 [xmlDoc, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 60 [xmlDoc, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 60 [xmlDoc, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 60 [xmlDoc, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 60 [xmlDoc, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 60 [xmlDoc, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 60 [xmlDoc, 0], range 23 [document, 0, document, 1] 
+PASS Point 60 [xmlDoc, 0], range 24 [document, 0, document, 2] 
+PASS Point 60 [xmlDoc, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 60 [xmlDoc, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 60 [xmlDoc, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 60 [xmlDoc, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 60 [xmlDoc, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 60 [xmlDoc, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 60 [xmlDoc, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 60 [xmlDoc, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 60 [xmlDoc, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 60 [xmlDoc, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 60 [xmlDoc, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 60 [xmlDoc, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 60 [xmlDoc, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 60 [xmlDoc, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 60 [xmlDoc, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 60 [xmlDoc, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 60 [xmlDoc, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 60 [xmlDoc, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 60 [xmlDoc, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 60 [xmlDoc, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 60 [xmlDoc, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 60 [xmlDoc, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 60 [xmlDoc, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 60 [xmlDoc, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 60 [xmlDoc, 0], range 49 [document, 1, document, 2] 
+PASS Point 60 [xmlDoc, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 60 [xmlDoc, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 60 [xmlDoc, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 60 [xmlDoc, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 60 [xmlDoc, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 60 [xmlDoc, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 60 [xmlDoc, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 60 [xmlDoc, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 60 [xmlDoc, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 60 [xmlDoc, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 61 [xmlDoc, 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 61 [xmlDoc, 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 61 [xmlDoc, 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 61 [xmlDoc, 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 61 [xmlDoc, 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 61 [xmlDoc, 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 61 [xmlDoc, 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 61 [xmlDoc, 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 61 [xmlDoc, 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 61 [xmlDoc, 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 61 [xmlDoc, 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 61 [xmlDoc, 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 61 [xmlDoc, 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 61 [xmlDoc, 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 61 [xmlDoc, 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 61 [xmlDoc, 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 61 [xmlDoc, 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 61 [xmlDoc, 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 61 [xmlDoc, 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 61 [xmlDoc, 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 61 [xmlDoc, 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 61 [xmlDoc, 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 61 [xmlDoc, 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 61 [xmlDoc, 1], range 23 [document, 0, document, 1] 
+PASS Point 61 [xmlDoc, 1], range 24 [document, 0, document, 2] 
+PASS Point 61 [xmlDoc, 1], range 25 [comment, 2, comment, 3] 
+PASS Point 61 [xmlDoc, 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 61 [xmlDoc, 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 61 [xmlDoc, 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 61 [xmlDoc, 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 61 [xmlDoc, 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 61 [xmlDoc, 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 61 [xmlDoc, 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 61 [xmlDoc, 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 61 [xmlDoc, 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 61 [xmlDoc, 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 61 [xmlDoc, 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 61 [xmlDoc, 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 61 [xmlDoc, 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 61 [xmlDoc, 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 61 [xmlDoc, 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 61 [xmlDoc, 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 61 [xmlDoc, 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 61 [xmlDoc, 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 61 [xmlDoc, 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 61 [xmlDoc, 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 61 [xmlDoc, 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 61 [xmlDoc, 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 61 [xmlDoc, 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 61 [xmlDoc, 1], range 49 [document, 1, document, 2] 
+PASS Point 61 [xmlDoc, 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 61 [xmlDoc, 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 61 [xmlDoc, 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 61 [xmlDoc, 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 61 [xmlDoc, 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 61 [xmlDoc, 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 61 [xmlDoc, 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 61 [xmlDoc, 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 61 [xmlDoc, 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 61 [xmlDoc, 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 62 [xmlDoc, 5], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 62 [xmlDoc, 5], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 62 [xmlDoc, 5], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 62 [xmlDoc, 5], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 62 [xmlDoc, 5], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 62 [xmlDoc, 5], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 62 [xmlDoc, 5], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 62 [xmlDoc, 5], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 62 [xmlDoc, 5], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 62 [xmlDoc, 5], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 62 [xmlDoc, 5], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 62 [xmlDoc, 5], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 62 [xmlDoc, 5], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 62 [xmlDoc, 5], range 13 [document.head, 1, document.head, 1] 
+PASS Point 62 [xmlDoc, 5], range 14 [document.body, 4, document.body, 5] 
+PASS Point 62 [xmlDoc, 5], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 62 [xmlDoc, 5], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 62 [xmlDoc, 5], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 62 [xmlDoc, 5], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 62 [xmlDoc, 5], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 62 [xmlDoc, 5], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 62 [xmlDoc, 5], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 62 [xmlDoc, 5], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 62 [xmlDoc, 5], range 23 [document, 0, document, 1] 
+PASS Point 62 [xmlDoc, 5], range 24 [document, 0, document, 2] 
+PASS Point 62 [xmlDoc, 5], range 25 [comment, 2, comment, 3] 
+PASS Point 62 [xmlDoc, 5], range 26 [testDiv, 0, comment, 5] 
+PASS Point 62 [xmlDoc, 5], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 62 [xmlDoc, 5], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 62 [xmlDoc, 5], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 62 [xmlDoc, 5], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 62 [xmlDoc, 5], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 62 [xmlDoc, 5], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 62 [xmlDoc, 5], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 62 [xmlDoc, 5], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 62 [xmlDoc, 5], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 62 [xmlDoc, 5], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 62 [xmlDoc, 5], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 62 [xmlDoc, 5], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 62 [xmlDoc, 5], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 62 [xmlDoc, 5], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 62 [xmlDoc, 5], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 62 [xmlDoc, 5], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 62 [xmlDoc, 5], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 62 [xmlDoc, 5], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 62 [xmlDoc, 5], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 62 [xmlDoc, 5], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 62 [xmlDoc, 5], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 62 [xmlDoc, 5], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 62 [xmlDoc, 5], range 49 [document, 1, document, 2] 
+PASS Point 62 [xmlDoc, 5], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 62 [xmlDoc, 5], range 51 [paras[3], 1, comment, 8] 
+PASS Point 62 [xmlDoc, 5], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 62 [xmlDoc, 5], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 62 [xmlDoc, 5], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 62 [xmlDoc, 5], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 62 [xmlDoc, 5], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 62 [xmlDoc, 5], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 62 [xmlDoc, 5], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 62 [xmlDoc, 5], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 63 [xmlComment, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 63 [xmlComment, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 63 [xmlComment, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 63 [xmlComment, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 63 [xmlComment, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 63 [xmlComment, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 63 [xmlComment, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 63 [xmlComment, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 63 [xmlComment, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 63 [xmlComment, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 63 [xmlComment, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 63 [xmlComment, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 63 [xmlComment, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 63 [xmlComment, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 63 [xmlComment, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 63 [xmlComment, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 63 [xmlComment, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 63 [xmlComment, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 63 [xmlComment, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 63 [xmlComment, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 63 [xmlComment, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 63 [xmlComment, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 63 [xmlComment, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 63 [xmlComment, 0], range 23 [document, 0, document, 1] 
+PASS Point 63 [xmlComment, 0], range 24 [document, 0, document, 2] 
+PASS Point 63 [xmlComment, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 63 [xmlComment, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 63 [xmlComment, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 63 [xmlComment, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 63 [xmlComment, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 63 [xmlComment, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 63 [xmlComment, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 63 [xmlComment, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 63 [xmlComment, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 63 [xmlComment, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 63 [xmlComment, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 63 [xmlComment, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 63 [xmlComment, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 63 [xmlComment, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 63 [xmlComment, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 63 [xmlComment, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 63 [xmlComment, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 63 [xmlComment, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 63 [xmlComment, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 63 [xmlComment, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 63 [xmlComment, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 63 [xmlComment, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 63 [xmlComment, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 63 [xmlComment, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 63 [xmlComment, 0], range 49 [document, 1, document, 2] 
+PASS Point 63 [xmlComment, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 63 [xmlComment, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 63 [xmlComment, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 63 [xmlComment, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 63 [xmlComment, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 63 [xmlComment, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 63 [xmlComment, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 63 [xmlComment, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 63 [xmlComment, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 63 [xmlComment, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 64 [xmlComment, 4], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 64 [xmlComment, 4], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 64 [xmlComment, 4], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 64 [xmlComment, 4], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 64 [xmlComment, 4], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 64 [xmlComment, 4], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 64 [xmlComment, 4], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 64 [xmlComment, 4], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 64 [xmlComment, 4], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 64 [xmlComment, 4], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 64 [xmlComment, 4], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 64 [xmlComment, 4], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 64 [xmlComment, 4], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 64 [xmlComment, 4], range 13 [document.head, 1, document.head, 1] 
+PASS Point 64 [xmlComment, 4], range 14 [document.body, 4, document.body, 5] 
+PASS Point 64 [xmlComment, 4], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 64 [xmlComment, 4], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 64 [xmlComment, 4], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 64 [xmlComment, 4], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 64 [xmlComment, 4], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 64 [xmlComment, 4], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 64 [xmlComment, 4], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 64 [xmlComment, 4], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 64 [xmlComment, 4], range 23 [document, 0, document, 1] 
+PASS Point 64 [xmlComment, 4], range 24 [document, 0, document, 2] 
+PASS Point 64 [xmlComment, 4], range 25 [comment, 2, comment, 3] 
+PASS Point 64 [xmlComment, 4], range 26 [testDiv, 0, comment, 5] 
+PASS Point 64 [xmlComment, 4], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 64 [xmlComment, 4], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 64 [xmlComment, 4], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 64 [xmlComment, 4], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 64 [xmlComment, 4], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 64 [xmlComment, 4], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 64 [xmlComment, 4], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 64 [xmlComment, 4], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 64 [xmlComment, 4], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 64 [xmlComment, 4], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 64 [xmlComment, 4], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 64 [xmlComment, 4], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 64 [xmlComment, 4], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 64 [xmlComment, 4], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 64 [xmlComment, 4], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 64 [xmlComment, 4], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 64 [xmlComment, 4], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 64 [xmlComment, 4], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 64 [xmlComment, 4], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 64 [xmlComment, 4], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 64 [xmlComment, 4], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 64 [xmlComment, 4], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 64 [xmlComment, 4], range 49 [document, 1, document, 2] 
+PASS Point 64 [xmlComment, 4], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 64 [xmlComment, 4], range 51 [paras[3], 1, comment, 8] 
+PASS Point 64 [xmlComment, 4], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 64 [xmlComment, 4], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 64 [xmlComment, 4], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 64 [xmlComment, 4], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 64 [xmlComment, 4], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 64 [xmlComment, 4], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 64 [xmlComment, 4], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 64 [xmlComment, 4], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 65 [processingInstruction, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 65 [processingInstruction, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 65 [processingInstruction, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 65 [processingInstruction, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 65 [processingInstruction, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 65 [processingInstruction, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 65 [processingInstruction, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 65 [processingInstruction, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 65 [processingInstruction, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 65 [processingInstruction, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 65 [processingInstruction, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 65 [processingInstruction, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 65 [processingInstruction, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 65 [processingInstruction, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 65 [processingInstruction, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 65 [processingInstruction, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 65 [processingInstruction, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 65 [processingInstruction, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 65 [processingInstruction, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 65 [processingInstruction, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 65 [processingInstruction, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 65 [processingInstruction, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 65 [processingInstruction, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 65 [processingInstruction, 0], range 23 [document, 0, document, 1] 
+PASS Point 65 [processingInstruction, 0], range 24 [document, 0, document, 2] 
+PASS Point 65 [processingInstruction, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 65 [processingInstruction, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 65 [processingInstruction, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 65 [processingInstruction, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 65 [processingInstruction, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 65 [processingInstruction, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 65 [processingInstruction, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 65 [processingInstruction, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 65 [processingInstruction, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 65 [processingInstruction, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 65 [processingInstruction, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 65 [processingInstruction, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 65 [processingInstruction, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 65 [processingInstruction, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 65 [processingInstruction, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 65 [processingInstruction, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 65 [processingInstruction, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 65 [processingInstruction, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 65 [processingInstruction, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 65 [processingInstruction, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 65 [processingInstruction, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 65 [processingInstruction, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 65 [processingInstruction, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 65 [processingInstruction, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 65 [processingInstruction, 0], range 49 [document, 1, document, 2] 
+PASS Point 65 [processingInstruction, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 65 [processingInstruction, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 65 [processingInstruction, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 65 [processingInstruction, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 65 [processingInstruction, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 65 [processingInstruction, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 65 [processingInstruction, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 65 [processingInstruction, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 65 [processingInstruction, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 65 [processingInstruction, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 66 [processingInstruction, 5], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 66 [processingInstruction, 5], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 66 [processingInstruction, 5], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 66 [processingInstruction, 5], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 66 [processingInstruction, 5], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 66 [processingInstruction, 5], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 66 [processingInstruction, 5], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 66 [processingInstruction, 5], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 66 [processingInstruction, 5], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 66 [processingInstruction, 5], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 66 [processingInstruction, 5], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 66 [processingInstruction, 5], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 66 [processingInstruction, 5], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 66 [processingInstruction, 5], range 13 [document.head, 1, document.head, 1] 
+PASS Point 66 [processingInstruction, 5], range 14 [document.body, 4, document.body, 5] 
+PASS Point 66 [processingInstruction, 5], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 66 [processingInstruction, 5], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 66 [processingInstruction, 5], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 66 [processingInstruction, 5], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 66 [processingInstruction, 5], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 66 [processingInstruction, 5], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 66 [processingInstruction, 5], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 66 [processingInstruction, 5], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 66 [processingInstruction, 5], range 23 [document, 0, document, 1] 
+PASS Point 66 [processingInstruction, 5], range 24 [document, 0, document, 2] 
+PASS Point 66 [processingInstruction, 5], range 25 [comment, 2, comment, 3] 
+PASS Point 66 [processingInstruction, 5], range 26 [testDiv, 0, comment, 5] 
+PASS Point 66 [processingInstruction, 5], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 66 [processingInstruction, 5], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 66 [processingInstruction, 5], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 66 [processingInstruction, 5], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 66 [processingInstruction, 5], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 66 [processingInstruction, 5], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 66 [processingInstruction, 5], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 66 [processingInstruction, 5], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 66 [processingInstruction, 5], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 66 [processingInstruction, 5], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 66 [processingInstruction, 5], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 66 [processingInstruction, 5], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 66 [processingInstruction, 5], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 66 [processingInstruction, 5], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 66 [processingInstruction, 5], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 66 [processingInstruction, 5], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 66 [processingInstruction, 5], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 66 [processingInstruction, 5], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 66 [processingInstruction, 5], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 66 [processingInstruction, 5], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 66 [processingInstruction, 5], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 66 [processingInstruction, 5], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 66 [processingInstruction, 5], range 49 [document, 1, document, 2] 
+PASS Point 66 [processingInstruction, 5], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 66 [processingInstruction, 5], range 51 [paras[3], 1, comment, 8] 
+PASS Point 66 [processingInstruction, 5], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 66 [processingInstruction, 5], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 66 [processingInstruction, 5], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 66 [processingInstruction, 5], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 66 [processingInstruction, 5], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 66 [processingInstruction, 5], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 66 [processingInstruction, 5], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 66 [processingInstruction, 5], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 67 [processingInstruction, 9], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 67 [processingInstruction, 9], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 67 [processingInstruction, 9], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 67 [processingInstruction, 9], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 67 [processingInstruction, 9], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 67 [processingInstruction, 9], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 67 [processingInstruction, 9], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 67 [processingInstruction, 9], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 67 [processingInstruction, 9], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 67 [processingInstruction, 9], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 67 [processingInstruction, 9], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 67 [processingInstruction, 9], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 67 [processingInstruction, 9], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 67 [processingInstruction, 9], range 13 [document.head, 1, document.head, 1] 
+PASS Point 67 [processingInstruction, 9], range 14 [document.body, 4, document.body, 5] 
+PASS Point 67 [processingInstruction, 9], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 67 [processingInstruction, 9], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 67 [processingInstruction, 9], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 67 [processingInstruction, 9], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 67 [processingInstruction, 9], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 67 [processingInstruction, 9], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 67 [processingInstruction, 9], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 67 [processingInstruction, 9], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 67 [processingInstruction, 9], range 23 [document, 0, document, 1] 
+PASS Point 67 [processingInstruction, 9], range 24 [document, 0, document, 2] 
+PASS Point 67 [processingInstruction, 9], range 25 [comment, 2, comment, 3] 
+PASS Point 67 [processingInstruction, 9], range 26 [testDiv, 0, comment, 5] 
+PASS Point 67 [processingInstruction, 9], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 67 [processingInstruction, 9], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 67 [processingInstruction, 9], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 67 [processingInstruction, 9], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 67 [processingInstruction, 9], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 67 [processingInstruction, 9], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 67 [processingInstruction, 9], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 67 [processingInstruction, 9], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 67 [processingInstruction, 9], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 67 [processingInstruction, 9], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 67 [processingInstruction, 9], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 67 [processingInstruction, 9], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 67 [processingInstruction, 9], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 67 [processingInstruction, 9], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 67 [processingInstruction, 9], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 67 [processingInstruction, 9], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 67 [processingInstruction, 9], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 67 [processingInstruction, 9], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 67 [processingInstruction, 9], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 67 [processingInstruction, 9], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 67 [processingInstruction, 9], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 67 [processingInstruction, 9], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 67 [processingInstruction, 9], range 49 [document, 1, document, 2] 
+PASS Point 67 [processingInstruction, 9], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 67 [processingInstruction, 9], range 51 [paras[3], 1, comment, 8] 
+PASS Point 67 [processingInstruction, 9], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 67 [processingInstruction, 9], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 67 [processingInstruction, 9], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 67 [processingInstruction, 9], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 67 [processingInstruction, 9], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 67 [processingInstruction, 9], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 67 [processingInstruction, 9], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 67 [processingInstruction, 9], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 68 [detachedTextNode, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 68 [detachedTextNode, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 68 [detachedTextNode, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 68 [detachedTextNode, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 68 [detachedTextNode, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 68 [detachedTextNode, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 68 [detachedTextNode, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 68 [detachedTextNode, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 68 [detachedTextNode, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 68 [detachedTextNode, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 68 [detachedTextNode, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 68 [detachedTextNode, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 68 [detachedTextNode, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 68 [detachedTextNode, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 68 [detachedTextNode, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 68 [detachedTextNode, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 68 [detachedTextNode, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 68 [detachedTextNode, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 68 [detachedTextNode, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 68 [detachedTextNode, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 68 [detachedTextNode, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 68 [detachedTextNode, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 68 [detachedTextNode, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 68 [detachedTextNode, 0], range 23 [document, 0, document, 1] 
+PASS Point 68 [detachedTextNode, 0], range 24 [document, 0, document, 2] 
+PASS Point 68 [detachedTextNode, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 68 [detachedTextNode, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 68 [detachedTextNode, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 68 [detachedTextNode, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 68 [detachedTextNode, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 68 [detachedTextNode, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 68 [detachedTextNode, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 68 [detachedTextNode, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 68 [detachedTextNode, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 68 [detachedTextNode, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 68 [detachedTextNode, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 68 [detachedTextNode, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 68 [detachedTextNode, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 68 [detachedTextNode, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 68 [detachedTextNode, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 68 [detachedTextNode, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 68 [detachedTextNode, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 68 [detachedTextNode, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 68 [detachedTextNode, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 68 [detachedTextNode, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 68 [detachedTextNode, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 68 [detachedTextNode, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 68 [detachedTextNode, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 68 [detachedTextNode, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 68 [detachedTextNode, 0], range 49 [document, 1, document, 2] 
+PASS Point 68 [detachedTextNode, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 68 [detachedTextNode, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 68 [detachedTextNode, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 68 [detachedTextNode, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 68 [detachedTextNode, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 68 [detachedTextNode, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 68 [detachedTextNode, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 68 [detachedTextNode, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 68 [detachedTextNode, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 68 [detachedTextNode, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 69 [detachedTextNode, 8], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 69 [detachedTextNode, 8], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 69 [detachedTextNode, 8], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 69 [detachedTextNode, 8], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 69 [detachedTextNode, 8], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 69 [detachedTextNode, 8], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 69 [detachedTextNode, 8], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 69 [detachedTextNode, 8], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 69 [detachedTextNode, 8], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 69 [detachedTextNode, 8], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 69 [detachedTextNode, 8], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 69 [detachedTextNode, 8], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 69 [detachedTextNode, 8], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 69 [detachedTextNode, 8], range 13 [document.head, 1, document.head, 1] 
+PASS Point 69 [detachedTextNode, 8], range 14 [document.body, 4, document.body, 5] 
+PASS Point 69 [detachedTextNode, 8], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 69 [detachedTextNode, 8], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 69 [detachedTextNode, 8], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 69 [detachedTextNode, 8], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 69 [detachedTextNode, 8], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 69 [detachedTextNode, 8], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 69 [detachedTextNode, 8], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 69 [detachedTextNode, 8], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 69 [detachedTextNode, 8], range 23 [document, 0, document, 1] 
+PASS Point 69 [detachedTextNode, 8], range 24 [document, 0, document, 2] 
+PASS Point 69 [detachedTextNode, 8], range 25 [comment, 2, comment, 3] 
+PASS Point 69 [detachedTextNode, 8], range 26 [testDiv, 0, comment, 5] 
+PASS Point 69 [detachedTextNode, 8], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 69 [detachedTextNode, 8], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 69 [detachedTextNode, 8], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 69 [detachedTextNode, 8], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 69 [detachedTextNode, 8], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 69 [detachedTextNode, 8], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 69 [detachedTextNode, 8], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 69 [detachedTextNode, 8], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 69 [detachedTextNode, 8], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 69 [detachedTextNode, 8], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 69 [detachedTextNode, 8], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 69 [detachedTextNode, 8], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 69 [detachedTextNode, 8], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 69 [detachedTextNode, 8], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 69 [detachedTextNode, 8], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 69 [detachedTextNode, 8], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 69 [detachedTextNode, 8], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 69 [detachedTextNode, 8], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 69 [detachedTextNode, 8], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 69 [detachedTextNode, 8], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 69 [detachedTextNode, 8], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 69 [detachedTextNode, 8], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 69 [detachedTextNode, 8], range 49 [document, 1, document, 2] 
+PASS Point 69 [detachedTextNode, 8], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 69 [detachedTextNode, 8], range 51 [paras[3], 1, comment, 8] 
+PASS Point 69 [detachedTextNode, 8], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 69 [detachedTextNode, 8], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 69 [detachedTextNode, 8], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 69 [detachedTextNode, 8], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 69 [detachedTextNode, 8], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 69 [detachedTextNode, 8], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 69 [detachedTextNode, 8], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 69 [detachedTextNode, 8], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 70 [detachedForeignTextNode, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 70 [detachedForeignTextNode, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 70 [detachedForeignTextNode, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 70 [detachedForeignTextNode, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 70 [detachedForeignTextNode, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 70 [detachedForeignTextNode, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 70 [detachedForeignTextNode, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 70 [detachedForeignTextNode, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 70 [detachedForeignTextNode, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 70 [detachedForeignTextNode, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 70 [detachedForeignTextNode, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 70 [detachedForeignTextNode, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 70 [detachedForeignTextNode, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 70 [detachedForeignTextNode, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 70 [detachedForeignTextNode, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 70 [detachedForeignTextNode, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 70 [detachedForeignTextNode, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 70 [detachedForeignTextNode, 0], range 23 [document, 0, document, 1] 
+PASS Point 70 [detachedForeignTextNode, 0], range 24 [document, 0, document, 2] 
+PASS Point 70 [detachedForeignTextNode, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 70 [detachedForeignTextNode, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 70 [detachedForeignTextNode, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 70 [detachedForeignTextNode, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 70 [detachedForeignTextNode, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 70 [detachedForeignTextNode, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 70 [detachedForeignTextNode, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 70 [detachedForeignTextNode, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 70 [detachedForeignTextNode, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 70 [detachedForeignTextNode, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 70 [detachedForeignTextNode, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 70 [detachedForeignTextNode, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 70 [detachedForeignTextNode, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 70 [detachedForeignTextNode, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 70 [detachedForeignTextNode, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 70 [detachedForeignTextNode, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 70 [detachedForeignTextNode, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 70 [detachedForeignTextNode, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 49 [document, 1, document, 2] 
+PASS Point 70 [detachedForeignTextNode, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 70 [detachedForeignTextNode, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 70 [detachedForeignTextNode, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 70 [detachedForeignTextNode, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 70 [detachedForeignTextNode, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 70 [detachedForeignTextNode, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 70 [detachedForeignTextNode, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 71 [detachedForeignTextNode, 8], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 71 [detachedForeignTextNode, 8], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 71 [detachedForeignTextNode, 8], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 71 [detachedForeignTextNode, 8], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 71 [detachedForeignTextNode, 8], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 71 [detachedForeignTextNode, 8], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 71 [detachedForeignTextNode, 8], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 71 [detachedForeignTextNode, 8], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 71 [detachedForeignTextNode, 8], range 13 [document.head, 1, document.head, 1] 
+PASS Point 71 [detachedForeignTextNode, 8], range 14 [document.body, 4, document.body, 5] 
+PASS Point 71 [detachedForeignTextNode, 8], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 71 [detachedForeignTextNode, 8], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 71 [detachedForeignTextNode, 8], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 71 [detachedForeignTextNode, 8], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 71 [detachedForeignTextNode, 8], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 71 [detachedForeignTextNode, 8], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 71 [detachedForeignTextNode, 8], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 71 [detachedForeignTextNode, 8], range 23 [document, 0, document, 1] 
+PASS Point 71 [detachedForeignTextNode, 8], range 24 [document, 0, document, 2] 
+PASS Point 71 [detachedForeignTextNode, 8], range 25 [comment, 2, comment, 3] 
+PASS Point 71 [detachedForeignTextNode, 8], range 26 [testDiv, 0, comment, 5] 
+PASS Point 71 [detachedForeignTextNode, 8], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 71 [detachedForeignTextNode, 8], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 71 [detachedForeignTextNode, 8], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 71 [detachedForeignTextNode, 8], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 71 [detachedForeignTextNode, 8], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 71 [detachedForeignTextNode, 8], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 71 [detachedForeignTextNode, 8], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 71 [detachedForeignTextNode, 8], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 71 [detachedForeignTextNode, 8], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 71 [detachedForeignTextNode, 8], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 71 [detachedForeignTextNode, 8], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 71 [detachedForeignTextNode, 8], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 71 [detachedForeignTextNode, 8], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 71 [detachedForeignTextNode, 8], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 71 [detachedForeignTextNode, 8], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 71 [detachedForeignTextNode, 8], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 49 [document, 1, document, 2] 
+PASS Point 71 [detachedForeignTextNode, 8], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 71 [detachedForeignTextNode, 8], range 51 [paras[3], 1, comment, 8] 
+PASS Point 71 [detachedForeignTextNode, 8], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 71 [detachedForeignTextNode, 8], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 71 [detachedForeignTextNode, 8], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 71 [detachedForeignTextNode, 8], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 71 [detachedForeignTextNode, 8], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 72 [detachedXmlTextNode, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 72 [detachedXmlTextNode, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 72 [detachedXmlTextNode, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 72 [detachedXmlTextNode, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 72 [detachedXmlTextNode, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 72 [detachedXmlTextNode, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 72 [detachedXmlTextNode, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 72 [detachedXmlTextNode, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 72 [detachedXmlTextNode, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 72 [detachedXmlTextNode, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 72 [detachedXmlTextNode, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 72 [detachedXmlTextNode, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 72 [detachedXmlTextNode, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 72 [detachedXmlTextNode, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 72 [detachedXmlTextNode, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 72 [detachedXmlTextNode, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 72 [detachedXmlTextNode, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 72 [detachedXmlTextNode, 0], range 23 [document, 0, document, 1] 
+PASS Point 72 [detachedXmlTextNode, 0], range 24 [document, 0, document, 2] 
+PASS Point 72 [detachedXmlTextNode, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 72 [detachedXmlTextNode, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 72 [detachedXmlTextNode, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 72 [detachedXmlTextNode, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 72 [detachedXmlTextNode, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 72 [detachedXmlTextNode, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 72 [detachedXmlTextNode, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 72 [detachedXmlTextNode, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 72 [detachedXmlTextNode, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 72 [detachedXmlTextNode, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 72 [detachedXmlTextNode, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 72 [detachedXmlTextNode, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 72 [detachedXmlTextNode, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 72 [detachedXmlTextNode, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 72 [detachedXmlTextNode, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 72 [detachedXmlTextNode, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 72 [detachedXmlTextNode, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 72 [detachedXmlTextNode, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 49 [document, 1, document, 2] 
+PASS Point 72 [detachedXmlTextNode, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 72 [detachedXmlTextNode, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 72 [detachedXmlTextNode, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 72 [detachedXmlTextNode, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 72 [detachedXmlTextNode, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 72 [detachedXmlTextNode, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 72 [detachedXmlTextNode, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 73 [detachedXmlTextNode, 8], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 73 [detachedXmlTextNode, 8], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 73 [detachedXmlTextNode, 8], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 73 [detachedXmlTextNode, 8], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 73 [detachedXmlTextNode, 8], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 73 [detachedXmlTextNode, 8], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 73 [detachedXmlTextNode, 8], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 73 [detachedXmlTextNode, 8], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 73 [detachedXmlTextNode, 8], range 13 [document.head, 1, document.head, 1] 
+PASS Point 73 [detachedXmlTextNode, 8], range 14 [document.body, 4, document.body, 5] 
+PASS Point 73 [detachedXmlTextNode, 8], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 73 [detachedXmlTextNode, 8], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 73 [detachedXmlTextNode, 8], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 73 [detachedXmlTextNode, 8], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 73 [detachedXmlTextNode, 8], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 73 [detachedXmlTextNode, 8], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 73 [detachedXmlTextNode, 8], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 73 [detachedXmlTextNode, 8], range 23 [document, 0, document, 1] 
+PASS Point 73 [detachedXmlTextNode, 8], range 24 [document, 0, document, 2] 
+PASS Point 73 [detachedXmlTextNode, 8], range 25 [comment, 2, comment, 3] 
+PASS Point 73 [detachedXmlTextNode, 8], range 26 [testDiv, 0, comment, 5] 
+PASS Point 73 [detachedXmlTextNode, 8], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 73 [detachedXmlTextNode, 8], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 73 [detachedXmlTextNode, 8], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 73 [detachedXmlTextNode, 8], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 73 [detachedXmlTextNode, 8], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 73 [detachedXmlTextNode, 8], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 73 [detachedXmlTextNode, 8], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 73 [detachedXmlTextNode, 8], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 73 [detachedXmlTextNode, 8], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 73 [detachedXmlTextNode, 8], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 73 [detachedXmlTextNode, 8], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 73 [detachedXmlTextNode, 8], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 73 [detachedXmlTextNode, 8], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 73 [detachedXmlTextNode, 8], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 73 [detachedXmlTextNode, 8], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 73 [detachedXmlTextNode, 8], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 49 [document, 1, document, 2] 
+PASS Point 73 [detachedXmlTextNode, 8], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 73 [detachedXmlTextNode, 8], range 51 [paras[3], 1, comment, 8] 
+PASS Point 73 [detachedXmlTextNode, 8], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 73 [detachedXmlTextNode, 8], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 73 [detachedXmlTextNode, 8], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 73 [detachedXmlTextNode, 8], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 73 [detachedXmlTextNode, 8], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 13 [document.head, 1, document.head, 1] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 14 [document.body, 4, document.body, 5] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 23 [document, 0, document, 1] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 24 [document, 0, document, 2] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 25 [comment, 2, comment, 3] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 26 [testDiv, 0, comment, 5] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 49 [document, 1, document, 2] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 51 [paras[3], 1, comment, 8] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 75 [detachedComment, 3], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 75 [detachedComment, 3], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 75 [detachedComment, 3], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 75 [detachedComment, 3], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 75 [detachedComment, 3], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 75 [detachedComment, 3], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 75 [detachedComment, 3], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 75 [detachedComment, 3], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 75 [detachedComment, 3], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 75 [detachedComment, 3], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 75 [detachedComment, 3], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 75 [detachedComment, 3], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 75 [detachedComment, 3], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 75 [detachedComment, 3], range 13 [document.head, 1, document.head, 1] 
+PASS Point 75 [detachedComment, 3], range 14 [document.body, 4, document.body, 5] 
+PASS Point 75 [detachedComment, 3], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 75 [detachedComment, 3], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 75 [detachedComment, 3], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 75 [detachedComment, 3], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 75 [detachedComment, 3], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 75 [detachedComment, 3], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 75 [detachedComment, 3], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 75 [detachedComment, 3], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 75 [detachedComment, 3], range 23 [document, 0, document, 1] 
+PASS Point 75 [detachedComment, 3], range 24 [document, 0, document, 2] 
+PASS Point 75 [detachedComment, 3], range 25 [comment, 2, comment, 3] 
+PASS Point 75 [detachedComment, 3], range 26 [testDiv, 0, comment, 5] 
+PASS Point 75 [detachedComment, 3], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 75 [detachedComment, 3], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 75 [detachedComment, 3], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 75 [detachedComment, 3], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 75 [detachedComment, 3], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 75 [detachedComment, 3], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 75 [detachedComment, 3], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 75 [detachedComment, 3], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 75 [detachedComment, 3], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 75 [detachedComment, 3], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 75 [detachedComment, 3], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 75 [detachedComment, 3], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 75 [detachedComment, 3], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 75 [detachedComment, 3], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 75 [detachedComment, 3], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 75 [detachedComment, 3], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 75 [detachedComment, 3], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 75 [detachedComment, 3], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 75 [detachedComment, 3], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 75 [detachedComment, 3], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 75 [detachedComment, 3], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 75 [detachedComment, 3], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 75 [detachedComment, 3], range 49 [document, 1, document, 2] 
+PASS Point 75 [detachedComment, 3], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 75 [detachedComment, 3], range 51 [paras[3], 1, comment, 8] 
+PASS Point 75 [detachedComment, 3], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 75 [detachedComment, 3], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 75 [detachedComment, 3], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 75 [detachedComment, 3], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 75 [detachedComment, 3], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 75 [detachedComment, 3], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 75 [detachedComment, 3], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 75 [detachedComment, 3], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 76 [detachedComment, 5], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 76 [detachedComment, 5], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 76 [detachedComment, 5], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 76 [detachedComment, 5], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 76 [detachedComment, 5], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 76 [detachedComment, 5], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 76 [detachedComment, 5], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 76 [detachedComment, 5], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 76 [detachedComment, 5], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 76 [detachedComment, 5], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 76 [detachedComment, 5], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 76 [detachedComment, 5], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 76 [detachedComment, 5], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 76 [detachedComment, 5], range 13 [document.head, 1, document.head, 1] 
+PASS Point 76 [detachedComment, 5], range 14 [document.body, 4, document.body, 5] 
+PASS Point 76 [detachedComment, 5], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 76 [detachedComment, 5], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 76 [detachedComment, 5], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 76 [detachedComment, 5], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 76 [detachedComment, 5], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 76 [detachedComment, 5], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 76 [detachedComment, 5], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 76 [detachedComment, 5], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 76 [detachedComment, 5], range 23 [document, 0, document, 1] 
+PASS Point 76 [detachedComment, 5], range 24 [document, 0, document, 2] 
+PASS Point 76 [detachedComment, 5], range 25 [comment, 2, comment, 3] 
+PASS Point 76 [detachedComment, 5], range 26 [testDiv, 0, comment, 5] 
+PASS Point 76 [detachedComment, 5], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 76 [detachedComment, 5], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 76 [detachedComment, 5], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 76 [detachedComment, 5], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 76 [detachedComment, 5], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 76 [detachedComment, 5], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 76 [detachedComment, 5], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 76 [detachedComment, 5], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 76 [detachedComment, 5], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 76 [detachedComment, 5], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 76 [detachedComment, 5], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 76 [detachedComment, 5], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 76 [detachedComment, 5], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 76 [detachedComment, 5], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 76 [detachedComment, 5], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 76 [detachedComment, 5], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 76 [detachedComment, 5], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 76 [detachedComment, 5], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 76 [detachedComment, 5], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 76 [detachedComment, 5], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 76 [detachedComment, 5], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 76 [detachedComment, 5], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 76 [detachedComment, 5], range 49 [document, 1, document, 2] 
+PASS Point 76 [detachedComment, 5], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 76 [detachedComment, 5], range 51 [paras[3], 1, comment, 8] 
+PASS Point 76 [detachedComment, 5], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 76 [detachedComment, 5], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 76 [detachedComment, 5], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 76 [detachedComment, 5], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 76 [detachedComment, 5], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 76 [detachedComment, 5], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 76 [detachedComment, 5], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 76 [detachedComment, 5], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 77 [detachedForeignComment, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 77 [detachedForeignComment, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 77 [detachedForeignComment, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 77 [detachedForeignComment, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 77 [detachedForeignComment, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 77 [detachedForeignComment, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 77 [detachedForeignComment, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 77 [detachedForeignComment, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 77 [detachedForeignComment, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 77 [detachedForeignComment, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 77 [detachedForeignComment, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 77 [detachedForeignComment, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 77 [detachedForeignComment, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 77 [detachedForeignComment, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 77 [detachedForeignComment, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 77 [detachedForeignComment, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 77 [detachedForeignComment, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 77 [detachedForeignComment, 0], range 23 [document, 0, document, 1] 
+PASS Point 77 [detachedForeignComment, 0], range 24 [document, 0, document, 2] 
+PASS Point 77 [detachedForeignComment, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 77 [detachedForeignComment, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 77 [detachedForeignComment, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 77 [detachedForeignComment, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 77 [detachedForeignComment, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 77 [detachedForeignComment, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 77 [detachedForeignComment, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 77 [detachedForeignComment, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 77 [detachedForeignComment, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 77 [detachedForeignComment, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 77 [detachedForeignComment, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 77 [detachedForeignComment, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 77 [detachedForeignComment, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 77 [detachedForeignComment, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 77 [detachedForeignComment, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 77 [detachedForeignComment, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 77 [detachedForeignComment, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 77 [detachedForeignComment, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 77 [detachedForeignComment, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 49 [document, 1, document, 2] 
+PASS Point 77 [detachedForeignComment, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 77 [detachedForeignComment, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 77 [detachedForeignComment, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 77 [detachedForeignComment, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 77 [detachedForeignComment, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 77 [detachedForeignComment, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 77 [detachedForeignComment, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 78 [detachedForeignComment, 4], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 78 [detachedForeignComment, 4], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 78 [detachedForeignComment, 4], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 78 [detachedForeignComment, 4], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 78 [detachedForeignComment, 4], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 78 [detachedForeignComment, 4], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 78 [detachedForeignComment, 4], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 78 [detachedForeignComment, 4], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 78 [detachedForeignComment, 4], range 13 [document.head, 1, document.head, 1] 
+PASS Point 78 [detachedForeignComment, 4], range 14 [document.body, 4, document.body, 5] 
+PASS Point 78 [detachedForeignComment, 4], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 78 [detachedForeignComment, 4], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 78 [detachedForeignComment, 4], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 78 [detachedForeignComment, 4], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 78 [detachedForeignComment, 4], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 78 [detachedForeignComment, 4], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 78 [detachedForeignComment, 4], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 78 [detachedForeignComment, 4], range 23 [document, 0, document, 1] 
+PASS Point 78 [detachedForeignComment, 4], range 24 [document, 0, document, 2] 
+PASS Point 78 [detachedForeignComment, 4], range 25 [comment, 2, comment, 3] 
+PASS Point 78 [detachedForeignComment, 4], range 26 [testDiv, 0, comment, 5] 
+PASS Point 78 [detachedForeignComment, 4], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 78 [detachedForeignComment, 4], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 78 [detachedForeignComment, 4], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 78 [detachedForeignComment, 4], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 78 [detachedForeignComment, 4], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 78 [detachedForeignComment, 4], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 78 [detachedForeignComment, 4], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 78 [detachedForeignComment, 4], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 78 [detachedForeignComment, 4], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 78 [detachedForeignComment, 4], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 78 [detachedForeignComment, 4], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 78 [detachedForeignComment, 4], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 78 [detachedForeignComment, 4], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 78 [detachedForeignComment, 4], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 78 [detachedForeignComment, 4], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 78 [detachedForeignComment, 4], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 78 [detachedForeignComment, 4], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 49 [document, 1, document, 2] 
+PASS Point 78 [detachedForeignComment, 4], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 78 [detachedForeignComment, 4], range 51 [paras[3], 1, comment, 8] 
+PASS Point 78 [detachedForeignComment, 4], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 78 [detachedForeignComment, 4], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 78 [detachedForeignComment, 4], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 78 [detachedForeignComment, 4], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 78 [detachedForeignComment, 4], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 79 [detachedXmlComment, 2], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 79 [detachedXmlComment, 2], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 79 [detachedXmlComment, 2], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 79 [detachedXmlComment, 2], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 79 [detachedXmlComment, 2], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 79 [detachedXmlComment, 2], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 79 [detachedXmlComment, 2], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 79 [detachedXmlComment, 2], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 79 [detachedXmlComment, 2], range 13 [document.head, 1, document.head, 1] 
+PASS Point 79 [detachedXmlComment, 2], range 14 [document.body, 4, document.body, 5] 
+PASS Point 79 [detachedXmlComment, 2], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 79 [detachedXmlComment, 2], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 79 [detachedXmlComment, 2], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 79 [detachedXmlComment, 2], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 79 [detachedXmlComment, 2], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 79 [detachedXmlComment, 2], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 79 [detachedXmlComment, 2], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 79 [detachedXmlComment, 2], range 23 [document, 0, document, 1] 
+PASS Point 79 [detachedXmlComment, 2], range 24 [document, 0, document, 2] 
+PASS Point 79 [detachedXmlComment, 2], range 25 [comment, 2, comment, 3] 
+PASS Point 79 [detachedXmlComment, 2], range 26 [testDiv, 0, comment, 5] 
+PASS Point 79 [detachedXmlComment, 2], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 79 [detachedXmlComment, 2], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 79 [detachedXmlComment, 2], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 79 [detachedXmlComment, 2], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 79 [detachedXmlComment, 2], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 79 [detachedXmlComment, 2], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 79 [detachedXmlComment, 2], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 79 [detachedXmlComment, 2], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 79 [detachedXmlComment, 2], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 79 [detachedXmlComment, 2], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 79 [detachedXmlComment, 2], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 79 [detachedXmlComment, 2], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 79 [detachedXmlComment, 2], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 79 [detachedXmlComment, 2], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 79 [detachedXmlComment, 2], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 79 [detachedXmlComment, 2], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 79 [detachedXmlComment, 2], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 49 [document, 1, document, 2] 
+PASS Point 79 [detachedXmlComment, 2], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 79 [detachedXmlComment, 2], range 51 [paras[3], 1, comment, 8] 
+PASS Point 79 [detachedXmlComment, 2], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 79 [detachedXmlComment, 2], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 79 [detachedXmlComment, 2], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 79 [detachedXmlComment, 2], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 79 [detachedXmlComment, 2], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 80 [docfrag, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 80 [docfrag, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 80 [docfrag, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 80 [docfrag, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 80 [docfrag, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 80 [docfrag, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 80 [docfrag, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 80 [docfrag, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 80 [docfrag, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 80 [docfrag, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 80 [docfrag, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 80 [docfrag, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 80 [docfrag, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 80 [docfrag, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 80 [docfrag, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 80 [docfrag, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 80 [docfrag, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 80 [docfrag, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 80 [docfrag, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 80 [docfrag, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 80 [docfrag, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 80 [docfrag, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 80 [docfrag, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 80 [docfrag, 0], range 23 [document, 0, document, 1] 
+PASS Point 80 [docfrag, 0], range 24 [document, 0, document, 2] 
+PASS Point 80 [docfrag, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 80 [docfrag, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 80 [docfrag, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 80 [docfrag, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 80 [docfrag, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 80 [docfrag, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 80 [docfrag, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 80 [docfrag, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 80 [docfrag, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 80 [docfrag, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 80 [docfrag, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 80 [docfrag, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 80 [docfrag, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 80 [docfrag, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 80 [docfrag, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 80 [docfrag, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 80 [docfrag, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 80 [docfrag, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 80 [docfrag, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 80 [docfrag, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 80 [docfrag, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 80 [docfrag, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 80 [docfrag, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 80 [docfrag, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 80 [docfrag, 0], range 49 [document, 1, document, 2] 
+PASS Point 80 [docfrag, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 80 [docfrag, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 80 [docfrag, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 80 [docfrag, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 80 [docfrag, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 80 [docfrag, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 80 [docfrag, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 80 [docfrag, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 80 [docfrag, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 80 [docfrag, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 81 [foreignDocfrag, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 81 [foreignDocfrag, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 81 [foreignDocfrag, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 81 [foreignDocfrag, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 81 [foreignDocfrag, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 81 [foreignDocfrag, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 81 [foreignDocfrag, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 81 [foreignDocfrag, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 81 [foreignDocfrag, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 81 [foreignDocfrag, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 81 [foreignDocfrag, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 81 [foreignDocfrag, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 81 [foreignDocfrag, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 81 [foreignDocfrag, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 81 [foreignDocfrag, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 81 [foreignDocfrag, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 81 [foreignDocfrag, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 81 [foreignDocfrag, 0], range 23 [document, 0, document, 1] 
+PASS Point 81 [foreignDocfrag, 0], range 24 [document, 0, document, 2] 
+PASS Point 81 [foreignDocfrag, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 81 [foreignDocfrag, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 81 [foreignDocfrag, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 81 [foreignDocfrag, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 81 [foreignDocfrag, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 81 [foreignDocfrag, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 81 [foreignDocfrag, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 81 [foreignDocfrag, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 81 [foreignDocfrag, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 81 [foreignDocfrag, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 81 [foreignDocfrag, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 81 [foreignDocfrag, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 81 [foreignDocfrag, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 81 [foreignDocfrag, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 81 [foreignDocfrag, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 81 [foreignDocfrag, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 81 [foreignDocfrag, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 81 [foreignDocfrag, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 81 [foreignDocfrag, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 49 [document, 1, document, 2] 
+PASS Point 81 [foreignDocfrag, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 81 [foreignDocfrag, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 81 [foreignDocfrag, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 81 [foreignDocfrag, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 81 [foreignDocfrag, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 81 [foreignDocfrag, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 81 [foreignDocfrag, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 82 [xmlDocfrag, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 82 [xmlDocfrag, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 82 [xmlDocfrag, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 82 [xmlDocfrag, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 82 [xmlDocfrag, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 82 [xmlDocfrag, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 82 [xmlDocfrag, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 82 [xmlDocfrag, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 82 [xmlDocfrag, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 82 [xmlDocfrag, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 82 [xmlDocfrag, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 82 [xmlDocfrag, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 82 [xmlDocfrag, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 82 [xmlDocfrag, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 82 [xmlDocfrag, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 82 [xmlDocfrag, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 82 [xmlDocfrag, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 82 [xmlDocfrag, 0], range 23 [document, 0, document, 1] 
+PASS Point 82 [xmlDocfrag, 0], range 24 [document, 0, document, 2] 
+PASS Point 82 [xmlDocfrag, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 82 [xmlDocfrag, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 82 [xmlDocfrag, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 82 [xmlDocfrag, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 82 [xmlDocfrag, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 82 [xmlDocfrag, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 82 [xmlDocfrag, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 82 [xmlDocfrag, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 82 [xmlDocfrag, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 82 [xmlDocfrag, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 82 [xmlDocfrag, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 82 [xmlDocfrag, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 82 [xmlDocfrag, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 82 [xmlDocfrag, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 82 [xmlDocfrag, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 82 [xmlDocfrag, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 82 [xmlDocfrag, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 82 [xmlDocfrag, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 82 [xmlDocfrag, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 49 [document, 1, document, 2] 
+PASS Point 82 [xmlDocfrag, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 82 [xmlDocfrag, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 82 [xmlDocfrag, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 82 [xmlDocfrag, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 82 [xmlDocfrag, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 82 [xmlDocfrag, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 82 [xmlDocfrag, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 83 [doctype, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 83 [doctype, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 83 [doctype, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 83 [doctype, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 83 [doctype, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 83 [doctype, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 83 [doctype, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 83 [doctype, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 83 [doctype, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 83 [doctype, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 83 [doctype, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 83 [doctype, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 83 [doctype, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 83 [doctype, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 83 [doctype, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 83 [doctype, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 83 [doctype, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 83 [doctype, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 83 [doctype, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 83 [doctype, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 83 [doctype, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 83 [doctype, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 83 [doctype, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 83 [doctype, 0], range 23 [document, 0, document, 1] 
+PASS Point 83 [doctype, 0], range 24 [document, 0, document, 2] 
+PASS Point 83 [doctype, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 83 [doctype, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 83 [doctype, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 83 [doctype, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 83 [doctype, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 83 [doctype, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 83 [doctype, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 83 [doctype, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 83 [doctype, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 83 [doctype, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 83 [doctype, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 83 [doctype, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 83 [doctype, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 83 [doctype, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 83 [doctype, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 83 [doctype, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 83 [doctype, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 83 [doctype, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 83 [doctype, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 83 [doctype, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 83 [doctype, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 83 [doctype, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 83 [doctype, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 83 [doctype, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 83 [doctype, 0], range 49 [document, 1, document, 2] 
+PASS Point 83 [doctype, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 83 [doctype, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 83 [doctype, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 83 [doctype, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 83 [doctype, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 83 [doctype, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 83 [doctype, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 83 [doctype, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 83 [doctype, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 83 [doctype, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 84 [doctype, -17], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 84 [doctype, -17], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 84 [doctype, -17], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 84 [doctype, -17], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 84 [doctype, -17], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 84 [doctype, -17], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 84 [doctype, -17], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 84 [doctype, -17], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 84 [doctype, -17], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 84 [doctype, -17], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 84 [doctype, -17], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 84 [doctype, -17], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 84 [doctype, -17], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 84 [doctype, -17], range 13 [document.head, 1, document.head, 1] 
+PASS Point 84 [doctype, -17], range 14 [document.body, 4, document.body, 5] 
+PASS Point 84 [doctype, -17], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 84 [doctype, -17], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 84 [doctype, -17], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 84 [doctype, -17], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 84 [doctype, -17], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 84 [doctype, -17], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 84 [doctype, -17], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 84 [doctype, -17], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 84 [doctype, -17], range 23 [document, 0, document, 1] 
+PASS Point 84 [doctype, -17], range 24 [document, 0, document, 2] 
+PASS Point 84 [doctype, -17], range 25 [comment, 2, comment, 3] 
+PASS Point 84 [doctype, -17], range 26 [testDiv, 0, comment, 5] 
+PASS Point 84 [doctype, -17], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 84 [doctype, -17], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 84 [doctype, -17], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 84 [doctype, -17], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 84 [doctype, -17], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 84 [doctype, -17], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 84 [doctype, -17], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 84 [doctype, -17], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 84 [doctype, -17], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 84 [doctype, -17], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 84 [doctype, -17], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 84 [doctype, -17], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 84 [doctype, -17], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 84 [doctype, -17], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 84 [doctype, -17], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 84 [doctype, -17], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 84 [doctype, -17], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 84 [doctype, -17], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 84 [doctype, -17], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 84 [doctype, -17], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 84 [doctype, -17], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 84 [doctype, -17], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 84 [doctype, -17], range 49 [document, 1, document, 2] 
+PASS Point 84 [doctype, -17], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 84 [doctype, -17], range 51 [paras[3], 1, comment, 8] 
+PASS Point 84 [doctype, -17], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 84 [doctype, -17], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 84 [doctype, -17], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 84 [doctype, -17], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 84 [doctype, -17], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 84 [doctype, -17], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 84 [doctype, -17], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 84 [doctype, -17], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 85 [doctype, 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 85 [doctype, 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 85 [doctype, 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 85 [doctype, 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 85 [doctype, 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 85 [doctype, 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 85 [doctype, 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 85 [doctype, 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 85 [doctype, 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 85 [doctype, 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 85 [doctype, 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 85 [doctype, 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 85 [doctype, 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 85 [doctype, 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 85 [doctype, 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 85 [doctype, 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 85 [doctype, 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 85 [doctype, 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 85 [doctype, 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 85 [doctype, 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 85 [doctype, 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 85 [doctype, 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 85 [doctype, 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 85 [doctype, 1], range 23 [document, 0, document, 1] 
+PASS Point 85 [doctype, 1], range 24 [document, 0, document, 2] 
+PASS Point 85 [doctype, 1], range 25 [comment, 2, comment, 3] 
+PASS Point 85 [doctype, 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 85 [doctype, 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 85 [doctype, 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 85 [doctype, 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 85 [doctype, 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 85 [doctype, 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 85 [doctype, 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 85 [doctype, 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 85 [doctype, 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 85 [doctype, 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 85 [doctype, 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 85 [doctype, 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 85 [doctype, 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 85 [doctype, 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 85 [doctype, 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 85 [doctype, 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 85 [doctype, 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 85 [doctype, 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 85 [doctype, 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 85 [doctype, 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 85 [doctype, 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 85 [doctype, 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 85 [doctype, 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 85 [doctype, 1], range 49 [document, 1, document, 2] 
+PASS Point 85 [doctype, 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 85 [doctype, 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 85 [doctype, 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 85 [doctype, 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 85 [doctype, 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 85 [doctype, 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 85 [doctype, 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 85 [doctype, 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 85 [doctype, 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 85 [doctype, 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 86 [foreignDoctype, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 86 [foreignDoctype, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 86 [foreignDoctype, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 86 [foreignDoctype, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 86 [foreignDoctype, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 86 [foreignDoctype, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 86 [foreignDoctype, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 86 [foreignDoctype, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 86 [foreignDoctype, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 86 [foreignDoctype, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 86 [foreignDoctype, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 86 [foreignDoctype, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 86 [foreignDoctype, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 86 [foreignDoctype, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 86 [foreignDoctype, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 86 [foreignDoctype, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 86 [foreignDoctype, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 86 [foreignDoctype, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 86 [foreignDoctype, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 86 [foreignDoctype, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 86 [foreignDoctype, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 86 [foreignDoctype, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 86 [foreignDoctype, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 86 [foreignDoctype, 0], range 23 [document, 0, document, 1] 
+PASS Point 86 [foreignDoctype, 0], range 24 [document, 0, document, 2] 
+PASS Point 86 [foreignDoctype, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 86 [foreignDoctype, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 86 [foreignDoctype, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 86 [foreignDoctype, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 86 [foreignDoctype, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 86 [foreignDoctype, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 86 [foreignDoctype, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 86 [foreignDoctype, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 86 [foreignDoctype, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 86 [foreignDoctype, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 86 [foreignDoctype, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 86 [foreignDoctype, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 86 [foreignDoctype, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 86 [foreignDoctype, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 86 [foreignDoctype, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 86 [foreignDoctype, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 86 [foreignDoctype, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 86 [foreignDoctype, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 86 [foreignDoctype, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 86 [foreignDoctype, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 86 [foreignDoctype, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 86 [foreignDoctype, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 86 [foreignDoctype, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 86 [foreignDoctype, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 86 [foreignDoctype, 0], range 49 [document, 1, document, 2] 
+PASS Point 86 [foreignDoctype, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 86 [foreignDoctype, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 86 [foreignDoctype, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 86 [foreignDoctype, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 86 [foreignDoctype, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 86 [foreignDoctype, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 86 [foreignDoctype, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 86 [foreignDoctype, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 86 [foreignDoctype, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 86 [foreignDoctype, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 87 [xmlDoctype, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 87 [xmlDoctype, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 87 [xmlDoctype, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 87 [xmlDoctype, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 87 [xmlDoctype, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 87 [xmlDoctype, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 87 [xmlDoctype, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 87 [xmlDoctype, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 87 [xmlDoctype, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 87 [xmlDoctype, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 87 [xmlDoctype, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 87 [xmlDoctype, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 87 [xmlDoctype, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 87 [xmlDoctype, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 87 [xmlDoctype, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 87 [xmlDoctype, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 87 [xmlDoctype, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 87 [xmlDoctype, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 87 [xmlDoctype, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 87 [xmlDoctype, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 87 [xmlDoctype, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 87 [xmlDoctype, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 87 [xmlDoctype, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 87 [xmlDoctype, 0], range 23 [document, 0, document, 1] 
+PASS Point 87 [xmlDoctype, 0], range 24 [document, 0, document, 2] 
+PASS Point 87 [xmlDoctype, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 87 [xmlDoctype, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 87 [xmlDoctype, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 87 [xmlDoctype, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 87 [xmlDoctype, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 87 [xmlDoctype, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 87 [xmlDoctype, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 87 [xmlDoctype, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 87 [xmlDoctype, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 87 [xmlDoctype, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 87 [xmlDoctype, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 87 [xmlDoctype, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 87 [xmlDoctype, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 87 [xmlDoctype, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 87 [xmlDoctype, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 87 [xmlDoctype, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 87 [xmlDoctype, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 87 [xmlDoctype, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 87 [xmlDoctype, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 87 [xmlDoctype, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 87 [xmlDoctype, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 87 [xmlDoctype, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 87 [xmlDoctype, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 87 [xmlDoctype, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 87 [xmlDoctype, 0], range 49 [document, 1, document, 2] 
+PASS Point 87 [xmlDoctype, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 87 [xmlDoctype, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 87 [xmlDoctype, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 87 [xmlDoctype, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 87 [xmlDoctype, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 87 [xmlDoctype, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 87 [xmlDoctype, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 87 [xmlDoctype, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 87 [xmlDoctype, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 87 [xmlDoctype, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangecomparePointhtmlfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangecomparePointhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-comparePoint.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-comparePoint.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-comparePoint.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-comparePoint.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,92 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Range.comparePoint() tests&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Aryeh Gregor&quot; href=ayg@aryeh.name&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;script src=../common.js&gt;&lt;/script&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+
+// Will be filled in on the first run for that range
+var testRangesCached = [];
+
+for (var i = 0; i &lt; testPoints.length; i++) {
+  var node = eval(testPoints[i])[0];
+  var offset = eval(testPoints[i])[1];
+
+  // comparePoint is an unsigned long, so per WebIDL, we need to treat it as
+  // though it wrapped to an unsigned 32-bit integer.
+  var normalizedOffset = offset % Math.pow(2, 32);
+  if (normalizedOffset &lt; 0) {
+    normalizedOffset += Math.pow(2, 32);
+  }
+
+  for (var j = 0; j &lt; testRanges.length; j++) {
+    test(function() {
+      if (testRangesCached[j] === undefined) {
+        try {
+          testRangesCached[j] = rangeFromEndpoints(eval(testRanges[i]));
+        } catch(e) {
+          testRangesCached[j] = null;
+        }
+      }
+      assert_not_equals(testRangesCached[j], null,
+        &quot;Setting up the range failed&quot;);
+
+      var range = testRangesCached[j].cloneRange();
+
+      // &quot;If node's root is different from the context object's root,
+      // throw a &quot;WrongDocumentError&quot; exception and terminate these
+      // steps.&quot;
+      if (furthestAncestor(node) !== furthestAncestor(range.startContainer)) {
+        assert_throws(&quot;WRONG_DOCUMENT_ERR&quot;, function() {
+          range.comparePoint(node, offset);
+        }, &quot;Must throw WrongDocumentError if node and range have different roots&quot;);
+        return;
+      }
+
+      // &quot;If node is a doctype, throw an &quot;InvalidNodeTypeError&quot; exception
+      // and terminate these steps.&quot;
+      if (node.nodeType == Node.DOCUMENT_TYPE_NODE) {
+        assert_throws(&quot;INVALID_NODE_TYPE_ERR&quot;, function() {
+          range.comparePoint(node, offset);
+        }, &quot;Must throw InvalidNodeTypeError if node is a doctype&quot;);
+        return;
+      }
+
+      // &quot;If offset is greater than node's length, throw an
+      // &quot;IndexSizeError&quot; exception and terminate these steps.&quot;
+      if (normalizedOffset &gt; nodeLength(node)) {
+        assert_throws(&quot;INDEX_SIZE_ERR&quot;, function() {
+          range.comparePoint(node, offset);
+        }, &quot;Must throw IndexSizeError if offset is greater than  length&quot;);
+        return;
+      }
+
+      // &quot;If (node, offset) is before start, return −1 and terminate
+      // these steps.&quot;
+      if (getPosition(node, normalizedOffset, range.startContainer, range.startOffset) === &quot;before&quot;) {
+        assert_equals(range.comparePoint(node, offset), -1,
+          &quot;Must return -1 if point is before start&quot;);
+        return;
+      }
+
+      // &quot;If (node, offset) is after end, return 1 and terminate these
+      // steps.&quot;
+      if (getPosition(node, normalizedOffset, range.endContainer, range.endOffset) === &quot;after&quot;) {
+        assert_equals(range.comparePoint(node, offset), 1,
+          &quot;Must return 1 if point is after end&quot;);
+        return;
+      }
+
+      // &quot;Return 0.&quot;
+      assert_equals(range.comparePoint(node, offset), 0,
+        &quot;Must return 0 if point is neither before start nor after end&quot;);
+    }, &quot;Point &quot; + i + &quot; &quot; + testPoints[i] + &quot;, range &quot; + j + &quot; &quot; + testRanges[j]);
+  }
+}
+
+testDiv.style.display = &quot;none&quot;;
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangedeleteContentsexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangedeleteContentsexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-deleteContents-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-deleteContents-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-deleteContents-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-deleteContents-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,125 @@
</span><ins>+To debug test failures, add a query parameter &quot;subtest&quot; with the test id (like &quot;?subtest=5&quot;). Only that test will be run. Then you can look at the resulting iframe in the DOM.
+
+
+PASS Detached Range 
+PASS Resulting DOM for range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Resulting cursor position for range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Resulting DOM for range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Resulting cursor position for range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Resulting DOM for range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Resulting cursor position for range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Resulting DOM for range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Resulting cursor position for range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Resulting DOM for range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Resulting cursor position for range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Resulting DOM for range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Resulting cursor position for range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Resulting DOM for range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Resulting cursor position for range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Resulting DOM for range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Resulting cursor position for range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Resulting DOM for range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Resulting cursor position for range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Resulting DOM for range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Resulting cursor position for range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Resulting DOM for range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Resulting cursor position for range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Resulting DOM for range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Resulting cursor position for range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Resulting DOM for range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Resulting cursor position for range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Resulting DOM for range 13 [document.head, 1, document.head, 1] 
+PASS Resulting cursor position for range 13 [document.head, 1, document.head, 1] 
+PASS Resulting DOM for range 14 [document.body, 4, document.body, 5] 
+PASS Resulting cursor position for range 14 [document.body, 4, document.body, 5] 
+PASS Resulting DOM for range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Resulting cursor position for range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Resulting DOM for range 16 [paras[0], 0, paras[0], 1] 
+PASS Resulting cursor position for range 16 [paras[0], 0, paras[0], 1] 
+PASS Resulting DOM for range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Resulting cursor position for range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Resulting DOM for range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Resulting cursor position for range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Resulting DOM for range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Resulting cursor position for range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Resulting DOM for range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Resulting cursor position for range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Resulting DOM for range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Resulting cursor position for range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Resulting DOM for range 22 [testDiv, 2, paras[4], 1] 
+PASS Resulting cursor position for range 22 [testDiv, 2, paras[4], 1] 
+FAIL Resulting DOM for range 23 [document, 0, document, 1] HierarchyRequestError: DOM Exception 3
+FAIL Resulting cursor position for range 23 [document, 0, document, 1] undefined is not an object (evaluating 'actualRoots')
+FAIL Resulting DOM for range 24 [document, 0, document, 2] HierarchyRequestError: DOM Exception 3
+FAIL Resulting cursor position for range 24 [document, 0, document, 2] undefined is not an object (evaluating 'actualRoots')
+PASS Resulting DOM for range 25 [comment, 2, comment, 3] 
+PASS Resulting cursor position for range 25 [comment, 2, comment, 3] 
+PASS Resulting DOM for range 26 [testDiv, 0, comment, 5] 
+PASS Resulting cursor position for range 26 [testDiv, 0, comment, 5] 
+PASS Resulting DOM for range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Resulting cursor position for range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Resulting DOM for range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Resulting cursor position for range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Resulting DOM for range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Resulting cursor position for range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Resulting DOM for range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Resulting cursor position for range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Resulting DOM for range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Resulting cursor position for range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Resulting DOM for range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Resulting cursor position for range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Resulting DOM for range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Resulting cursor position for range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Resulting DOM for range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Resulting cursor position for range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Resulting DOM for range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Resulting cursor position for range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Resulting DOM for range 36 [docfrag, 0, docfrag, 0] 
+PASS Resulting cursor position for range 36 [docfrag, 0, docfrag, 0] 
+FAIL Resulting DOM for range 37 [processingInstruction, 0, processingInstruction, 4] assert_equals: Actual and expected mismatch for tree root.  First difference: differing nodeValue (nodeName = &quot;somePI&quot;) expected &quot;Did you know that \&quot;:syn sync fromstart\&quot; is very useful when using vim to edit large amounts of JavaScript embedded in HTML?&quot; but got &quot;you know that \&quot;:syn sync fromstart\&quot; is very useful when using vim to edit large amounts of JavaScript embedded in HTML?&quot;
+FAIL Resulting cursor position for range 37 [processingInstruction, 0, processingInstruction, 4] assert_true: The resulting DOMs were not equal, so comparing positions makes no sense expected true got false
+PASS Resulting DOM for range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Resulting cursor position for range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Resulting DOM for range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Resulting cursor position for range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Resulting DOM for range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Resulting cursor position for range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Resulting DOM for range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Resulting cursor position for range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Resulting DOM for range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Resulting cursor position for range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Resulting DOM for range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Resulting cursor position for range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Resulting DOM for range 44 [paras[0], 0, paras[0], 0] 
+PASS Resulting cursor position for range 44 [paras[0], 0, paras[0], 0] 
+PASS Resulting DOM for range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Resulting cursor position for range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Resulting DOM for range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Resulting cursor position for range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Resulting DOM for range 47 [document.documentElement, 1, document.body, 0] 
+PASS Resulting cursor position for range 47 [document.documentElement, 1, document.body, 0] 
+PASS Resulting DOM for range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Resulting cursor position for range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Resulting DOM for range 49 [document, 1, document, 2] 
+PASS Resulting cursor position for range 49 [document, 1, document, 2] 
+PASS Resulting DOM for range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Resulting cursor position for range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Resulting DOM for range 51 [paras[3], 1, comment, 8] 
+PASS Resulting cursor position for range 51 [paras[3], 1, comment, 8] 
+PASS Resulting DOM for range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Resulting cursor position for range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Resulting DOM for range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Resulting cursor position for range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Resulting DOM for range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Resulting cursor position for range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Resulting DOM for range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Resulting cursor position for range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Resulting DOM for range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Resulting cursor position for range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Resulting DOM for range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Resulting cursor position for range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Resulting DOM for range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Resulting cursor position for range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Resulting DOM for range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Resulting cursor position for range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangedeleteContentshtmlfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangedeleteContentshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-deleteContents.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-deleteContents.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-deleteContents.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-deleteContents.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,331 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Range.deleteContents() tests&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Aryeh Gregor&quot; href=ayg@aryeh.name&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;p&gt;To debug test failures, add a query parameter &quot;subtest&quot; with the test id (like
+&quot;?subtest=5&quot;).  Only that test will be run.  Then you can look at the resulting
+iframe in the DOM.
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;script src=../common.js&gt;&lt;/script&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+
+testDiv.parentNode.removeChild(testDiv);
+
+var actualIframe = document.createElement(&quot;iframe&quot;);
+actualIframe.style.display = &quot;none&quot;;
+document.body.appendChild(actualIframe);
+
+var expectedIframe = document.createElement(&quot;iframe&quot;);
+expectedIframe.style.display = &quot;none&quot;;
+document.body.appendChild(expectedIframe);
+
+function restoreIframe(iframe, i) {
+  // Most of this function is designed to work around the fact that Opera
+  // doesn't let you add a doctype to a document that no longer has one, in
+  // any way I can figure out.  I eventually compromised on something that
+  // will still let Opera pass most tests that don't actually involve
+  // doctypes.
+  while (iframe.contentDocument.firstChild
+  &amp;&amp; iframe.contentDocument.firstChild.nodeType != Node.DOCUMENT_TYPE_NODE) {
+    iframe.contentDocument.removeChild(iframe.contentDocument.firstChild);
+  }
+
+  while (iframe.contentDocument.lastChild
+  &amp;&amp; iframe.contentDocument.lastChild.nodeType != Node.DOCUMENT_TYPE_NODE) {
+    iframe.contentDocument.removeChild(iframe.contentDocument.lastChild);
+  }
+
+  if (!iframe.contentDocument.firstChild) {
+    // This will throw an exception in Opera if we reach here, which is why
+    // I try to avoid it.  It will never happen in a browser that obeys the
+    // spec, so it's really just insurance.  I don't think it actually gets
+    // hit by anything.
+    iframe.contentDocument.appendChild(iframe.contentDocument.implementation.createDocumentType(&quot;html&quot;, &quot;&quot;, &quot;&quot;));
+  }
+  iframe.contentDocument.appendChild(referenceDoc.documentElement.cloneNode(true));
+  iframe.contentWindow.setupRangeTests();
+  iframe.contentWindow.testRangeInput = testRanges[i];
+  iframe.contentWindow.run();
+}
+
+function myDeleteContents(range) {
+  // &quot;If the context object's start and end are the same, abort this method.&quot;
+  if (range.startContainer == range.endContainer
+  &amp;&amp; range.startOffset == range.endOffset) {
+    return;
+  }
+
+  // &quot;Let original start node, original start offset, original end node, and
+  // original end offset be the context object's start and end nodes and
+  // offsets, respectively.&quot;
+  var originalStartNode = range.startContainer;
+  var originalStartOffset = range.startOffset;
+  var originalEndNode = range.endContainer;
+  var originalEndOffset = range.endOffset;
+
+  // &quot;If original start node and original end node are the same, and they are
+  // a Text or Comment node, call deleteData(original start offset, original
+  // end offset − original start offset) on that node, and abort these
+  // steps.&quot;
+  if (originalStartNode == originalEndNode
+  &amp;&amp; (range.startContainer.nodeType == Node.TEXT_NODE
+  || range.startContainer.nodeType == Node.COMMENT_NODE)) {
+    originalStartNode.deleteData(originalStartOffset, originalEndOffset - originalStartOffset);
+    return;
+  }
+
+  // &quot;Let nodes to remove be a list of all the Nodes that are contained in
+  // the context object, in tree order, omitting any Node whose parent is
+  // also contained in the context object.&quot;
+  //
+  // We rely on the fact that the contained nodes must lie in tree order
+  // between the start node, and the end node's last descendant (inclusive).
+  var nodesToRemove = [];
+  var stop = nextNodeDescendants(range.endContainer);
+  for (var node = range.startContainer; node != stop; node = nextNode(node)) {
+    if (isContained(node, range)
+    &amp;&amp; !(node.parentNode &amp;&amp; isContained(node.parentNode, range))) {
+      nodesToRemove.push(node);
+    }
+  }
+
+  // &quot;If original start node is an ancestor container of original end node,
+  // set new node to original start node and new offset to original start
+  // offset.&quot;
+  var newNode;
+  var newOffset;
+  if (originalStartNode == originalEndNode
+  || originalEndNode.compareDocumentPosition(originalStartNode) &amp; Node.DOCUMENT_POSITION_CONTAINS) {
+    newNode = originalStartNode;
+    newOffset = originalStartOffset;
+  // &quot;Otherwise:&quot;
+  } else {
+    // &quot;Let reference node equal original start node.&quot;
+    var referenceNode = originalStartNode;
+
+    // &quot;While reference node's parent is not null and is not an ancestor
+    // container of original end node, set reference node to its parent.&quot;
+    while (referenceNode.parentNode
+    &amp;&amp; referenceNode.parentNode != originalEndNode
+    &amp;&amp; !(originalEndNode.compareDocumentPosition(referenceNode.parentNode) &amp; Node.DOCUMENT_POSITION_CONTAINS)) {
+      referenceNode = referenceNode.parentNode;
+    }
+
+    // &quot;Set new node to the parent of reference node, and new offset to one
+    // plus the index of reference node.&quot;
+    newNode = referenceNode.parentNode;
+    newOffset = 1 + indexOf(referenceNode);
+  }
+
+  // &quot;If original start node is a Text or Comment node, run deleteData() on
+  // it, with original start offset as the first argument and (length of
+  // original start node − original start offset) as the second.&quot;
+  if (originalStartNode.nodeType == Node.TEXT_NODE
+  || originalStartNode.nodeType == Node.COMMENT_NODE) {
+    originalStartNode.deleteData(originalStartOffset, nodeLength(originalStartNode) - originalStartOffset);
+  }
+
+  // &quot;For each node in nodes to remove, in order, remove node from its
+  // parent.&quot;
+  for (var i = 0; i &lt; nodesToRemove.length; i++) {
+    nodesToRemove[i].parentNode.removeChild(nodesToRemove[i]);
+  }
+
+  // &quot;If original end node is a Text or Comment node, run deleteData(0,
+  // original end offset) on it.&quot;
+  if (originalEndNode.nodeType == Node.TEXT_NODE
+  || originalEndNode.nodeType == Node.COMMENT_NODE) {
+    originalEndNode.deleteData(0, originalEndOffset);
+  }
+
+  // &quot;Set the context object's start and end to (new node, new offset).&quot;
+  range.setStart(newNode, newOffset);
+  range.setEnd(newNode, newOffset);
+}
+
+function testDeleteContents(i) {
+  restoreIframe(actualIframe, i);
+  restoreIframe(expectedIframe, i);
+
+  var actualRange = actualIframe.contentWindow.testRange;
+  var expectedRange = expectedIframe.contentWindow.testRange;
+  var actualRoots, expectedRoots;
+
+  domTests[i].step(function() {
+    assert_equals(actualIframe.contentWindow.unexpectedException, null,
+      &quot;Unexpected exception thrown when setting up Range for actual deleteContents()&quot;);
+    assert_equals(expectedIframe.contentWindow.unexpectedException, null,
+      &quot;Unexpected exception thrown when setting up Range for simulated deleteContents()&quot;);
+    assert_equals(typeof actualRange, &quot;object&quot;,
+      &quot;typeof Range produced in actual iframe&quot;);
+    assert_equals(typeof expectedRange, &quot;object&quot;,
+      &quot;typeof Range produced in expected iframe&quot;);
+
+    // Just to be pedantic, we'll test not only that the tree we're
+    // modifying is the same in expected vs. actual, but also that all the
+    // nodes originally in it were the same.  Typically some nodes will
+    // become detached when the algorithm is run, but they still exist and
+    // references can still be kept to them, so they should also remain the
+    // same.
+    //
+    // We initialize the list to all nodes, and later on remove all the
+    // ones which still have parents, since the parents will presumably be
+    // tested for isEqualNode() and checking the children would be
+    // redundant.
+    var actualAllNodes = [];
+    var node = furthestAncestor(actualRange.startContainer);
+    do {
+      actualAllNodes.push(node);
+    } while (node = nextNode(node));
+
+    var expectedAllNodes = [];
+    var node = furthestAncestor(expectedRange.startContainer);
+    do {
+      expectedAllNodes.push(node);
+    } while (node = nextNode(node));
+
+    actualRange.deleteContents();
+    myDeleteContents(expectedRange);
+
+    actualRoots = [];
+    for (var j = 0; j &lt; actualAllNodes.length; j++) {
+      if (!actualAllNodes[j].parentNode) {
+        actualRoots.push(actualAllNodes[j]);
+      }
+    }
+
+    expectedRoots = [];
+    for (var j = 0; j &lt; expectedAllNodes.length; j++) {
+      if (!expectedAllNodes[j].parentNode) {
+        expectedRoots.push(expectedAllNodes[j]);
+      }
+    }
+
+    for (var j = 0; j &lt; actualRoots.length; j++) {
+      if (!actualRoots[j].isEqualNode(expectedRoots[j])) {
+        var msg = j ? &quot;detached node #&quot; + j : &quot;tree root&quot;;
+        msg = &quot;Actual and expected mismatch for &quot; + msg + &quot;.  &quot;;
+
+        // Find the specific error
+        var actual = actualRoots[j];
+        var expected = expectedRoots[j];
+
+        while (actual &amp;&amp; expected) {
+          assert_equals(actual.nodeType, expected.nodeType,
+            msg + &quot;First difference: differing nodeType&quot;);
+          assert_equals(actual.nodeName, expected.nodeName,
+            msg + &quot;First difference: differing nodeName&quot;);
+          assert_equals(actual.nodeValue, expected.nodeValue,
+            msg + 'First difference: differing nodeValue (nodeName = &quot;' + actual.nodeName + '&quot;)');
+          assert_equals(actual.childNodes.length, expected.childNodes.length,
+            msg + 'First difference: differing number of children (nodeName = &quot;' + actual.nodeName + '&quot;)');
+          actual = nextNode(actual);
+          expected = nextNode(expected);
+        }
+
+        assert_unreached(&quot;DOMs were not equal but we couldn't figure out why&quot;);
+      }
+
+      if (j == 0) {
+        // Clearly something is wrong if the node lists are different
+        // lengths.  We want to report this only after we've already
+        // checked the main tree for equality, though, so it doesn't
+        // mask more interesting errors.
+        assert_equals(actualRoots.length, expectedRoots.length,
+          &quot;Actual and expected DOMs were broken up into a different number of pieces by deleteContents() (this probably means you created or detached nodes when you weren't supposed to)&quot;);
+      }
+    }
+  });
+  domTests[i].done();
+
+  positionTests[i].step(function() {
+    assert_equals(actualIframe.contentWindow.unexpectedException, null,
+      &quot;Unexpected exception thrown when setting up Range for actual deleteContents()&quot;);
+    assert_equals(expectedIframe.contentWindow.unexpectedException, null,
+      &quot;Unexpected exception thrown when setting up Range for simulated deleteContents()&quot;);
+    assert_equals(typeof actualRange, &quot;object&quot;,
+      &quot;typeof Range produced in actual iframe&quot;);
+    assert_equals(typeof expectedRange, &quot;object&quot;,
+      &quot;typeof Range produced in expected iframe&quot;);
+    assert_true(actualRoots[0].isEqualNode(expectedRoots[0]),
+      &quot;The resulting DOMs were not equal, so comparing positions makes no sense&quot;);
+
+    assert_equals(actualRange.startContainer, actualRange.endContainer,
+      &quot;startContainer and endContainer must always be the same after deleteContents()&quot;);
+    assert_equals(actualRange.startOffset, actualRange.endOffset,
+      &quot;startOffset and endOffset must always be the same after deleteContents()&quot;);
+    assert_equals(expectedRange.startContainer, expectedRange.endContainer,
+      &quot;Test bug!  Expected startContainer and endContainer must always be the same after deleteContents()&quot;);
+    assert_equals(expectedRange.startOffset, expectedRange.endOffset,
+      &quot;Test bug!  Expected startOffset and endOffset must always be the same after deleteContents()&quot;);
+
+    assert_equals(actualRange.startOffset, expectedRange.startOffset,
+      &quot;Unexpected startOffset after deleteContents()&quot;);
+    // How do we decide that the two nodes are equal, since they're in
+    // different trees?  Since the DOMs are the same, it's enough to check
+    // that the index in the parent is the same all the way up the tree.
+    // But we can first cheat by just checking they're actually equal.
+    assert_true(actualRange.startContainer.isEqualNode(expectedRange.startContainer),
+      &quot;Unexpected startContainer after deleteContents(), expected &quot; +
+      expectedRange.startContainer.nodeName.toLowerCase() + &quot; but got &quot; +
+      actualRange.startContainer.nodeName.toLowerCase());
+    var currentActual = actualRange.startContainer;
+    var currentExpected = expectedRange.startContainer;
+    var actual = &quot;&quot;;
+    var expected = &quot;&quot;;
+    while (currentActual &amp;&amp; currentExpected) {
+      actual = indexOf(currentActual) + &quot;-&quot; + actual;
+      expected = indexOf(currentExpected) + &quot;-&quot; + expected;
+
+      currentActual = currentActual.parentNode;
+      currentExpected = currentExpected.parentNode;
+    }
+    actual = actual.substr(0, actual.length - 1);
+    expected = expected.substr(0, expected.length - 1);
+    assert_equals(actual, expected,
+      &quot;startContainer superficially looks right but is actually the wrong node if you trace back its index in all its ancestors (I'm surprised this actually happened&quot;);
+  });
+  positionTests[i].done();
+}
+
+// First test a detached Range, synchronously
+test(function() {
+  var range = document.createRange();
+  range.detach();
+  range.deleteContents();
+}, &quot;Detached Range&quot;);
+
+var iStart = 0;
+var iStop = testRanges.length;
+
+if (/subtest=[0-9]+/.test(location.search)) {
+  var matches = /subtest=([0-9]+)/.exec(location.search);
+  iStart = Number(matches[1]);
+  iStop = Number(matches[1]) + 1;
+}
+
+var domTests = [];
+var positionTests = [];
+
+for (var i = iStart; i &lt; iStop; i++) {
+  domTests[i] = async_test(&quot;Resulting DOM for range &quot; + i + &quot; &quot; + testRanges[i]);
+  positionTests[i] = async_test(&quot;Resulting cursor position for range &quot; + i + &quot; &quot; + testRanges[i]);
+}
+
+var referenceDoc = document.implementation.createHTMLDocument(&quot;&quot;);
+referenceDoc.removeChild(referenceDoc.documentElement);
+
+actualIframe.onload = function() {
+  expectedIframe.onload = function() {
+    for (var i = iStart; i &lt; iStop; i++) {
+      testDeleteContents(i);
+    }
+  }
+  expectedIframe.src = &quot;Range-test-iframe.html&quot;;
+  referenceDoc.appendChild(actualIframe.contentDocument.documentElement.cloneNode(true));
+}
+actualIframe.src = &quot;Range-test-iframe.html&quot;;
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangedetachexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangedetachexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-detach-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-detach-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-detach-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-detach-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Range.detach 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangedetachhtmlfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangedetachhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-detach.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-detach.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-detach.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-detach.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;title&gt;Range.detach&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Ms2ger&quot; href=&quot;mailto:ms2ger@gmail.com&quot;&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  var r = document.createRange();
+  r.detach()
+  r.detach()
+})
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeextractContentsexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangeextractContentsexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-extractContents-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-extractContents-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-extractContents-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-extractContents-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,185 @@
</span><ins>+To debug test failures, add a query parameter &quot;subtest&quot; with the test id (like &quot;?subtest=5&quot;). Only that test will be run. Then you can look at the resulting iframe in the DOM.
+
+
+PASS Detached Range 
+PASS Resulting DOM for range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Resulting cursor position for range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Returned fragment for range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Resulting DOM for range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Resulting cursor position for range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Returned fragment for range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Resulting DOM for range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Resulting cursor position for range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Returned fragment for range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Resulting DOM for range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Resulting cursor position for range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Returned fragment for range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Resulting DOM for range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Resulting cursor position for range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Returned fragment for range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Resulting DOM for range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Resulting cursor position for range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Returned fragment for range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Resulting DOM for range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Resulting cursor position for range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Returned fragment for range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Resulting DOM for range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Resulting cursor position for range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Returned fragment for range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Resulting DOM for range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Resulting cursor position for range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Returned fragment for range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Resulting DOM for range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Resulting cursor position for range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Returned fragment for range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Resulting DOM for range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Resulting cursor position for range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Returned fragment for range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Resulting DOM for range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Resulting cursor position for range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Returned fragment for range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Resulting DOM for range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Resulting cursor position for range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Returned fragment for range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Resulting DOM for range 13 [document.head, 1, document.head, 1] 
+PASS Resulting cursor position for range 13 [document.head, 1, document.head, 1] 
+PASS Returned fragment for range 13 [document.head, 1, document.head, 1] 
+PASS Resulting DOM for range 14 [document.body, 4, document.body, 5] 
+PASS Resulting cursor position for range 14 [document.body, 4, document.body, 5] 
+PASS Returned fragment for range 14 [document.body, 4, document.body, 5] 
+PASS Resulting DOM for range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Resulting cursor position for range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Returned fragment for range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Resulting DOM for range 16 [paras[0], 0, paras[0], 1] 
+PASS Resulting cursor position for range 16 [paras[0], 0, paras[0], 1] 
+PASS Returned fragment for range 16 [paras[0], 0, paras[0], 1] 
+PASS Resulting DOM for range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Resulting cursor position for range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Returned fragment for range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Resulting DOM for range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Resulting cursor position for range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Returned fragment for range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Resulting DOM for range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Resulting cursor position for range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Returned fragment for range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Resulting DOM for range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Resulting cursor position for range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Returned fragment for range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Resulting DOM for range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Resulting cursor position for range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Returned fragment for range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Resulting DOM for range 22 [testDiv, 2, paras[4], 1] 
+PASS Resulting cursor position for range 22 [testDiv, 2, paras[4], 1] 
+PASS Returned fragment for range 22 [testDiv, 2, paras[4], 1] 
+PASS Resulting DOM for range 23 [document, 0, document, 1] 
+PASS Resulting cursor position for range 23 [document, 0, document, 1] 
+PASS Returned fragment for range 23 [document, 0, document, 1] 
+PASS Resulting DOM for range 24 [document, 0, document, 2] 
+PASS Resulting cursor position for range 24 [document, 0, document, 2] 
+PASS Returned fragment for range 24 [document, 0, document, 2] 
+PASS Resulting DOM for range 25 [comment, 2, comment, 3] 
+PASS Resulting cursor position for range 25 [comment, 2, comment, 3] 
+PASS Returned fragment for range 25 [comment, 2, comment, 3] 
+PASS Resulting DOM for range 26 [testDiv, 0, comment, 5] 
+PASS Resulting cursor position for range 26 [testDiv, 0, comment, 5] 
+PASS Returned fragment for range 26 [testDiv, 0, comment, 5] 
+PASS Resulting DOM for range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Resulting cursor position for range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Returned fragment for range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Resulting DOM for range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Resulting cursor position for range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Returned fragment for range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Resulting DOM for range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Resulting cursor position for range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Returned fragment for range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Resulting DOM for range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Resulting cursor position for range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Returned fragment for range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Resulting DOM for range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Resulting cursor position for range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Returned fragment for range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Resulting DOM for range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Resulting cursor position for range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Returned fragment for range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Resulting DOM for range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Resulting cursor position for range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Returned fragment for range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Resulting DOM for range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Resulting cursor position for range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Returned fragment for range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Resulting DOM for range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Resulting cursor position for range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Returned fragment for range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Resulting DOM for range 36 [docfrag, 0, docfrag, 0] 
+PASS Resulting cursor position for range 36 [docfrag, 0, docfrag, 0] 
+PASS Returned fragment for range 36 [docfrag, 0, docfrag, 0] 
+FAIL Resulting DOM for range 37 [processingInstruction, 0, processingInstruction, 4] assert_true: First differing node: expected ProcessingInstruction node with target &quot;somePI&quot; and data &quot;Did you know that \&quot;:syn sync fromstart\&quot; is very useful wh...&quot;, got ProcessingInstruction node with target &quot;somePI&quot; and data &quot;you know that \&quot;:syn sync fromstart\&quot; is very useful when u...&quot; [Actual and expected mismatch for tree root.  ] expected true got false
+FAIL Resulting cursor position for range 37 [processingInstruction, 0, processingInstruction, 4] assert_true: The resulting DOMs were not equal, so comparing positions makes no sense expected true got false
+FAIL Returned fragment for range 37 [processingInstruction, 0, processingInstruction, 4] assert_unreached: DOMs were not equal but we couldn't figure out why Reached unreachable code
+PASS Resulting DOM for range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Resulting cursor position for range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Returned fragment for range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Resulting DOM for range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Resulting cursor position for range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Returned fragment for range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Resulting DOM for range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Resulting cursor position for range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Returned fragment for range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Resulting DOM for range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Resulting cursor position for range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Returned fragment for range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Resulting DOM for range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Resulting cursor position for range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Returned fragment for range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Resulting DOM for range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Resulting cursor position for range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Returned fragment for range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Resulting DOM for range 44 [paras[0], 0, paras[0], 0] 
+PASS Resulting cursor position for range 44 [paras[0], 0, paras[0], 0] 
+PASS Returned fragment for range 44 [paras[0], 0, paras[0], 0] 
+PASS Resulting DOM for range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Resulting cursor position for range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Returned fragment for range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Resulting DOM for range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Resulting cursor position for range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Returned fragment for range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Resulting DOM for range 47 [document.documentElement, 1, document.body, 0] 
+PASS Resulting cursor position for range 47 [document.documentElement, 1, document.body, 0] 
+PASS Returned fragment for range 47 [document.documentElement, 1, document.body, 0] 
+PASS Resulting DOM for range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Resulting cursor position for range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Returned fragment for range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Resulting DOM for range 49 [document, 1, document, 2] 
+PASS Resulting cursor position for range 49 [document, 1, document, 2] 
+PASS Returned fragment for range 49 [document, 1, document, 2] 
+PASS Resulting DOM for range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Resulting cursor position for range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Returned fragment for range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Resulting DOM for range 51 [paras[3], 1, comment, 8] 
+PASS Resulting cursor position for range 51 [paras[3], 1, comment, 8] 
+PASS Returned fragment for range 51 [paras[3], 1, comment, 8] 
+PASS Resulting DOM for range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Resulting cursor position for range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Returned fragment for range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Resulting DOM for range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Resulting cursor position for range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Returned fragment for range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Resulting DOM for range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Resulting cursor position for range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Returned fragment for range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Resulting DOM for range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Resulting cursor position for range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Returned fragment for range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Resulting DOM for range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Resulting cursor position for range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Returned fragment for range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Resulting DOM for range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Resulting cursor position for range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Returned fragment for range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Resulting DOM for range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Resulting cursor position for range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Returned fragment for range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Resulting DOM for range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Resulting cursor position for range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Returned fragment for range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeextractContentshtmlfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangeextractContentshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-extractContents.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-extractContents.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-extractContents.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-extractContents.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,248 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Range.extractContents() tests&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Aryeh Gregor&quot; href=ayg@aryeh.name&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;p&gt;To debug test failures, add a query parameter &quot;subtest&quot; with the test id (like
+&quot;?subtest=5&quot;).  Only that test will be run.  Then you can look at the resulting
+iframe in the DOM.
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;script src=../common.js&gt;&lt;/script&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+
+testDiv.parentNode.removeChild(testDiv);
+
+var actualIframe = document.createElement(&quot;iframe&quot;);
+actualIframe.style.display = &quot;none&quot;;
+document.body.appendChild(actualIframe);
+
+var expectedIframe = document.createElement(&quot;iframe&quot;);
+expectedIframe.style.display = &quot;none&quot;;
+document.body.appendChild(expectedIframe);
+
+function restoreIframe(iframe, i) {
+  // Most of this function is designed to work around the fact that Opera
+  // doesn't let you add a doctype to a document that no longer has one, in
+  // any way I can figure out.  I eventually compromised on something that
+  // will still let Opera pass most tests that don't actually involve
+  // doctypes.
+  while (iframe.contentDocument.firstChild
+  &amp;&amp; iframe.contentDocument.firstChild.nodeType != Node.DOCUMENT_TYPE_NODE) {
+    iframe.contentDocument.removeChild(iframe.contentDocument.firstChild);
+  }
+
+  while (iframe.contentDocument.lastChild
+  &amp;&amp; iframe.contentDocument.lastChild.nodeType != Node.DOCUMENT_TYPE_NODE) {
+    iframe.contentDocument.removeChild(iframe.contentDocument.lastChild);
+  }
+
+  if (!iframe.contentDocument.firstChild) {
+    // This will throw an exception in Opera if we reach here, which is why
+    // I try to avoid it.  It will never happen in a browser that obeys the
+    // spec, so it's really just insurance.  I don't think it actually gets
+    // hit by anything.
+    iframe.contentDocument.appendChild(iframe.contentDocument.implementation.createDocumentType(&quot;html&quot;, &quot;&quot;, &quot;&quot;));
+  }
+  iframe.contentDocument.appendChild(referenceDoc.documentElement.cloneNode(true));
+  iframe.contentWindow.setupRangeTests();
+  iframe.contentWindow.testRangeInput = testRanges[i];
+  iframe.contentWindow.run();
+}
+
+function testExtractContents(i) {
+  restoreIframe(actualIframe, i);
+  restoreIframe(expectedIframe, i);
+
+  var actualRange = actualIframe.contentWindow.testRange;
+  var expectedRange = expectedIframe.contentWindow.testRange;
+  var actualFrag, expectedFrag;
+  var actualRoots, expectedRoots;
+
+  domTests[i].step(function() {
+    assert_equals(actualIframe.contentWindow.unexpectedException, null,
+      &quot;Unexpected exception thrown when setting up Range for actual extractContents()&quot;);
+    assert_equals(expectedIframe.contentWindow.unexpectedException, null,
+      &quot;Unexpected exception thrown when setting up Range for simulated extractContents()&quot;);
+    assert_equals(typeof actualRange, &quot;object&quot;,
+      &quot;typeof Range produced in actual iframe&quot;);
+    assert_equals(typeof expectedRange, &quot;object&quot;,
+      &quot;typeof Range produced in expected iframe&quot;);
+
+    // Just to be pedantic, we'll test not only that the tree we're
+    // modifying is the same in expected vs. actual, but also that all the
+    // nodes originally in it were the same.  Typically some nodes will
+    // become detached when the algorithm is run, but they still exist and
+    // references can still be kept to them, so they should also remain the
+    // same.
+    //
+    // We initialize the list to all nodes, and later on remove all the
+    // ones which still have parents, since the parents will presumably be
+    // tested for isEqualNode() and checking the children would be
+    // redundant.
+    var actualAllNodes = [];
+    var node = furthestAncestor(actualRange.startContainer);
+    do {
+      actualAllNodes.push(node);
+    } while (node = nextNode(node));
+
+    var expectedAllNodes = [];
+    var node = furthestAncestor(expectedRange.startContainer);
+    do {
+      expectedAllNodes.push(node);
+    } while (node = nextNode(node));
+
+    expectedFrag = myExtractContents(expectedRange);
+    if (typeof expectedFrag == &quot;string&quot;) {
+      assert_throws(expectedFrag, function() {
+        actualRange.extractContents();
+      });
+    } else {
+      actualFrag = actualRange.extractContents();
+    }
+
+    actualRoots = [];
+    for (var j = 0; j &lt; actualAllNodes.length; j++) {
+      if (!actualAllNodes[j].parentNode) {
+        actualRoots.push(actualAllNodes[j]);
+      }
+    }
+
+    expectedRoots = [];
+    for (var j = 0; j &lt; expectedAllNodes.length; j++) {
+      if (!expectedAllNodes[j].parentNode) {
+        expectedRoots.push(expectedAllNodes[j]);
+      }
+    }
+
+    for (var j = 0; j &lt; actualRoots.length; j++) {
+      assertNodesEqual(actualRoots[j], expectedRoots[j], j ? &quot;detached node #&quot; + j : &quot;tree root&quot;);
+
+      if (j == 0) {
+        // Clearly something is wrong if the node lists are different
+        // lengths.  We want to report this only after we've already
+        // checked the main tree for equality, though, so it doesn't
+        // mask more interesting errors.
+        assert_equals(actualRoots.length, expectedRoots.length,
+          &quot;Actual and expected DOMs were broken up into a different number of pieces by extractContents() (this probably means you created or detached nodes when you weren't supposed to)&quot;);
+      }
+    }
+  });
+  domTests[i].done();
+
+  positionTests[i].step(function() {
+    assert_equals(actualIframe.contentWindow.unexpectedException, null,
+      &quot;Unexpected exception thrown when setting up Range for actual extractContents()&quot;);
+    assert_equals(expectedIframe.contentWindow.unexpectedException, null,
+      &quot;Unexpected exception thrown when setting up Range for simulated extractContents()&quot;);
+    assert_equals(typeof actualRange, &quot;object&quot;,
+      &quot;typeof Range produced in actual iframe&quot;);
+    assert_equals(typeof expectedRange, &quot;object&quot;,
+      &quot;typeof Range produced in expected iframe&quot;);
+
+    assert_true(actualRoots[0].isEqualNode(expectedRoots[0]),
+      &quot;The resulting DOMs were not equal, so comparing positions makes no sense&quot;);
+
+    if (typeof expectedFrag == &quot;string&quot;) {
+      // It's no longer true that, e.g., startContainer and endContainer
+      // must always be the same
+      return;
+    }
+    assert_equals(actualRange.startContainer, actualRange.endContainer,
+      &quot;startContainer and endContainer must always be the same after extractContents()&quot;);
+    assert_equals(actualRange.startOffset, actualRange.endOffset,
+      &quot;startOffset and endOffset must always be the same after extractContents()&quot;);
+    assert_equals(expectedRange.startContainer, expectedRange.endContainer,
+      &quot;Test bug!  Expected startContainer and endContainer must always be the same after extractContents()&quot;);
+    assert_equals(expectedRange.startOffset, expectedRange.endOffset,
+      &quot;Test bug!  Expected startOffset and endOffset must always be the same after extractContents()&quot;);
+
+    assert_equals(actualRange.startOffset, expectedRange.startOffset,
+      &quot;Unexpected startOffset after extractContents()&quot;);
+    // How do we decide that the two nodes are equal, since they're in
+    // different trees?  Since the DOMs are the same, it's enough to check
+    // that the index in the parent is the same all the way up the tree.
+    // But we can first cheat by just checking they're actually equal.
+    assert_true(actualRange.startContainer.isEqualNode(expectedRange.startContainer),
+      &quot;Unexpected startContainer after extractContents(), expected &quot; +
+      expectedRange.startContainer.nodeName.toLowerCase() + &quot; but got &quot; +
+      actualRange.startContainer.nodeName.toLowerCase());
+    var currentActual = actualRange.startContainer;
+    var currentExpected = expectedRange.startContainer;
+    var actual = &quot;&quot;;
+    var expected = &quot;&quot;;
+    while (currentActual &amp;&amp; currentExpected) {
+      actual = indexOf(currentActual) + &quot;-&quot; + actual;
+      expected = indexOf(currentExpected) + &quot;-&quot; + expected;
+
+      currentActual = currentActual.parentNode;
+      currentExpected = currentExpected.parentNode;
+    }
+    actual = actual.substr(0, actual.length - 1);
+    expected = expected.substr(0, expected.length - 1);
+    assert_equals(actual, expected,
+      &quot;startContainer superficially looks right but is actually the wrong node if you trace back its index in all its ancestors (I'm surprised this actually happened&quot;);
+  });
+  positionTests[i].done();
+
+  fragTests[i].step(function() {
+    assert_equals(actualIframe.contentWindow.unexpectedException, null,
+      &quot;Unexpected exception thrown when setting up Range for actual extractContents()&quot;);
+    assert_equals(expectedIframe.contentWindow.unexpectedException, null,
+      &quot;Unexpected exception thrown when setting up Range for simulated extractContents()&quot;);
+    assert_equals(typeof actualRange, &quot;object&quot;,
+      &quot;typeof Range produced in actual iframe&quot;);
+    assert_equals(typeof expectedRange, &quot;object&quot;,
+      &quot;typeof Range produced in expected iframe&quot;);
+
+    if (typeof expectedFrag == &quot;string&quot;) {
+      // Comparing makes no sense
+      return;
+    }
+    assertNodesEqual(actualFrag, expectedFrag,
+      &quot;returned fragment&quot;);
+  });
+  fragTests[i].done();
+}
+
+// First test a detached Range, synchronously
+test(function() {
+  var range = document.createRange();
+  range.detach();
+  assert_array_equals(range.extractContents().childNodes, []);
+}, &quot;Detached Range&quot;);
+
+var iStart = 0;
+var iStop = testRanges.length;
+
+if (/subtest=[0-9]+/.test(location.search)) {
+  var matches = /subtest=([0-9]+)/.exec(location.search);
+  iStart = Number(matches[1]);
+  iStop = Number(matches[1]) + 1;
+}
+
+var domTests = [];
+var positionTests = [];
+var fragTests = [];
+
+for (var i = iStart; i &lt; iStop; i++) {
+  domTests[i] = async_test(&quot;Resulting DOM for range &quot; + i + &quot; &quot; + testRanges[i]);
+  positionTests[i] = async_test(&quot;Resulting cursor position for range &quot; + i + &quot; &quot; + testRanges[i]);
+  fragTests[i] = async_test(&quot;Returned fragment for range &quot; + i + &quot; &quot; + testRanges[i]);
+}
+
+var referenceDoc = document.implementation.createHTMLDocument(&quot;&quot;);
+referenceDoc.removeChild(referenceDoc.documentElement);
+
+actualIframe.onload = function() {
+  expectedIframe.onload = function() {
+    for (var i = iStart; i &lt; iStop; i++) {
+      testExtractContents(i);
+    }
+  }
+  expectedIframe.src = &quot;Range-test-iframe.html&quot;;
+  referenceDoc.appendChild(actualIframe.contentDocument.documentElement.cloneNode(true));
+}
+actualIframe.src = &quot;Range-test-iframe.html&quot;;
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeinsertNodeexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangeinsertNodeexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-insertNode-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-insertNode-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-insertNode-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-insertNode-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,1685 @@
</span><ins>+To debug test failures, add a query parameter &quot;subtest&quot; with the test id (like &quot;?subtest=5,16&quot;). Only that test will be run. Then you can look at the resulting iframes in the DOM.
+
+
+PASS 0,0: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node paras[0] 
+PASS 0,0: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node paras[0] 
+FAIL 0,1: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node paras[0].firstChild HierarchyRequestError: DOM Exception 3
+FAIL 0,1: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node paras[0].firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 0,2: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node paras[1].firstChild 
+FAIL 0,2: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node paras[1].firstChild assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 0,3: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node foreignPara1 
+FAIL 0,3: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node foreignPara1 assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 0,4: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node foreignPara1.firstChild 
+FAIL 0,4: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node foreignPara1.firstChild assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 0,5: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node detachedPara1 
+FAIL 0,5: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node detachedPara1 assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 0,6: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node detachedPara1.firstChild 
+FAIL 0,6: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node detachedPara1.firstChild assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 0,7: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node document 
+PASS 0,7: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node document 
+PASS 0,8: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node detachedDiv 
+FAIL 0,8: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node detachedDiv assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 0,9: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node foreignDoc 
+PASS 0,9: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node foreignDoc 
+PASS 0,10: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node foreignPara2 
+FAIL 0,10: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node foreignPara2 assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 0,11: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node xmlDoc 
+PASS 0,11: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node xmlDoc 
+PASS 0,12: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node xmlElement 
+FAIL 0,12: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node xmlElement assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 0,13: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node detachedTextNode 
+FAIL 0,13: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node detachedTextNode assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 0,14: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node foreignTextNode 
+FAIL 0,14: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node foreignTextNode assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 0,15: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node processingInstruction 
+FAIL 0,15: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node processingInstruction assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 0,16: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node detachedProcessingInstruction 
+FAIL 0,16: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node detachedProcessingInstruction assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 0,17: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node comment 
+FAIL 0,17: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node comment assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 0,18: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node detachedComment 
+FAIL 0,18: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node detachedComment assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 0,19: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node docfrag 
+FAIL 0,19: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node docfrag assert_equals: Unexpected endOffset after insertNode() expected 1 but got 0
+PASS 0,20: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node doctype 
+PASS 0,20: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node doctype 
+PASS 0,21: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node foreignDoctype 
+PASS 0,21: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node foreignDoctype 
+PASS 1,0: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node paras[0] 
+PASS 1,0: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node paras[0] 
+FAIL 1,1: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node paras[0].firstChild HierarchyRequestError: DOM Exception 3
+FAIL 1,1: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node paras[0].firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 1,2: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node paras[1].firstChild 
+PASS 1,2: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node paras[1].firstChild 
+PASS 1,3: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node foreignPara1 
+PASS 1,3: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node foreignPara1 
+PASS 1,4: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node foreignPara1.firstChild 
+PASS 1,4: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node foreignPara1.firstChild 
+PASS 1,5: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node detachedPara1 
+PASS 1,5: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node detachedPara1 
+PASS 1,6: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node detachedPara1.firstChild 
+PASS 1,6: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node detachedPara1.firstChild 
+PASS 1,7: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node document 
+PASS 1,7: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node document 
+PASS 1,8: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node detachedDiv 
+PASS 1,8: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node detachedDiv 
+PASS 1,9: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node foreignDoc 
+PASS 1,9: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node foreignDoc 
+PASS 1,10: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node foreignPara2 
+PASS 1,10: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node foreignPara2 
+PASS 1,11: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node xmlDoc 
+PASS 1,11: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node xmlDoc 
+PASS 1,12: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node xmlElement 
+PASS 1,12: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node xmlElement 
+PASS 1,13: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node detachedTextNode 
+PASS 1,13: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node detachedTextNode 
+PASS 1,14: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node foreignTextNode 
+PASS 1,14: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node foreignTextNode 
+PASS 1,15: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node processingInstruction 
+PASS 1,15: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node processingInstruction 
+PASS 1,16: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node detachedProcessingInstruction 
+PASS 1,16: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node detachedProcessingInstruction 
+PASS 1,17: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node comment 
+PASS 1,17: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node comment 
+PASS 1,18: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node detachedComment 
+PASS 1,18: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node detachedComment 
+PASS 1,19: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node docfrag 
+PASS 1,19: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node docfrag 
+PASS 1,20: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node doctype 
+PASS 1,20: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node doctype 
+PASS 1,21: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node foreignDoctype 
+PASS 1,21: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node foreignDoctype 
+PASS 2,0: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node paras[0] 
+PASS 2,0: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node paras[0] 
+FAIL 2,1: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node paras[0].firstChild HierarchyRequestError: DOM Exception 3
+FAIL 2,1: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node paras[0].firstChild assert_true: First differing node: expected Text node &quot;Ä&quot;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 2,2: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node paras[1].firstChild 
+PASS 2,2: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node paras[1].firstChild 
+PASS 2,3: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node foreignPara1 
+PASS 2,3: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node foreignPara1 
+PASS 2,4: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node foreignPara1.firstChild 
+PASS 2,4: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node foreignPara1.firstChild 
+PASS 2,5: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node detachedPara1 
+PASS 2,5: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node detachedPara1 
+PASS 2,6: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node detachedPara1.firstChild 
+PASS 2,6: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node detachedPara1.firstChild 
+PASS 2,7: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node document 
+PASS 2,7: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node document 
+PASS 2,8: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node detachedDiv 
+PASS 2,8: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node detachedDiv 
+PASS 2,9: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node foreignDoc 
+PASS 2,9: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node foreignDoc 
+PASS 2,10: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node foreignPara2 
+PASS 2,10: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node foreignPara2 
+PASS 2,11: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node xmlDoc 
+PASS 2,11: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node xmlDoc 
+PASS 2,12: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node xmlElement 
+PASS 2,12: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node xmlElement 
+PASS 2,13: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node detachedTextNode 
+PASS 2,13: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node detachedTextNode 
+PASS 2,14: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node foreignTextNode 
+PASS 2,14: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node foreignTextNode 
+PASS 2,15: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node processingInstruction 
+PASS 2,15: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node processingInstruction 
+PASS 2,16: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node detachedProcessingInstruction 
+PASS 2,16: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node detachedProcessingInstruction 
+PASS 2,17: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node comment 
+PASS 2,17: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node comment 
+PASS 2,18: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node detachedComment 
+PASS 2,18: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node detachedComment 
+PASS 2,19: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node docfrag 
+PASS 2,19: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node docfrag 
+PASS 2,20: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node doctype 
+PASS 2,20: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node doctype 
+PASS 2,21: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node foreignDoctype 
+PASS 2,21: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node foreignDoctype 
+PASS 3,0: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node paras[0] 
+PASS 3,0: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node paras[0] 
+FAIL 3,1: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node paras[0].firstChild HierarchyRequestError: DOM Exception 3
+FAIL 3,1: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node paras[0].firstChild assert_true: First differing node: expected Text node &quot;Ä&quot;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 3,2: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node paras[1].firstChild 
+PASS 3,2: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node paras[1].firstChild 
+PASS 3,3: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node foreignPara1 
+PASS 3,3: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node foreignPara1 
+PASS 3,4: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node foreignPara1.firstChild 
+PASS 3,4: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node foreignPara1.firstChild 
+PASS 3,5: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node detachedPara1 
+PASS 3,5: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node detachedPara1 
+PASS 3,6: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node detachedPara1.firstChild 
+PASS 3,6: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node detachedPara1.firstChild 
+PASS 3,7: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node document 
+PASS 3,7: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node document 
+PASS 3,8: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node detachedDiv 
+PASS 3,8: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node detachedDiv 
+PASS 3,9: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node foreignDoc 
+PASS 3,9: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node foreignDoc 
+PASS 3,10: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node foreignPara2 
+PASS 3,10: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node foreignPara2 
+PASS 3,11: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node xmlDoc 
+PASS 3,11: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node xmlDoc 
+PASS 3,12: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node xmlElement 
+PASS 3,12: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node xmlElement 
+PASS 3,13: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node detachedTextNode 
+PASS 3,13: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node detachedTextNode 
+PASS 3,14: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node foreignTextNode 
+PASS 3,14: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node foreignTextNode 
+PASS 3,15: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node processingInstruction 
+PASS 3,15: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node processingInstruction 
+PASS 3,16: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node detachedProcessingInstruction 
+PASS 3,16: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node detachedProcessingInstruction 
+PASS 3,17: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node comment 
+PASS 3,17: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node comment 
+PASS 3,18: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node detachedComment 
+PASS 3,18: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node detachedComment 
+PASS 3,19: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node docfrag 
+PASS 3,19: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node docfrag 
+PASS 3,20: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node doctype 
+PASS 3,20: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node doctype 
+PASS 3,21: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node foreignDoctype 
+PASS 3,21: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node foreignDoctype 
+PASS 4,0: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node paras[0] 
+FAIL 4,0: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node paras[0] assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 4,1: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node paras[0].firstChild 
+FAIL 4,1: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node paras[0].firstChild assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+FAIL 4,2: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node paras[1].firstChild HierarchyRequestError: DOM Exception 3
+FAIL 4,2: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node paras[1].firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Ijklmnop
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 4,3: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignPara1 
+FAIL 4,3: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignPara1 assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 4,4: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignPara1.firstChild 
+FAIL 4,4: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignPara1.firstChild assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 4,5: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node detachedPara1 
+FAIL 4,5: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node detachedPara1 assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 4,6: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node detachedPara1.firstChild 
+FAIL 4,6: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node detachedPara1.firstChild assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 4,7: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node document 
+PASS 4,7: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node document 
+PASS 4,8: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node detachedDiv 
+FAIL 4,8: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node detachedDiv assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 4,9: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignDoc 
+PASS 4,9: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignDoc 
+PASS 4,10: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignPara2 
+FAIL 4,10: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignPara2 assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 4,11: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node xmlDoc 
+PASS 4,11: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node xmlDoc 
+PASS 4,12: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node xmlElement 
+FAIL 4,12: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node xmlElement assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 4,13: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node detachedTextNode 
+FAIL 4,13: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node detachedTextNode assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 4,14: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignTextNode 
+FAIL 4,14: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignTextNode assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 4,15: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node processingInstruction 
+FAIL 4,15: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node processingInstruction assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 4,16: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node detachedProcessingInstruction 
+FAIL 4,16: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node detachedProcessingInstruction assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 4,17: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node comment 
+FAIL 4,17: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node comment assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 4,18: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node detachedComment 
+FAIL 4,18: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node detachedComment assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 4,19: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node docfrag 
+FAIL 4,19: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node docfrag assert_equals: Unexpected endOffset after insertNode() expected 1 but got 0
+PASS 4,20: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node doctype 
+PASS 4,20: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node doctype 
+PASS 4,21: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignDoctype 
+PASS 4,21: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignDoctype 
+PASS 5,0: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node paras[0] 
+PASS 5,0: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node paras[0] 
+PASS 5,1: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node paras[0].firstChild 
+PASS 5,1: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node paras[0].firstChild 
+FAIL 5,2: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node paras[1].firstChild HierarchyRequestError: DOM Exception 3
+FAIL 5,2: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node paras[1].firstChild assert_true: First differing node: expected Text node &quot;Ij&quot;, got Text node &quot;Ijklmnop
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 5,3: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node foreignPara1 
+PASS 5,3: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node foreignPara1 
+PASS 5,4: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node foreignPara1.firstChild 
+PASS 5,4: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node foreignPara1.firstChild 
+PASS 5,5: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node detachedPara1 
+PASS 5,5: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node detachedPara1 
+PASS 5,6: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node detachedPara1.firstChild 
+PASS 5,6: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node detachedPara1.firstChild 
+PASS 5,7: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node document 
+PASS 5,7: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node document 
+PASS 5,8: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node detachedDiv 
+PASS 5,8: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node detachedDiv 
+PASS 5,9: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node foreignDoc 
+PASS 5,9: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node foreignDoc 
+PASS 5,10: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node foreignPara2 
+PASS 5,10: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node foreignPara2 
+PASS 5,11: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node xmlDoc 
+PASS 5,11: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node xmlDoc 
+PASS 5,12: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node xmlElement 
+PASS 5,12: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node xmlElement 
+PASS 5,13: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node detachedTextNode 
+PASS 5,13: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node detachedTextNode 
+PASS 5,14: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node foreignTextNode 
+PASS 5,14: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node foreignTextNode 
+PASS 5,15: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node processingInstruction 
+PASS 5,15: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node processingInstruction 
+PASS 5,16: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node detachedProcessingInstruction 
+PASS 5,16: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node detachedProcessingInstruction 
+PASS 5,17: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node comment 
+PASS 5,17: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node comment 
+PASS 5,18: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node detachedComment 
+PASS 5,18: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node detachedComment 
+PASS 5,19: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node docfrag 
+PASS 5,19: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node docfrag 
+PASS 5,20: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node doctype 
+PASS 5,20: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node doctype 
+PASS 5,21: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node foreignDoctype 
+PASS 5,21: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node foreignDoctype 
+PASS 6,0: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node paras[0] 
+FAIL 6,0: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node paras[0] assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 6,1: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node paras[0].firstChild 
+FAIL 6,1: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node paras[0].firstChild assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 6,2: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node paras[1].firstChild 
+FAIL 6,2: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node paras[1].firstChild assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 6,3: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node foreignPara1 
+FAIL 6,3: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node foreignPara1 assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 6,4: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node foreignPara1.firstChild 
+FAIL 6,4: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node foreignPara1.firstChild assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 6,5: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedPara1 
+PASS 6,5: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedPara1 
+FAIL 6,6: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedPara1.firstChild HierarchyRequestError: DOM Exception 3
+FAIL 6,6: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedPara1.firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Opqrstuv&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 6,7: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node document 
+PASS 6,7: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node document 
+PASS 6,8: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedDiv 
+PASS 6,8: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedDiv 
+PASS 6,9: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node foreignDoc 
+PASS 6,9: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node foreignDoc 
+PASS 6,10: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node foreignPara2 
+FAIL 6,10: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node foreignPara2 assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 6,11: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node xmlDoc 
+PASS 6,11: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node xmlDoc 
+PASS 6,12: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node xmlElement 
+FAIL 6,12: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node xmlElement assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 6,13: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedTextNode 
+FAIL 6,13: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedTextNode assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 6,14: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node foreignTextNode 
+FAIL 6,14: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node foreignTextNode assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 6,15: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node processingInstruction 
+FAIL 6,15: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node processingInstruction assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 6,16: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedProcessingInstruction 
+FAIL 6,16: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedProcessingInstruction assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 6,17: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node comment 
+FAIL 6,17: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node comment assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 6,18: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedComment 
+FAIL 6,18: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedComment assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 6,19: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node docfrag 
+FAIL 6,19: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node docfrag assert_equals: Unexpected endOffset after insertNode() expected 1 but got 0
+PASS 6,20: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node doctype 
+PASS 6,20: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node doctype 
+PASS 6,21: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node foreignDoctype 
+PASS 6,21: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node foreignDoctype 
+PASS 7,0: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node paras[0] 
+PASS 7,0: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node paras[0] 
+PASS 7,1: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node paras[0].firstChild 
+PASS 7,1: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node paras[0].firstChild 
+PASS 7,2: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node paras[1].firstChild 
+PASS 7,2: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node paras[1].firstChild 
+PASS 7,3: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node foreignPara1 
+PASS 7,3: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node foreignPara1 
+PASS 7,4: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node foreignPara1.firstChild 
+PASS 7,4: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node foreignPara1.firstChild 
+PASS 7,5: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedPara1 
+PASS 7,5: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedPara1 
+FAIL 7,6: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedPara1.firstChild HierarchyRequestError: DOM Exception 3
+FAIL 7,6: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedPara1.firstChild assert_true: First differing node: expected Text node &quot;Op&quot;, got Text node &quot;Opqrstuv&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 7,7: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node document 
+PASS 7,7: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node document 
+PASS 7,8: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedDiv 
+PASS 7,8: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedDiv 
+PASS 7,9: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node foreignDoc 
+PASS 7,9: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node foreignDoc 
+PASS 7,10: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node foreignPara2 
+PASS 7,10: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node foreignPara2 
+PASS 7,11: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node xmlDoc 
+PASS 7,11: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node xmlDoc 
+PASS 7,12: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node xmlElement 
+PASS 7,12: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node xmlElement 
+PASS 7,13: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedTextNode 
+PASS 7,13: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedTextNode 
+PASS 7,14: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node foreignTextNode 
+PASS 7,14: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node foreignTextNode 
+PASS 7,15: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node processingInstruction 
+PASS 7,15: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node processingInstruction 
+PASS 7,16: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedProcessingInstruction 
+PASS 7,16: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedProcessingInstruction 
+PASS 7,17: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node comment 
+PASS 7,17: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node comment 
+PASS 7,18: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedComment 
+PASS 7,18: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedComment 
+PASS 7,19: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node docfrag 
+PASS 7,19: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node docfrag 
+PASS 7,20: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node doctype 
+PASS 7,20: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node doctype 
+PASS 7,21: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node foreignDoctype 
+PASS 7,21: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node foreignDoctype 
+PASS 8,0: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node paras[0] 
+FAIL 8,0: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node paras[0] assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 8,1: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node paras[0].firstChild 
+FAIL 8,1: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node paras[0].firstChild assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 8,2: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node paras[1].firstChild 
+FAIL 8,2: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node paras[1].firstChild assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 8,3: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignPara1 
+PASS 8,3: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignPara1 
+FAIL 8,4: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignPara1.firstChild HierarchyRequestError: DOM Exception 3
+FAIL 8,4: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignPara1.firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Efghijkl&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 8,5: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedPara1 
+FAIL 8,5: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedPara1 assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 8,6: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedPara1.firstChild 
+FAIL 8,6: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedPara1.firstChild assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 8,7: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node document 
+PASS 8,7: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node document 
+PASS 8,8: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedDiv 
+FAIL 8,8: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedDiv assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 8,9: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignDoc 
+PASS 8,9: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignDoc 
+PASS 8,10: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignPara2 
+FAIL 8,10: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignPara2 assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 8,11: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node xmlDoc 
+PASS 8,11: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node xmlDoc 
+PASS 8,12: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node xmlElement 
+FAIL 8,12: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node xmlElement assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 8,13: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedTextNode 
+FAIL 8,13: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedTextNode assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 8,14: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignTextNode 
+FAIL 8,14: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignTextNode assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 8,15: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node processingInstruction 
+FAIL 8,15: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node processingInstruction assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 8,16: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedProcessingInstruction 
+FAIL 8,16: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedProcessingInstruction assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 8,17: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node comment 
+FAIL 8,17: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node comment assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 8,18: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedComment 
+FAIL 8,18: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedComment assert_equals: Unexpected endOffset after insertNode() expected 2 but got 0
+PASS 8,19: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node docfrag 
+FAIL 8,19: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node docfrag assert_equals: Unexpected endOffset after insertNode() expected 1 but got 0
+PASS 8,20: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node doctype 
+PASS 8,20: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node doctype 
+PASS 8,21: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignDoctype 
+PASS 8,21: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignDoctype 
+PASS 9,0: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node paras[0] 
+PASS 9,0: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node paras[0] 
+PASS 9,1: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node paras[0].firstChild 
+PASS 9,1: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node paras[0].firstChild 
+PASS 9,2: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node paras[1].firstChild 
+PASS 9,2: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node paras[1].firstChild 
+PASS 9,3: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignPara1 
+PASS 9,3: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignPara1 
+FAIL 9,4: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignPara1.firstChild HierarchyRequestError: DOM Exception 3
+FAIL 9,4: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignPara1.firstChild assert_true: First differing node: expected Text node &quot;Ef&quot;, got Text node &quot;Efghijkl&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 9,5: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node detachedPara1 
+PASS 9,5: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node detachedPara1 
+PASS 9,6: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node detachedPara1.firstChild 
+PASS 9,6: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node detachedPara1.firstChild 
+PASS 9,7: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node document 
+PASS 9,7: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node document 
+PASS 9,8: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node detachedDiv 
+PASS 9,8: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node detachedDiv 
+PASS 9,9: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignDoc 
+PASS 9,9: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignDoc 
+PASS 9,10: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignPara2 
+PASS 9,10: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignPara2 
+PASS 9,11: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node xmlDoc 
+PASS 9,11: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node xmlDoc 
+PASS 9,12: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node xmlElement 
+PASS 9,12: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node xmlElement 
+PASS 9,13: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node detachedTextNode 
+PASS 9,13: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node detachedTextNode 
+PASS 9,14: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignTextNode 
+PASS 9,14: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignTextNode 
+PASS 9,15: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node processingInstruction 
+PASS 9,15: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node processingInstruction 
+PASS 9,16: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node detachedProcessingInstruction 
+PASS 9,16: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node detachedProcessingInstruction 
+PASS 9,17: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node comment 
+PASS 9,17: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node comment 
+PASS 9,18: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node detachedComment 
+PASS 9,18: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node detachedComment 
+PASS 9,19: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node docfrag 
+PASS 9,19: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node docfrag 
+PASS 9,20: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node doctype 
+PASS 9,20: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node doctype 
+PASS 9,21: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignDoctype 
+PASS 9,21: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignDoctype 
+PASS 10,0: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node paras[0] 
+PASS 10,0: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node paras[0] 
+PASS 10,1: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node paras[0].firstChild 
+PASS 10,1: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node paras[0].firstChild 
+PASS 10,2: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node paras[1].firstChild 
+PASS 10,2: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node paras[1].firstChild 
+PASS 10,3: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node foreignPara1 
+PASS 10,3: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node foreignPara1 
+PASS 10,4: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node foreignPara1.firstChild 
+PASS 10,4: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node foreignPara1.firstChild 
+PASS 10,5: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node detachedPara1 
+PASS 10,5: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node detachedPara1 
+PASS 10,6: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node detachedPara1.firstChild 
+PASS 10,6: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node detachedPara1.firstChild 
+PASS 10,7: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node document 
+PASS 10,7: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node document 
+PASS 10,8: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node detachedDiv 
+PASS 10,8: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node detachedDiv 
+PASS 10,9: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node foreignDoc 
+PASS 10,9: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node foreignDoc 
+PASS 10,10: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node foreignPara2 
+PASS 10,10: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node foreignPara2 
+PASS 10,11: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node xmlDoc 
+PASS 10,11: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node xmlDoc 
+PASS 10,12: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node xmlElement 
+PASS 10,12: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node xmlElement 
+PASS 10,13: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node detachedTextNode 
+PASS 10,13: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node detachedTextNode 
+PASS 10,14: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node foreignTextNode 
+PASS 10,14: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node foreignTextNode 
+PASS 10,15: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node processingInstruction 
+PASS 10,15: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node processingInstruction 
+PASS 10,16: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node detachedProcessingInstruction 
+PASS 10,16: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node detachedProcessingInstruction 
+PASS 10,17: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node comment 
+PASS 10,17: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node comment 
+PASS 10,18: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node detachedComment 
+PASS 10,18: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node detachedComment 
+PASS 10,19: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node docfrag 
+PASS 10,19: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node docfrag 
+PASS 10,20: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node doctype 
+PASS 10,20: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node doctype 
+PASS 10,21: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node foreignDoctype 
+PASS 10,21: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node foreignDoctype 
+PASS 11,0: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node paras[0] 
+PASS 11,0: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node paras[0] 
+PASS 11,1: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node paras[0].firstChild 
+PASS 11,1: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node paras[0].firstChild 
+PASS 11,2: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node paras[1].firstChild 
+PASS 11,2: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node paras[1].firstChild 
+PASS 11,3: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node foreignPara1 
+PASS 11,3: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node foreignPara1 
+PASS 11,4: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node foreignPara1.firstChild 
+PASS 11,4: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node foreignPara1.firstChild 
+PASS 11,5: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node detachedPara1 
+PASS 11,5: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node detachedPara1 
+PASS 11,6: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node detachedPara1.firstChild 
+PASS 11,6: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node detachedPara1.firstChild 
+PASS 11,7: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node document 
+PASS 11,7: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node document 
+PASS 11,8: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node detachedDiv 
+PASS 11,8: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node detachedDiv 
+PASS 11,9: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node foreignDoc 
+PASS 11,9: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node foreignDoc 
+PASS 11,10: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node foreignPara2 
+PASS 11,10: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node foreignPara2 
+PASS 11,11: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node xmlDoc 
+PASS 11,11: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node xmlDoc 
+PASS 11,12: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node xmlElement 
+PASS 11,12: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node xmlElement 
+PASS 11,13: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node detachedTextNode 
+PASS 11,13: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node detachedTextNode 
+PASS 11,14: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node foreignTextNode 
+PASS 11,14: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node foreignTextNode 
+PASS 11,15: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node processingInstruction 
+PASS 11,15: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node processingInstruction 
+PASS 11,16: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node detachedProcessingInstruction 
+PASS 11,16: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node detachedProcessingInstruction 
+PASS 11,17: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node comment 
+PASS 11,17: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node comment 
+PASS 11,18: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node detachedComment 
+PASS 11,18: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node detachedComment 
+PASS 11,19: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node docfrag 
+PASS 11,19: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node docfrag 
+PASS 11,20: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node doctype 
+PASS 11,20: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node doctype 
+PASS 11,21: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node foreignDoctype 
+PASS 11,21: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node foreignDoctype 
+PASS 12,0: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node paras[0] 
+PASS 12,0: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node paras[0] 
+PASS 12,1: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node paras[0].firstChild 
+PASS 12,1: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node paras[0].firstChild 
+PASS 12,2: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node paras[1].firstChild 
+PASS 12,2: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node paras[1].firstChild 
+PASS 12,3: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node foreignPara1 
+PASS 12,3: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node foreignPara1 
+PASS 12,4: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node foreignPara1.firstChild 
+PASS 12,4: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node foreignPara1.firstChild 
+PASS 12,5: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node detachedPara1 
+PASS 12,5: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node detachedPara1 
+PASS 12,6: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node detachedPara1.firstChild 
+PASS 12,6: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node detachedPara1.firstChild 
+PASS 12,7: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node document 
+PASS 12,7: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node document 
+PASS 12,8: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node detachedDiv 
+PASS 12,8: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node detachedDiv 
+PASS 12,9: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node foreignDoc 
+PASS 12,9: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node foreignDoc 
+PASS 12,10: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node foreignPara2 
+PASS 12,10: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node foreignPara2 
+PASS 12,11: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node xmlDoc 
+PASS 12,11: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node xmlDoc 
+PASS 12,12: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node xmlElement 
+PASS 12,12: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node xmlElement 
+PASS 12,13: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node detachedTextNode 
+PASS 12,13: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node detachedTextNode 
+PASS 12,14: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node foreignTextNode 
+PASS 12,14: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node foreignTextNode 
+PASS 12,15: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node processingInstruction 
+PASS 12,15: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node processingInstruction 
+PASS 12,16: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node detachedProcessingInstruction 
+PASS 12,16: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node detachedProcessingInstruction 
+PASS 12,17: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node comment 
+PASS 12,17: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node comment 
+PASS 12,18: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node detachedComment 
+PASS 12,18: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node detachedComment 
+PASS 12,19: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node docfrag 
+PASS 12,19: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node docfrag 
+PASS 12,20: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node doctype 
+PASS 12,20: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node doctype 
+PASS 12,21: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node foreignDoctype 
+PASS 12,21: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node foreignDoctype 
+PASS 13,0: resulting DOM for range [document.head, 1, document.head, 1], node paras[0] 
+PASS 13,0: resulting range position for range [document.head, 1, document.head, 1], node paras[0] 
+PASS 13,1: resulting DOM for range [document.head, 1, document.head, 1], node paras[0].firstChild 
+PASS 13,1: resulting range position for range [document.head, 1, document.head, 1], node paras[0].firstChild 
+PASS 13,2: resulting DOM for range [document.head, 1, document.head, 1], node paras[1].firstChild 
+PASS 13,2: resulting range position for range [document.head, 1, document.head, 1], node paras[1].firstChild 
+PASS 13,3: resulting DOM for range [document.head, 1, document.head, 1], node foreignPara1 
+PASS 13,3: resulting range position for range [document.head, 1, document.head, 1], node foreignPara1 
+PASS 13,4: resulting DOM for range [document.head, 1, document.head, 1], node foreignPara1.firstChild 
+PASS 13,4: resulting range position for range [document.head, 1, document.head, 1], node foreignPara1.firstChild 
+PASS 13,5: resulting DOM for range [document.head, 1, document.head, 1], node detachedPara1 
+PASS 13,5: resulting range position for range [document.head, 1, document.head, 1], node detachedPara1 
+PASS 13,6: resulting DOM for range [document.head, 1, document.head, 1], node detachedPara1.firstChild 
+PASS 13,6: resulting range position for range [document.head, 1, document.head, 1], node detachedPara1.firstChild 
+PASS 13,7: resulting DOM for range [document.head, 1, document.head, 1], node document 
+PASS 13,7: resulting range position for range [document.head, 1, document.head, 1], node document 
+PASS 13,8: resulting DOM for range [document.head, 1, document.head, 1], node detachedDiv 
+PASS 13,8: resulting range position for range [document.head, 1, document.head, 1], node detachedDiv 
+PASS 13,9: resulting DOM for range [document.head, 1, document.head, 1], node foreignDoc 
+PASS 13,9: resulting range position for range [document.head, 1, document.head, 1], node foreignDoc 
+PASS 13,10: resulting DOM for range [document.head, 1, document.head, 1], node foreignPara2 
+PASS 13,10: resulting range position for range [document.head, 1, document.head, 1], node foreignPara2 
+PASS 13,11: resulting DOM for range [document.head, 1, document.head, 1], node xmlDoc 
+PASS 13,11: resulting range position for range [document.head, 1, document.head, 1], node xmlDoc 
+PASS 13,12: resulting DOM for range [document.head, 1, document.head, 1], node xmlElement 
+PASS 13,12: resulting range position for range [document.head, 1, document.head, 1], node xmlElement 
+PASS 13,13: resulting DOM for range [document.head, 1, document.head, 1], node detachedTextNode 
+PASS 13,13: resulting range position for range [document.head, 1, document.head, 1], node detachedTextNode 
+PASS 13,14: resulting DOM for range [document.head, 1, document.head, 1], node foreignTextNode 
+PASS 13,14: resulting range position for range [document.head, 1, document.head, 1], node foreignTextNode 
+PASS 13,15: resulting DOM for range [document.head, 1, document.head, 1], node processingInstruction 
+PASS 13,15: resulting range position for range [document.head, 1, document.head, 1], node processingInstruction 
+PASS 13,16: resulting DOM for range [document.head, 1, document.head, 1], node detachedProcessingInstruction 
+PASS 13,16: resulting range position for range [document.head, 1, document.head, 1], node detachedProcessingInstruction 
+PASS 13,17: resulting DOM for range [document.head, 1, document.head, 1], node comment 
+PASS 13,17: resulting range position for range [document.head, 1, document.head, 1], node comment 
+PASS 13,18: resulting DOM for range [document.head, 1, document.head, 1], node detachedComment 
+PASS 13,18: resulting range position for range [document.head, 1, document.head, 1], node detachedComment 
+PASS 13,19: resulting DOM for range [document.head, 1, document.head, 1], node docfrag 
+PASS 13,19: resulting range position for range [document.head, 1, document.head, 1], node docfrag 
+PASS 13,20: resulting DOM for range [document.head, 1, document.head, 1], node doctype 
+PASS 13,20: resulting range position for range [document.head, 1, document.head, 1], node doctype 
+PASS 13,21: resulting DOM for range [document.head, 1, document.head, 1], node foreignDoctype 
+PASS 13,21: resulting range position for range [document.head, 1, document.head, 1], node foreignDoctype 
+PASS 14,0: resulting DOM for range [document.body, 4, document.body, 5], node paras[0] 
+PASS 14,0: resulting range position for range [document.body, 4, document.body, 5], node paras[0] 
+PASS 14,1: resulting DOM for range [document.body, 4, document.body, 5], node paras[0].firstChild 
+PASS 14,1: resulting range position for range [document.body, 4, document.body, 5], node paras[0].firstChild 
+PASS 14,2: resulting DOM for range [document.body, 4, document.body, 5], node paras[1].firstChild 
+PASS 14,2: resulting range position for range [document.body, 4, document.body, 5], node paras[1].firstChild 
+PASS 14,3: resulting DOM for range [document.body, 4, document.body, 5], node foreignPara1 
+PASS 14,3: resulting range position for range [document.body, 4, document.body, 5], node foreignPara1 
+PASS 14,4: resulting DOM for range [document.body, 4, document.body, 5], node foreignPara1.firstChild 
+PASS 14,4: resulting range position for range [document.body, 4, document.body, 5], node foreignPara1.firstChild 
+PASS 14,5: resulting DOM for range [document.body, 4, document.body, 5], node detachedPara1 
+PASS 14,5: resulting range position for range [document.body, 4, document.body, 5], node detachedPara1 
+PASS 14,6: resulting DOM for range [document.body, 4, document.body, 5], node detachedPara1.firstChild 
+PASS 14,6: resulting range position for range [document.body, 4, document.body, 5], node detachedPara1.firstChild 
+PASS 14,7: resulting DOM for range [document.body, 4, document.body, 5], node document 
+PASS 14,7: resulting range position for range [document.body, 4, document.body, 5], node document 
+PASS 14,8: resulting DOM for range [document.body, 4, document.body, 5], node detachedDiv 
+PASS 14,8: resulting range position for range [document.body, 4, document.body, 5], node detachedDiv 
+PASS 14,9: resulting DOM for range [document.body, 4, document.body, 5], node foreignDoc 
+PASS 14,9: resulting range position for range [document.body, 4, document.body, 5], node foreignDoc 
+PASS 14,10: resulting DOM for range [document.body, 4, document.body, 5], node foreignPara2 
+PASS 14,10: resulting range position for range [document.body, 4, document.body, 5], node foreignPara2 
+PASS 14,11: resulting DOM for range [document.body, 4, document.body, 5], node xmlDoc 
+PASS 14,11: resulting range position for range [document.body, 4, document.body, 5], node xmlDoc 
+PASS 14,12: resulting DOM for range [document.body, 4, document.body, 5], node xmlElement 
+PASS 14,12: resulting range position for range [document.body, 4, document.body, 5], node xmlElement 
+PASS 14,13: resulting DOM for range [document.body, 4, document.body, 5], node detachedTextNode 
+PASS 14,13: resulting range position for range [document.body, 4, document.body, 5], node detachedTextNode 
+PASS 14,14: resulting DOM for range [document.body, 4, document.body, 5], node foreignTextNode 
+PASS 14,14: resulting range position for range [document.body, 4, document.body, 5], node foreignTextNode 
+PASS 14,15: resulting DOM for range [document.body, 4, document.body, 5], node processingInstruction 
+PASS 14,15: resulting range position for range [document.body, 4, document.body, 5], node processingInstruction 
+PASS 14,16: resulting DOM for range [document.body, 4, document.body, 5], node detachedProcessingInstruction 
+PASS 14,16: resulting range position for range [document.body, 4, document.body, 5], node detachedProcessingInstruction 
+PASS 14,17: resulting DOM for range [document.body, 4, document.body, 5], node comment 
+PASS 14,17: resulting range position for range [document.body, 4, document.body, 5], node comment 
+PASS 14,18: resulting DOM for range [document.body, 4, document.body, 5], node detachedComment 
+PASS 14,18: resulting range position for range [document.body, 4, document.body, 5], node detachedComment 
+PASS 14,19: resulting DOM for range [document.body, 4, document.body, 5], node docfrag 
+PASS 14,19: resulting range position for range [document.body, 4, document.body, 5], node docfrag 
+PASS 14,20: resulting DOM for range [document.body, 4, document.body, 5], node doctype 
+PASS 14,20: resulting range position for range [document.body, 4, document.body, 5], node doctype 
+PASS 14,21: resulting DOM for range [document.body, 4, document.body, 5], node foreignDoctype 
+PASS 14,21: resulting range position for range [document.body, 4, document.body, 5], node foreignDoctype 
+PASS 15,0: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node paras[0] 
+PASS 15,0: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node paras[0] 
+PASS 15,1: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node paras[0].firstChild 
+PASS 15,1: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node paras[0].firstChild 
+PASS 15,2: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node paras[1].firstChild 
+PASS 15,2: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node paras[1].firstChild 
+PASS 15,3: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node foreignPara1 
+PASS 15,3: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node foreignPara1 
+PASS 15,4: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node foreignPara1.firstChild 
+PASS 15,4: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node foreignPara1.firstChild 
+PASS 15,5: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node detachedPara1 
+PASS 15,5: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node detachedPara1 
+PASS 15,6: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node detachedPara1.firstChild 
+PASS 15,6: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node detachedPara1.firstChild 
+PASS 15,7: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node document 
+PASS 15,7: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node document 
+PASS 15,8: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node detachedDiv 
+PASS 15,8: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node detachedDiv 
+PASS 15,9: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node foreignDoc 
+PASS 15,9: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node foreignDoc 
+PASS 15,10: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node foreignPara2 
+PASS 15,10: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node foreignPara2 
+PASS 15,11: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node xmlDoc 
+PASS 15,11: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node xmlDoc 
+PASS 15,12: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node xmlElement 
+PASS 15,12: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node xmlElement 
+PASS 15,13: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node detachedTextNode 
+PASS 15,13: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node detachedTextNode 
+PASS 15,14: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node foreignTextNode 
+PASS 15,14: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node foreignTextNode 
+PASS 15,15: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node processingInstruction 
+PASS 15,15: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node processingInstruction 
+PASS 15,16: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node detachedProcessingInstruction 
+PASS 15,16: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node detachedProcessingInstruction 
+PASS 15,17: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node comment 
+PASS 15,17: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node comment 
+PASS 15,18: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node detachedComment 
+PASS 15,18: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node detachedComment 
+PASS 15,19: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node docfrag 
+PASS 15,19: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node docfrag 
+PASS 15,20: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node doctype 
+PASS 15,20: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node doctype 
+PASS 15,21: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node foreignDoctype 
+PASS 15,21: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node foreignDoctype 
+PASS 16,0: resulting DOM for range [paras[0], 0, paras[0], 1], node paras[0] 
+PASS 16,0: resulting range position for range [paras[0], 0, paras[0], 1], node paras[0] 
+PASS 16,1: resulting DOM for range [paras[0], 0, paras[0], 1], node paras[0].firstChild 
+PASS 16,1: resulting range position for range [paras[0], 0, paras[0], 1], node paras[0].firstChild 
+PASS 16,2: resulting DOM for range [paras[0], 0, paras[0], 1], node paras[1].firstChild 
+PASS 16,2: resulting range position for range [paras[0], 0, paras[0], 1], node paras[1].firstChild 
+PASS 16,3: resulting DOM for range [paras[0], 0, paras[0], 1], node foreignPara1 
+PASS 16,3: resulting range position for range [paras[0], 0, paras[0], 1], node foreignPara1 
+PASS 16,4: resulting DOM for range [paras[0], 0, paras[0], 1], node foreignPara1.firstChild 
+PASS 16,4: resulting range position for range [paras[0], 0, paras[0], 1], node foreignPara1.firstChild 
+PASS 16,5: resulting DOM for range [paras[0], 0, paras[0], 1], node detachedPara1 
+PASS 16,5: resulting range position for range [paras[0], 0, paras[0], 1], node detachedPara1 
+PASS 16,6: resulting DOM for range [paras[0], 0, paras[0], 1], node detachedPara1.firstChild 
+PASS 16,6: resulting range position for range [paras[0], 0, paras[0], 1], node detachedPara1.firstChild 
+PASS 16,7: resulting DOM for range [paras[0], 0, paras[0], 1], node document 
+PASS 16,7: resulting range position for range [paras[0], 0, paras[0], 1], node document 
+PASS 16,8: resulting DOM for range [paras[0], 0, paras[0], 1], node detachedDiv 
+PASS 16,8: resulting range position for range [paras[0], 0, paras[0], 1], node detachedDiv 
+PASS 16,9: resulting DOM for range [paras[0], 0, paras[0], 1], node foreignDoc 
+PASS 16,9: resulting range position for range [paras[0], 0, paras[0], 1], node foreignDoc 
+PASS 16,10: resulting DOM for range [paras[0], 0, paras[0], 1], node foreignPara2 
+PASS 16,10: resulting range position for range [paras[0], 0, paras[0], 1], node foreignPara2 
+PASS 16,11: resulting DOM for range [paras[0], 0, paras[0], 1], node xmlDoc 
+PASS 16,11: resulting range position for range [paras[0], 0, paras[0], 1], node xmlDoc 
+PASS 16,12: resulting DOM for range [paras[0], 0, paras[0], 1], node xmlElement 
+PASS 16,12: resulting range position for range [paras[0], 0, paras[0], 1], node xmlElement 
+PASS 16,13: resulting DOM for range [paras[0], 0, paras[0], 1], node detachedTextNode 
+PASS 16,13: resulting range position for range [paras[0], 0, paras[0], 1], node detachedTextNode 
+PASS 16,14: resulting DOM for range [paras[0], 0, paras[0], 1], node foreignTextNode 
+PASS 16,14: resulting range position for range [paras[0], 0, paras[0], 1], node foreignTextNode 
+PASS 16,15: resulting DOM for range [paras[0], 0, paras[0], 1], node processingInstruction 
+PASS 16,15: resulting range position for range [paras[0], 0, paras[0], 1], node processingInstruction 
+PASS 16,16: resulting DOM for range [paras[0], 0, paras[0], 1], node detachedProcessingInstruction 
+PASS 16,16: resulting range position for range [paras[0], 0, paras[0], 1], node detachedProcessingInstruction 
+PASS 16,17: resulting DOM for range [paras[0], 0, paras[0], 1], node comment 
+PASS 16,17: resulting range position for range [paras[0], 0, paras[0], 1], node comment 
+PASS 16,18: resulting DOM for range [paras[0], 0, paras[0], 1], node detachedComment 
+PASS 16,18: resulting range position for range [paras[0], 0, paras[0], 1], node detachedComment 
+PASS 16,19: resulting DOM for range [paras[0], 0, paras[0], 1], node docfrag 
+PASS 16,19: resulting range position for range [paras[0], 0, paras[0], 1], node docfrag 
+PASS 16,20: resulting DOM for range [paras[0], 0, paras[0], 1], node doctype 
+PASS 16,20: resulting range position for range [paras[0], 0, paras[0], 1], node doctype 
+PASS 16,21: resulting DOM for range [paras[0], 0, paras[0], 1], node foreignDoctype 
+PASS 16,21: resulting range position for range [paras[0], 0, paras[0], 1], node foreignDoctype 
+PASS 17,0: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node paras[0] 
+PASS 17,0: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node paras[0] 
+PASS 17,1: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node paras[0].firstChild 
+PASS 17,1: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node paras[0].firstChild 
+PASS 17,2: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node paras[1].firstChild 
+PASS 17,2: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node paras[1].firstChild 
+PASS 17,3: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node foreignPara1 
+PASS 17,3: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node foreignPara1 
+PASS 17,4: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node foreignPara1.firstChild 
+PASS 17,4: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node foreignPara1.firstChild 
+PASS 17,5: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node detachedPara1 
+PASS 17,5: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node detachedPara1 
+PASS 17,6: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node detachedPara1.firstChild 
+PASS 17,6: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node detachedPara1.firstChild 
+PASS 17,7: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node document 
+PASS 17,7: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node document 
+PASS 17,8: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node detachedDiv 
+PASS 17,8: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node detachedDiv 
+PASS 17,9: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node foreignDoc 
+PASS 17,9: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node foreignDoc 
+PASS 17,10: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node foreignPara2 
+PASS 17,10: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node foreignPara2 
+PASS 17,11: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node xmlDoc 
+PASS 17,11: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node xmlDoc 
+PASS 17,12: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node xmlElement 
+PASS 17,12: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node xmlElement 
+PASS 17,13: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node detachedTextNode 
+PASS 17,13: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node detachedTextNode 
+PASS 17,14: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node foreignTextNode 
+PASS 17,14: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node foreignTextNode 
+PASS 17,15: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node processingInstruction 
+PASS 17,15: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node processingInstruction 
+PASS 17,16: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node detachedProcessingInstruction 
+PASS 17,16: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node detachedProcessingInstruction 
+PASS 17,17: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node comment 
+PASS 17,17: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node comment 
+PASS 17,18: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node detachedComment 
+PASS 17,18: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node detachedComment 
+PASS 17,19: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node docfrag 
+PASS 17,19: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node docfrag 
+PASS 17,20: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node doctype 
+PASS 17,20: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node doctype 
+PASS 17,21: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node foreignDoctype 
+PASS 17,21: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node foreignDoctype 
+PASS 18,0: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node paras[0] 
+PASS 18,0: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node paras[0] 
+FAIL 18,1: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node paras[0].firstChild HierarchyRequestError: DOM Exception 3
+FAIL 18,1: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node paras[0].firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 18,2: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node paras[1].firstChild 
+PASS 18,2: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node paras[1].firstChild 
+PASS 18,3: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node foreignPara1 
+PASS 18,3: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node foreignPara1 
+PASS 18,4: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node foreignPara1.firstChild 
+PASS 18,4: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node foreignPara1.firstChild 
+PASS 18,5: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node detachedPara1 
+PASS 18,5: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node detachedPara1 
+PASS 18,6: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node detachedPara1.firstChild 
+PASS 18,6: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node detachedPara1.firstChild 
+PASS 18,7: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node document 
+PASS 18,7: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node document 
+PASS 18,8: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node detachedDiv 
+PASS 18,8: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node detachedDiv 
+PASS 18,9: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node foreignDoc 
+PASS 18,9: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node foreignDoc 
+PASS 18,10: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node foreignPara2 
+PASS 18,10: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node foreignPara2 
+PASS 18,11: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node xmlDoc 
+PASS 18,11: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node xmlDoc 
+PASS 18,12: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node xmlElement 
+PASS 18,12: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node xmlElement 
+PASS 18,13: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node detachedTextNode 
+PASS 18,13: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node detachedTextNode 
+PASS 18,14: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node foreignTextNode 
+PASS 18,14: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node foreignTextNode 
+PASS 18,15: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node processingInstruction 
+PASS 18,15: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node processingInstruction 
+PASS 18,16: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node detachedProcessingInstruction 
+PASS 18,16: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node detachedProcessingInstruction 
+PASS 18,17: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node comment 
+PASS 18,17: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node comment 
+PASS 18,18: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node detachedComment 
+PASS 18,18: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node detachedComment 
+PASS 18,19: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node docfrag 
+PASS 18,19: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node docfrag 
+PASS 18,20: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node doctype 
+PASS 18,20: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node doctype 
+PASS 18,21: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node foreignDoctype 
+PASS 18,21: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node foreignDoctype 
+PASS 19,0: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node paras[0] 
+PASS 19,0: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node paras[0] 
+FAIL 19,1: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node paras[0].firstChild HierarchyRequestError: DOM Exception 3
+FAIL 19,1: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node paras[0].firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 19,2: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node paras[1].firstChild 
+PASS 19,2: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node paras[1].firstChild 
+PASS 19,3: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node foreignPara1 
+PASS 19,3: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node foreignPara1 
+PASS 19,4: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node foreignPara1.firstChild 
+PASS 19,4: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node foreignPara1.firstChild 
+PASS 19,5: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node detachedPara1 
+PASS 19,5: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node detachedPara1 
+PASS 19,6: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node detachedPara1.firstChild 
+PASS 19,6: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node detachedPara1.firstChild 
+PASS 19,7: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node document 
+PASS 19,7: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node document 
+PASS 19,8: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node detachedDiv 
+PASS 19,8: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node detachedDiv 
+PASS 19,9: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node foreignDoc 
+PASS 19,9: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node foreignDoc 
+PASS 19,10: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node foreignPara2 
+PASS 19,10: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node foreignPara2 
+PASS 19,11: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node xmlDoc 
+PASS 19,11: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node xmlDoc 
+PASS 19,12: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node xmlElement 
+PASS 19,12: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node xmlElement 
+PASS 19,13: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node detachedTextNode 
+PASS 19,13: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node detachedTextNode 
+PASS 19,14: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node foreignTextNode 
+PASS 19,14: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node foreignTextNode 
+PASS 19,15: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node processingInstruction 
+PASS 19,15: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node processingInstruction 
+PASS 19,16: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node detachedProcessingInstruction 
+PASS 19,16: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node detachedProcessingInstruction 
+PASS 19,17: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node comment 
+PASS 19,17: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node comment 
+PASS 19,18: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node detachedComment 
+PASS 19,18: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node detachedComment 
+PASS 19,19: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node docfrag 
+PASS 19,19: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node docfrag 
+PASS 19,20: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node doctype 
+PASS 19,20: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node doctype 
+PASS 19,21: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node foreignDoctype 
+PASS 19,21: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node foreignDoctype 
+PASS 20,0: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node paras[0] 
+PASS 20,0: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node paras[0] 
+FAIL 20,1: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node paras[0].firstChild HierarchyRequestError: DOM Exception 3
+FAIL 20,1: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node paras[0].firstChild assert_true: First differing node: expected Text node &quot;Äb&quot;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 20,2: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node paras[1].firstChild 
+PASS 20,2: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node paras[1].firstChild 
+PASS 20,3: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node foreignPara1 
+PASS 20,3: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node foreignPara1 
+PASS 20,4: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node foreignPara1.firstChild 
+PASS 20,4: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node foreignPara1.firstChild 
+PASS 20,5: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node detachedPara1 
+PASS 20,5: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node detachedPara1 
+PASS 20,6: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node detachedPara1.firstChild 
+PASS 20,6: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node detachedPara1.firstChild 
+PASS 20,7: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node document 
+PASS 20,7: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node document 
+PASS 20,8: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node detachedDiv 
+PASS 20,8: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node detachedDiv 
+PASS 20,9: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node foreignDoc 
+PASS 20,9: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node foreignDoc 
+PASS 20,10: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node foreignPara2 
+PASS 20,10: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node foreignPara2 
+PASS 20,11: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node xmlDoc 
+PASS 20,11: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node xmlDoc 
+PASS 20,12: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node xmlElement 
+PASS 20,12: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node xmlElement 
+PASS 20,13: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node detachedTextNode 
+PASS 20,13: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node detachedTextNode 
+PASS 20,14: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node foreignTextNode 
+PASS 20,14: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node foreignTextNode 
+PASS 20,15: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node processingInstruction 
+PASS 20,15: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node processingInstruction 
+PASS 20,16: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node detachedProcessingInstruction 
+PASS 20,16: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node detachedProcessingInstruction 
+PASS 20,17: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node comment 
+PASS 20,17: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node comment 
+PASS 20,18: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node detachedComment 
+PASS 20,18: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node detachedComment 
+PASS 20,19: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node docfrag 
+PASS 20,19: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node docfrag 
+PASS 20,20: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node doctype 
+PASS 20,20: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node doctype 
+PASS 20,21: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node foreignDoctype 
+PASS 20,21: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node foreignDoctype 
+PASS 21,0: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node paras[0] 
+PASS 21,0: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node paras[0] 
+PASS 21,1: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node paras[0].firstChild 
+FAIL 21,1: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node paras[0].firstChild assert_equals: Unexpected endOffset after insertNode() expected 1 but got 7
+PASS 21,2: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node paras[1].firstChild 
+PASS 21,2: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node paras[1].firstChild 
+PASS 21,3: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node foreignPara1 
+PASS 21,3: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node foreignPara1 
+PASS 21,4: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node foreignPara1.firstChild 
+PASS 21,4: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node foreignPara1.firstChild 
+PASS 21,5: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node detachedPara1 
+PASS 21,5: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node detachedPara1 
+PASS 21,6: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node detachedPara1.firstChild 
+PASS 21,6: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node detachedPara1.firstChild 
+PASS 21,7: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node document 
+PASS 21,7: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node document 
+PASS 21,8: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node detachedDiv 
+PASS 21,8: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node detachedDiv 
+PASS 21,9: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node foreignDoc 
+PASS 21,9: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node foreignDoc 
+PASS 21,10: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node foreignPara2 
+PASS 21,10: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node foreignPara2 
+PASS 21,11: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node xmlDoc 
+PASS 21,11: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node xmlDoc 
+PASS 21,12: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node xmlElement 
+PASS 21,12: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node xmlElement 
+PASS 21,13: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node detachedTextNode 
+PASS 21,13: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node detachedTextNode 
+PASS 21,14: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node foreignTextNode 
+PASS 21,14: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node foreignTextNode 
+PASS 21,15: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node processingInstruction 
+PASS 21,15: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node processingInstruction 
+PASS 21,16: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node detachedProcessingInstruction 
+PASS 21,16: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node detachedProcessingInstruction 
+PASS 21,17: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node comment 
+PASS 21,17: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node comment 
+PASS 21,18: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node detachedComment 
+PASS 21,18: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node detachedComment 
+PASS 21,19: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node docfrag 
+PASS 21,19: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node docfrag 
+PASS 21,20: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node doctype 
+PASS 21,20: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node doctype 
+PASS 21,21: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node foreignDoctype 
+PASS 21,21: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node foreignDoctype 
+PASS 22,0: resulting DOM for range [testDiv, 2, paras[4], 1], node paras[0] 
+PASS 22,0: resulting range position for range [testDiv, 2, paras[4], 1], node paras[0] 
+PASS 22,1: resulting DOM for range [testDiv, 2, paras[4], 1], node paras[0].firstChild 
+PASS 22,1: resulting range position for range [testDiv, 2, paras[4], 1], node paras[0].firstChild 
+PASS 22,2: resulting DOM for range [testDiv, 2, paras[4], 1], node paras[1].firstChild 
+PASS 22,2: resulting range position for range [testDiv, 2, paras[4], 1], node paras[1].firstChild 
+PASS 22,3: resulting DOM for range [testDiv, 2, paras[4], 1], node foreignPara1 
+PASS 22,3: resulting range position for range [testDiv, 2, paras[4], 1], node foreignPara1 
+PASS 22,4: resulting DOM for range [testDiv, 2, paras[4], 1], node foreignPara1.firstChild 
+PASS 22,4: resulting range position for range [testDiv, 2, paras[4], 1], node foreignPara1.firstChild 
+PASS 22,5: resulting DOM for range [testDiv, 2, paras[4], 1], node detachedPara1 
+PASS 22,5: resulting range position for range [testDiv, 2, paras[4], 1], node detachedPara1 
+PASS 22,6: resulting DOM for range [testDiv, 2, paras[4], 1], node detachedPara1.firstChild 
+PASS 22,6: resulting range position for range [testDiv, 2, paras[4], 1], node detachedPara1.firstChild 
+PASS 22,7: resulting DOM for range [testDiv, 2, paras[4], 1], node document 
+PASS 22,7: resulting range position for range [testDiv, 2, paras[4], 1], node document 
+PASS 22,8: resulting DOM for range [testDiv, 2, paras[4], 1], node detachedDiv 
+PASS 22,8: resulting range position for range [testDiv, 2, paras[4], 1], node detachedDiv 
+PASS 22,9: resulting DOM for range [testDiv, 2, paras[4], 1], node foreignDoc 
+PASS 22,9: resulting range position for range [testDiv, 2, paras[4], 1], node foreignDoc 
+PASS 22,10: resulting DOM for range [testDiv, 2, paras[4], 1], node foreignPara2 
+PASS 22,10: resulting range position for range [testDiv, 2, paras[4], 1], node foreignPara2 
+PASS 22,11: resulting DOM for range [testDiv, 2, paras[4], 1], node xmlDoc 
+PASS 22,11: resulting range position for range [testDiv, 2, paras[4], 1], node xmlDoc 
+PASS 22,12: resulting DOM for range [testDiv, 2, paras[4], 1], node xmlElement 
+PASS 22,12: resulting range position for range [testDiv, 2, paras[4], 1], node xmlElement 
+PASS 22,13: resulting DOM for range [testDiv, 2, paras[4], 1], node detachedTextNode 
+PASS 22,13: resulting range position for range [testDiv, 2, paras[4], 1], node detachedTextNode 
+PASS 22,14: resulting DOM for range [testDiv, 2, paras[4], 1], node foreignTextNode 
+PASS 22,14: resulting range position for range [testDiv, 2, paras[4], 1], node foreignTextNode 
+PASS 22,15: resulting DOM for range [testDiv, 2, paras[4], 1], node processingInstruction 
+PASS 22,15: resulting range position for range [testDiv, 2, paras[4], 1], node processingInstruction 
+PASS 22,16: resulting DOM for range [testDiv, 2, paras[4], 1], node detachedProcessingInstruction 
+PASS 22,16: resulting range position for range [testDiv, 2, paras[4], 1], node detachedProcessingInstruction 
+PASS 22,17: resulting DOM for range [testDiv, 2, paras[4], 1], node comment 
+PASS 22,17: resulting range position for range [testDiv, 2, paras[4], 1], node comment 
+PASS 22,18: resulting DOM for range [testDiv, 2, paras[4], 1], node detachedComment 
+PASS 22,18: resulting range position for range [testDiv, 2, paras[4], 1], node detachedComment 
+PASS 22,19: resulting DOM for range [testDiv, 2, paras[4], 1], node docfrag 
+PASS 22,19: resulting range position for range [testDiv, 2, paras[4], 1], node docfrag 
+PASS 22,20: resulting DOM for range [testDiv, 2, paras[4], 1], node doctype 
+PASS 22,20: resulting range position for range [testDiv, 2, paras[4], 1], node doctype 
+PASS 22,21: resulting DOM for range [testDiv, 2, paras[4], 1], node foreignDoctype 
+PASS 22,21: resulting range position for range [testDiv, 2, paras[4], 1], node foreignDoctype 
+PASS 23,0: resulting DOM for range [document, 0, document, 1], node paras[0] 
+PASS 23,0: resulting range position for range [document, 0, document, 1], node paras[0] 
+PASS 23,1: resulting DOM for range [document, 0, document, 1], node paras[0].firstChild 
+PASS 23,1: resulting range position for range [document, 0, document, 1], node paras[0].firstChild 
+PASS 23,2: resulting DOM for range [document, 0, document, 1], node paras[1].firstChild 
+PASS 23,2: resulting range position for range [document, 0, document, 1], node paras[1].firstChild 
+PASS 23,3: resulting DOM for range [document, 0, document, 1], node foreignPara1 
+PASS 23,3: resulting range position for range [document, 0, document, 1], node foreignPara1 
+PASS 23,4: resulting DOM for range [document, 0, document, 1], node foreignPara1.firstChild 
+PASS 23,4: resulting range position for range [document, 0, document, 1], node foreignPara1.firstChild 
+PASS 23,5: resulting DOM for range [document, 0, document, 1], node detachedPara1 
+PASS 23,5: resulting range position for range [document, 0, document, 1], node detachedPara1 
+PASS 23,6: resulting DOM for range [document, 0, document, 1], node detachedPara1.firstChild 
+PASS 23,6: resulting range position for range [document, 0, document, 1], node detachedPara1.firstChild 
+PASS 23,7: resulting DOM for range [document, 0, document, 1], node document 
+PASS 23,7: resulting range position for range [document, 0, document, 1], node document 
+PASS 23,8: resulting DOM for range [document, 0, document, 1], node detachedDiv 
+PASS 23,8: resulting range position for range [document, 0, document, 1], node detachedDiv 
+PASS 23,9: resulting DOM for range [document, 0, document, 1], node foreignDoc 
+PASS 23,9: resulting range position for range [document, 0, document, 1], node foreignDoc 
+PASS 23,10: resulting DOM for range [document, 0, document, 1], node foreignPara2 
+PASS 23,10: resulting range position for range [document, 0, document, 1], node foreignPara2 
+PASS 23,11: resulting DOM for range [document, 0, document, 1], node xmlDoc 
+PASS 23,11: resulting range position for range [document, 0, document, 1], node xmlDoc 
+PASS 23,12: resulting DOM for range [document, 0, document, 1], node xmlElement 
+PASS 23,12: resulting range position for range [document, 0, document, 1], node xmlElement 
+PASS 23,13: resulting DOM for range [document, 0, document, 1], node detachedTextNode 
+PASS 23,13: resulting range position for range [document, 0, document, 1], node detachedTextNode 
+PASS 23,14: resulting DOM for range [document, 0, document, 1], node foreignTextNode 
+PASS 23,14: resulting range position for range [document, 0, document, 1], node foreignTextNode 
+PASS 23,15: resulting DOM for range [document, 0, document, 1], node processingInstruction 
+PASS 23,15: resulting range position for range [document, 0, document, 1], node processingInstruction 
+PASS 23,16: resulting DOM for range [document, 0, document, 1], node detachedProcessingInstruction 
+PASS 23,16: resulting range position for range [document, 0, document, 1], node detachedProcessingInstruction 
+PASS 23,17: resulting DOM for range [document, 0, document, 1], node comment 
+PASS 23,17: resulting range position for range [document, 0, document, 1], node comment 
+PASS 23,18: resulting DOM for range [document, 0, document, 1], node detachedComment 
+PASS 23,18: resulting range position for range [document, 0, document, 1], node detachedComment 
+PASS 23,19: resulting DOM for range [document, 0, document, 1], node docfrag 
+PASS 23,19: resulting range position for range [document, 0, document, 1], node docfrag 
+PASS 23,20: resulting DOM for range [document, 0, document, 1], node doctype 
+PASS 23,20: resulting range position for range [document, 0, document, 1], node doctype 
+PASS 23,21: resulting DOM for range [document, 0, document, 1], node foreignDoctype 
+PASS 23,21: resulting range position for range [document, 0, document, 1], node foreignDoctype 
+PASS 24,0: resulting DOM for range [document, 0, document, 2], node paras[0] 
+PASS 24,0: resulting range position for range [document, 0, document, 2], node paras[0] 
+PASS 24,1: resulting DOM for range [document, 0, document, 2], node paras[0].firstChild 
+PASS 24,1: resulting range position for range [document, 0, document, 2], node paras[0].firstChild 
+PASS 24,2: resulting DOM for range [document, 0, document, 2], node paras[1].firstChild 
+PASS 24,2: resulting range position for range [document, 0, document, 2], node paras[1].firstChild 
+PASS 24,3: resulting DOM for range [document, 0, document, 2], node foreignPara1 
+PASS 24,3: resulting range position for range [document, 0, document, 2], node foreignPara1 
+PASS 24,4: resulting DOM for range [document, 0, document, 2], node foreignPara1.firstChild 
+PASS 24,4: resulting range position for range [document, 0, document, 2], node foreignPara1.firstChild 
+PASS 24,5: resulting DOM for range [document, 0, document, 2], node detachedPara1 
+PASS 24,5: resulting range position for range [document, 0, document, 2], node detachedPara1 
+PASS 24,6: resulting DOM for range [document, 0, document, 2], node detachedPara1.firstChild 
+PASS 24,6: resulting range position for range [document, 0, document, 2], node detachedPara1.firstChild 
+PASS 24,7: resulting DOM for range [document, 0, document, 2], node document 
+PASS 24,7: resulting range position for range [document, 0, document, 2], node document 
+PASS 24,8: resulting DOM for range [document, 0, document, 2], node detachedDiv 
+PASS 24,8: resulting range position for range [document, 0, document, 2], node detachedDiv 
+PASS 24,9: resulting DOM for range [document, 0, document, 2], node foreignDoc 
+PASS 24,9: resulting range position for range [document, 0, document, 2], node foreignDoc 
+PASS 24,10: resulting DOM for range [document, 0, document, 2], node foreignPara2 
+PASS 24,10: resulting range position for range [document, 0, document, 2], node foreignPara2 
+PASS 24,11: resulting DOM for range [document, 0, document, 2], node xmlDoc 
+PASS 24,11: resulting range position for range [document, 0, document, 2], node xmlDoc 
+PASS 24,12: resulting DOM for range [document, 0, document, 2], node xmlElement 
+PASS 24,12: resulting range position for range [document, 0, document, 2], node xmlElement 
+PASS 24,13: resulting DOM for range [document, 0, document, 2], node detachedTextNode 
+PASS 24,13: resulting range position for range [document, 0, document, 2], node detachedTextNode 
+PASS 24,14: resulting DOM for range [document, 0, document, 2], node foreignTextNode 
+PASS 24,14: resulting range position for range [document, 0, document, 2], node foreignTextNode 
+PASS 24,15: resulting DOM for range [document, 0, document, 2], node processingInstruction 
+PASS 24,15: resulting range position for range [document, 0, document, 2], node processingInstruction 
+PASS 24,16: resulting DOM for range [document, 0, document, 2], node detachedProcessingInstruction 
+PASS 24,16: resulting range position for range [document, 0, document, 2], node detachedProcessingInstruction 
+PASS 24,17: resulting DOM for range [document, 0, document, 2], node comment 
+PASS 24,17: resulting range position for range [document, 0, document, 2], node comment 
+PASS 24,18: resulting DOM for range [document, 0, document, 2], node detachedComment 
+PASS 24,18: resulting range position for range [document, 0, document, 2], node detachedComment 
+PASS 24,19: resulting DOM for range [document, 0, document, 2], node docfrag 
+PASS 24,19: resulting range position for range [document, 0, document, 2], node docfrag 
+PASS 24,20: resulting DOM for range [document, 0, document, 2], node doctype 
+PASS 24,20: resulting range position for range [document, 0, document, 2], node doctype 
+PASS 24,21: resulting DOM for range [document, 0, document, 2], node foreignDoctype 
+PASS 24,21: resulting range position for range [document, 0, document, 2], node foreignDoctype 
+PASS 25,0: resulting DOM for range [comment, 2, comment, 3], node paras[0] 
+PASS 25,0: resulting range position for range [comment, 2, comment, 3], node paras[0] 
+PASS 25,1: resulting DOM for range [comment, 2, comment, 3], node paras[0].firstChild 
+PASS 25,1: resulting range position for range [comment, 2, comment, 3], node paras[0].firstChild 
+PASS 25,2: resulting DOM for range [comment, 2, comment, 3], node paras[1].firstChild 
+PASS 25,2: resulting range position for range [comment, 2, comment, 3], node paras[1].firstChild 
+PASS 25,3: resulting DOM for range [comment, 2, comment, 3], node foreignPara1 
+PASS 25,3: resulting range position for range [comment, 2, comment, 3], node foreignPara1 
+PASS 25,4: resulting DOM for range [comment, 2, comment, 3], node foreignPara1.firstChild 
+PASS 25,4: resulting range position for range [comment, 2, comment, 3], node foreignPara1.firstChild 
+PASS 25,5: resulting DOM for range [comment, 2, comment, 3], node detachedPara1 
+PASS 25,5: resulting range position for range [comment, 2, comment, 3], node detachedPara1 
+PASS 25,6: resulting DOM for range [comment, 2, comment, 3], node detachedPara1.firstChild 
+PASS 25,6: resulting range position for range [comment, 2, comment, 3], node detachedPara1.firstChild 
+PASS 25,7: resulting DOM for range [comment, 2, comment, 3], node document 
+PASS 25,7: resulting range position for range [comment, 2, comment, 3], node document 
+PASS 25,8: resulting DOM for range [comment, 2, comment, 3], node detachedDiv 
+PASS 25,8: resulting range position for range [comment, 2, comment, 3], node detachedDiv 
+PASS 25,9: resulting DOM for range [comment, 2, comment, 3], node foreignDoc 
+PASS 25,9: resulting range position for range [comment, 2, comment, 3], node foreignDoc 
+PASS 25,10: resulting DOM for range [comment, 2, comment, 3], node foreignPara2 
+PASS 25,10: resulting range position for range [comment, 2, comment, 3], node foreignPara2 
+PASS 25,11: resulting DOM for range [comment, 2, comment, 3], node xmlDoc 
+PASS 25,11: resulting range position for range [comment, 2, comment, 3], node xmlDoc 
+PASS 25,12: resulting DOM for range [comment, 2, comment, 3], node xmlElement 
+PASS 25,12: resulting range position for range [comment, 2, comment, 3], node xmlElement 
+PASS 25,13: resulting DOM for range [comment, 2, comment, 3], node detachedTextNode 
+PASS 25,13: resulting range position for range [comment, 2, comment, 3], node detachedTextNode 
+PASS 25,14: resulting DOM for range [comment, 2, comment, 3], node foreignTextNode 
+PASS 25,14: resulting range position for range [comment, 2, comment, 3], node foreignTextNode 
+PASS 25,15: resulting DOM for range [comment, 2, comment, 3], node processingInstruction 
+PASS 25,15: resulting range position for range [comment, 2, comment, 3], node processingInstruction 
+PASS 25,16: resulting DOM for range [comment, 2, comment, 3], node detachedProcessingInstruction 
+PASS 25,16: resulting range position for range [comment, 2, comment, 3], node detachedProcessingInstruction 
+PASS 25,17: resulting DOM for range [comment, 2, comment, 3], node comment 
+PASS 25,17: resulting range position for range [comment, 2, comment, 3], node comment 
+PASS 25,18: resulting DOM for range [comment, 2, comment, 3], node detachedComment 
+PASS 25,18: resulting range position for range [comment, 2, comment, 3], node detachedComment 
+PASS 25,19: resulting DOM for range [comment, 2, comment, 3], node docfrag 
+PASS 25,19: resulting range position for range [comment, 2, comment, 3], node docfrag 
+PASS 25,20: resulting DOM for range [comment, 2, comment, 3], node doctype 
+PASS 25,20: resulting range position for range [comment, 2, comment, 3], node doctype 
+PASS 25,21: resulting DOM for range [comment, 2, comment, 3], node foreignDoctype 
+PASS 25,21: resulting range position for range [comment, 2, comment, 3], node foreignDoctype 
+PASS 26,0: resulting DOM for range [testDiv, 0, comment, 5], node paras[0] 
+PASS 26,0: resulting range position for range [testDiv, 0, comment, 5], node paras[0] 
+PASS 26,1: resulting DOM for range [testDiv, 0, comment, 5], node paras[0].firstChild 
+PASS 26,1: resulting range position for range [testDiv, 0, comment, 5], node paras[0].firstChild 
+PASS 26,2: resulting DOM for range [testDiv, 0, comment, 5], node paras[1].firstChild 
+PASS 26,2: resulting range position for range [testDiv, 0, comment, 5], node paras[1].firstChild 
+PASS 26,3: resulting DOM for range [testDiv, 0, comment, 5], node foreignPara1 
+PASS 26,3: resulting range position for range [testDiv, 0, comment, 5], node foreignPara1 
+PASS 26,4: resulting DOM for range [testDiv, 0, comment, 5], node foreignPara1.firstChild 
+PASS 26,4: resulting range position for range [testDiv, 0, comment, 5], node foreignPara1.firstChild 
+PASS 26,5: resulting DOM for range [testDiv, 0, comment, 5], node detachedPara1 
+PASS 26,5: resulting range position for range [testDiv, 0, comment, 5], node detachedPara1 
+PASS 26,6: resulting DOM for range [testDiv, 0, comment, 5], node detachedPara1.firstChild 
+PASS 26,6: resulting range position for range [testDiv, 0, comment, 5], node detachedPara1.firstChild 
+PASS 26,7: resulting DOM for range [testDiv, 0, comment, 5], node document 
+PASS 26,7: resulting range position for range [testDiv, 0, comment, 5], node document 
+PASS 26,8: resulting DOM for range [testDiv, 0, comment, 5], node detachedDiv 
+PASS 26,8: resulting range position for range [testDiv, 0, comment, 5], node detachedDiv 
+PASS 26,9: resulting DOM for range [testDiv, 0, comment, 5], node foreignDoc 
+PASS 26,9: resulting range position for range [testDiv, 0, comment, 5], node foreignDoc 
+PASS 26,10: resulting DOM for range [testDiv, 0, comment, 5], node foreignPara2 
+PASS 26,10: resulting range position for range [testDiv, 0, comment, 5], node foreignPara2 
+PASS 26,11: resulting DOM for range [testDiv, 0, comment, 5], node xmlDoc 
+PASS 26,11: resulting range position for range [testDiv, 0, comment, 5], node xmlDoc 
+PASS 26,12: resulting DOM for range [testDiv, 0, comment, 5], node xmlElement 
+PASS 26,12: resulting range position for range [testDiv, 0, comment, 5], node xmlElement 
+PASS 26,13: resulting DOM for range [testDiv, 0, comment, 5], node detachedTextNode 
+PASS 26,13: resulting range position for range [testDiv, 0, comment, 5], node detachedTextNode 
+PASS 26,14: resulting DOM for range [testDiv, 0, comment, 5], node foreignTextNode 
+PASS 26,14: resulting range position for range [testDiv, 0, comment, 5], node foreignTextNode 
+PASS 26,15: resulting DOM for range [testDiv, 0, comment, 5], node processingInstruction 
+PASS 26,15: resulting range position for range [testDiv, 0, comment, 5], node processingInstruction 
+PASS 26,16: resulting DOM for range [testDiv, 0, comment, 5], node detachedProcessingInstruction 
+PASS 26,16: resulting range position for range [testDiv, 0, comment, 5], node detachedProcessingInstruction 
+PASS 26,17: resulting DOM for range [testDiv, 0, comment, 5], node comment 
+PASS 26,17: resulting range position for range [testDiv, 0, comment, 5], node comment 
+PASS 26,18: resulting DOM for range [testDiv, 0, comment, 5], node detachedComment 
+PASS 26,18: resulting range position for range [testDiv, 0, comment, 5], node detachedComment 
+PASS 26,19: resulting DOM for range [testDiv, 0, comment, 5], node docfrag 
+PASS 26,19: resulting range position for range [testDiv, 0, comment, 5], node docfrag 
+PASS 26,20: resulting DOM for range [testDiv, 0, comment, 5], node doctype 
+PASS 26,20: resulting range position for range [testDiv, 0, comment, 5], node doctype 
+PASS 26,21: resulting DOM for range [testDiv, 0, comment, 5], node foreignDoctype 
+PASS 26,21: resulting range position for range [testDiv, 0, comment, 5], node foreignDoctype 
+PASS 27,0: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node paras[0] 
+PASS 27,0: resulting range position for range [foreignDoc, 1, foreignComment, 2], node paras[0] 
+PASS 27,1: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node paras[0].firstChild 
+PASS 27,1: resulting range position for range [foreignDoc, 1, foreignComment, 2], node paras[0].firstChild 
+PASS 27,2: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node paras[1].firstChild 
+PASS 27,2: resulting range position for range [foreignDoc, 1, foreignComment, 2], node paras[1].firstChild 
+PASS 27,3: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node foreignPara1 
+PASS 27,3: resulting range position for range [foreignDoc, 1, foreignComment, 2], node foreignPara1 
+PASS 27,4: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node foreignPara1.firstChild 
+PASS 27,4: resulting range position for range [foreignDoc, 1, foreignComment, 2], node foreignPara1.firstChild 
+PASS 27,5: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node detachedPara1 
+PASS 27,5: resulting range position for range [foreignDoc, 1, foreignComment, 2], node detachedPara1 
+PASS 27,6: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node detachedPara1.firstChild 
+PASS 27,6: resulting range position for range [foreignDoc, 1, foreignComment, 2], node detachedPara1.firstChild 
+PASS 27,7: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node document 
+PASS 27,7: resulting range position for range [foreignDoc, 1, foreignComment, 2], node document 
+PASS 27,8: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node detachedDiv 
+PASS 27,8: resulting range position for range [foreignDoc, 1, foreignComment, 2], node detachedDiv 
+PASS 27,9: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node foreignDoc 
+PASS 27,9: resulting range position for range [foreignDoc, 1, foreignComment, 2], node foreignDoc 
+PASS 27,10: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node foreignPara2 
+PASS 27,10: resulting range position for range [foreignDoc, 1, foreignComment, 2], node foreignPara2 
+PASS 27,11: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node xmlDoc 
+PASS 27,11: resulting range position for range [foreignDoc, 1, foreignComment, 2], node xmlDoc 
+PASS 27,12: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node xmlElement 
+PASS 27,12: resulting range position for range [foreignDoc, 1, foreignComment, 2], node xmlElement 
+PASS 27,13: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node detachedTextNode 
+PASS 27,13: resulting range position for range [foreignDoc, 1, foreignComment, 2], node detachedTextNode 
+PASS 27,14: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node foreignTextNode 
+PASS 27,14: resulting range position for range [foreignDoc, 1, foreignComment, 2], node foreignTextNode 
+PASS 27,15: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node processingInstruction 
+PASS 27,15: resulting range position for range [foreignDoc, 1, foreignComment, 2], node processingInstruction 
+PASS 27,16: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node detachedProcessingInstruction 
+PASS 27,16: resulting range position for range [foreignDoc, 1, foreignComment, 2], node detachedProcessingInstruction 
+PASS 27,17: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node comment 
+PASS 27,17: resulting range position for range [foreignDoc, 1, foreignComment, 2], node comment 
+PASS 27,18: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node detachedComment 
+PASS 27,18: resulting range position for range [foreignDoc, 1, foreignComment, 2], node detachedComment 
+PASS 27,19: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node docfrag 
+PASS 27,19: resulting range position for range [foreignDoc, 1, foreignComment, 2], node docfrag 
+PASS 27,20: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node doctype 
+PASS 27,20: resulting range position for range [foreignDoc, 1, foreignComment, 2], node doctype 
+PASS 27,21: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node foreignDoctype 
+PASS 27,21: resulting range position for range [foreignDoc, 1, foreignComment, 2], node foreignDoctype 
+PASS 28,0: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node paras[0] 
+PASS 28,0: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node paras[0] 
+PASS 28,1: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node paras[0].firstChild 
+PASS 28,1: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node paras[0].firstChild 
+PASS 28,2: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node paras[1].firstChild 
+PASS 28,2: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node paras[1].firstChild 
+PASS 28,3: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node foreignPara1 
+PASS 28,3: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node foreignPara1 
+PASS 28,4: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node foreignPara1.firstChild 
+PASS 28,4: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node foreignPara1.firstChild 
+PASS 28,5: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node detachedPara1 
+PASS 28,5: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node detachedPara1 
+PASS 28,6: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node detachedPara1.firstChild 
+PASS 28,6: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node detachedPara1.firstChild 
+PASS 28,7: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node document 
+PASS 28,7: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node document 
+PASS 28,8: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node detachedDiv 
+PASS 28,8: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node detachedDiv 
+PASS 28,9: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node foreignDoc 
+PASS 28,9: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node foreignDoc 
+PASS 28,10: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node foreignPara2 
+PASS 28,10: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node foreignPara2 
+PASS 28,11: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node xmlDoc 
+PASS 28,11: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node xmlDoc 
+PASS 28,12: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node xmlElement 
+PASS 28,12: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node xmlElement 
+PASS 28,13: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node detachedTextNode 
+PASS 28,13: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node detachedTextNode 
+PASS 28,14: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node foreignTextNode 
+PASS 28,14: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node foreignTextNode 
+PASS 28,15: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node processingInstruction 
+PASS 28,15: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node processingInstruction 
+PASS 28,16: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node detachedProcessingInstruction 
+PASS 28,16: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node detachedProcessingInstruction 
+PASS 28,17: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node comment 
+PASS 28,17: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node comment 
+PASS 28,18: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node detachedComment 
+PASS 28,18: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node detachedComment 
+PASS 28,19: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node docfrag 
+PASS 28,19: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node docfrag 
+PASS 28,20: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node doctype 
+PASS 28,20: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node doctype 
+PASS 28,21: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node foreignDoctype 
+PASS 28,21: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node foreignDoctype 
+PASS 29,0: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node paras[0] 
+PASS 29,0: resulting range position for range [xmlDoc, 1, xmlComment, 0], node paras[0] 
+PASS 29,1: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node paras[0].firstChild 
+PASS 29,1: resulting range position for range [xmlDoc, 1, xmlComment, 0], node paras[0].firstChild 
+PASS 29,2: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node paras[1].firstChild 
+PASS 29,2: resulting range position for range [xmlDoc, 1, xmlComment, 0], node paras[1].firstChild 
+PASS 29,3: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node foreignPara1 
+PASS 29,3: resulting range position for range [xmlDoc, 1, xmlComment, 0], node foreignPara1 
+PASS 29,4: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node foreignPara1.firstChild 
+PASS 29,4: resulting range position for range [xmlDoc, 1, xmlComment, 0], node foreignPara1.firstChild 
+PASS 29,5: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node detachedPara1 
+PASS 29,5: resulting range position for range [xmlDoc, 1, xmlComment, 0], node detachedPara1 
+PASS 29,6: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node detachedPara1.firstChild 
+PASS 29,6: resulting range position for range [xmlDoc, 1, xmlComment, 0], node detachedPara1.firstChild 
+PASS 29,7: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node document 
+PASS 29,7: resulting range position for range [xmlDoc, 1, xmlComment, 0], node document 
+PASS 29,8: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node detachedDiv 
+PASS 29,8: resulting range position for range [xmlDoc, 1, xmlComment, 0], node detachedDiv 
+PASS 29,9: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node foreignDoc 
+PASS 29,9: resulting range position for range [xmlDoc, 1, xmlComment, 0], node foreignDoc 
+PASS 29,10: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node foreignPara2 
+PASS 29,10: resulting range position for range [xmlDoc, 1, xmlComment, 0], node foreignPara2 
+PASS 29,11: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node xmlDoc 
+PASS 29,11: resulting range position for range [xmlDoc, 1, xmlComment, 0], node xmlDoc 
+PASS 29,12: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node xmlElement 
+PASS 29,12: resulting range position for range [xmlDoc, 1, xmlComment, 0], node xmlElement 
+PASS 29,13: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node detachedTextNode 
+PASS 29,13: resulting range position for range [xmlDoc, 1, xmlComment, 0], node detachedTextNode 
+PASS 29,14: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node foreignTextNode 
+PASS 29,14: resulting range position for range [xmlDoc, 1, xmlComment, 0], node foreignTextNode 
+PASS 29,15: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node processingInstruction 
+PASS 29,15: resulting range position for range [xmlDoc, 1, xmlComment, 0], node processingInstruction 
+PASS 29,16: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node detachedProcessingInstruction 
+PASS 29,16: resulting range position for range [xmlDoc, 1, xmlComment, 0], node detachedProcessingInstruction 
+PASS 29,17: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node comment 
+PASS 29,17: resulting range position for range [xmlDoc, 1, xmlComment, 0], node comment 
+PASS 29,18: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node detachedComment 
+PASS 29,18: resulting range position for range [xmlDoc, 1, xmlComment, 0], node detachedComment 
+PASS 29,19: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node docfrag 
+PASS 29,19: resulting range position for range [xmlDoc, 1, xmlComment, 0], node docfrag 
+PASS 29,20: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node doctype 
+PASS 29,20: resulting range position for range [xmlDoc, 1, xmlComment, 0], node doctype 
+PASS 29,21: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node foreignDoctype 
+PASS 29,21: resulting range position for range [xmlDoc, 1, xmlComment, 0], node foreignDoctype 
+PASS 30,0: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node paras[0] 
+PASS 30,0: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node paras[0] 
+PASS 30,1: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node paras[0].firstChild 
+PASS 30,1: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node paras[0].firstChild 
+PASS 30,2: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node paras[1].firstChild 
+PASS 30,2: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node paras[1].firstChild 
+PASS 30,3: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node foreignPara1 
+PASS 30,3: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node foreignPara1 
+PASS 30,4: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node foreignPara1.firstChild 
+PASS 30,4: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node foreignPara1.firstChild 
+PASS 30,5: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node detachedPara1 
+PASS 30,5: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node detachedPara1 
+PASS 30,6: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node detachedPara1.firstChild 
+PASS 30,6: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node detachedPara1.firstChild 
+PASS 30,7: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node document 
+PASS 30,7: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node document 
+PASS 30,8: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node detachedDiv 
+PASS 30,8: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node detachedDiv 
+PASS 30,9: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node foreignDoc 
+PASS 30,9: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node foreignDoc 
+PASS 30,10: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node foreignPara2 
+PASS 30,10: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node foreignPara2 
+PASS 30,11: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node xmlDoc 
+PASS 30,11: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node xmlDoc 
+PASS 30,12: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node xmlElement 
+PASS 30,12: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node xmlElement 
+PASS 30,13: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node detachedTextNode 
+PASS 30,13: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node detachedTextNode 
+PASS 30,14: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node foreignTextNode 
+PASS 30,14: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node foreignTextNode 
+PASS 30,15: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node processingInstruction 
+PASS 30,15: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node processingInstruction 
+PASS 30,16: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node detachedProcessingInstruction 
+PASS 30,16: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node detachedProcessingInstruction 
+PASS 30,17: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node comment 
+PASS 30,17: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node comment 
+PASS 30,18: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node detachedComment 
+PASS 30,18: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node detachedComment 
+PASS 30,19: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node docfrag 
+PASS 30,19: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node docfrag 
+PASS 30,20: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node doctype 
+PASS 30,20: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node doctype 
+PASS 30,21: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node foreignDoctype 
+PASS 30,21: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node foreignDoctype 
+PASS 31,0: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node paras[0] 
+PASS 31,0: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node paras[0] 
+PASS 31,1: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node paras[0].firstChild 
+PASS 31,1: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node paras[0].firstChild 
+PASS 31,2: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node paras[1].firstChild 
+PASS 31,2: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node paras[1].firstChild 
+PASS 31,3: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node foreignPara1 
+PASS 31,3: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node foreignPara1 
+PASS 31,4: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node foreignPara1.firstChild 
+PASS 31,4: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node foreignPara1.firstChild 
+PASS 31,5: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node detachedPara1 
+PASS 31,5: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node detachedPara1 
+PASS 31,6: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node detachedPara1.firstChild 
+PASS 31,6: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node detachedPara1.firstChild 
+PASS 31,7: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node document 
+PASS 31,7: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node document 
+PASS 31,8: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node detachedDiv 
+PASS 31,8: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node detachedDiv 
+PASS 31,9: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node foreignDoc 
+PASS 31,9: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node foreignDoc 
+PASS 31,10: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node foreignPara2 
+PASS 31,10: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node foreignPara2 
+PASS 31,11: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node xmlDoc 
+PASS 31,11: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node xmlDoc 
+PASS 31,12: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node xmlElement 
+PASS 31,12: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node xmlElement 
+PASS 31,13: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node detachedTextNode 
+PASS 31,13: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node detachedTextNode 
+PASS 31,14: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node foreignTextNode 
+PASS 31,14: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node foreignTextNode 
+PASS 31,15: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node processingInstruction 
+PASS 31,15: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node processingInstruction 
+PASS 31,16: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node detachedProcessingInstruction 
+PASS 31,16: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node detachedProcessingInstruction 
+PASS 31,17: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node comment 
+PASS 31,17: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node comment 
+PASS 31,18: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node detachedComment 
+PASS 31,18: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node detachedComment 
+PASS 31,19: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node docfrag 
+PASS 31,19: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node docfrag 
+PASS 31,20: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node doctype 
+PASS 31,20: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node doctype 
+PASS 31,21: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node foreignDoctype 
+PASS 31,21: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node foreignDoctype 
+PASS 32,0: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node paras[0] 
+PASS 32,0: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node paras[0] 
+PASS 32,1: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node paras[0].firstChild 
+PASS 32,1: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node paras[0].firstChild 
+PASS 32,2: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node paras[1].firstChild 
+PASS 32,2: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node paras[1].firstChild 
+PASS 32,3: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node foreignPara1 
+PASS 32,3: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node foreignPara1 
+PASS 32,4: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node foreignPara1.firstChild 
+PASS 32,4: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node foreignPara1.firstChild 
+PASS 32,5: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node detachedPara1 
+PASS 32,5: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node detachedPara1 
+PASS 32,6: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node detachedPara1.firstChild 
+PASS 32,6: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node detachedPara1.firstChild 
+PASS 32,7: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node document 
+PASS 32,7: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node document 
+PASS 32,8: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node detachedDiv 
+PASS 32,8: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node detachedDiv 
+PASS 32,9: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node foreignDoc 
+PASS 32,9: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node foreignDoc 
+PASS 32,10: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node foreignPara2 
+PASS 32,10: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node foreignPara2 
+PASS 32,11: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node xmlDoc 
+PASS 32,11: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node xmlDoc 
+PASS 32,12: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node xmlElement 
+PASS 32,12: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node xmlElement 
+PASS 32,13: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node detachedTextNode 
+PASS 32,13: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node detachedTextNode 
+PASS 32,14: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node foreignTextNode 
+PASS 32,14: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node foreignTextNode 
+PASS 32,15: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node processingInstruction 
+PASS 32,15: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node processingInstruction 
+PASS 32,16: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node detachedProcessingInstruction 
+PASS 32,16: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node detachedProcessingInstruction 
+PASS 32,17: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node comment 
+PASS 32,17: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node comment 
+PASS 32,18: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node detachedComment 
+PASS 32,18: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node detachedComment 
+PASS 32,19: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node docfrag 
+PASS 32,19: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node docfrag 
+PASS 32,20: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node doctype 
+PASS 32,20: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node doctype 
+PASS 32,21: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node foreignDoctype 
+PASS 32,21: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node foreignDoctype 
+PASS 33,0: resulting DOM for range [detachedComment, 3, detachedComment, 4], node paras[0] 
+PASS 33,0: resulting range position for range [detachedComment, 3, detachedComment, 4], node paras[0] 
+PASS 33,1: resulting DOM for range [detachedComment, 3, detachedComment, 4], node paras[0].firstChild 
+PASS 33,1: resulting range position for range [detachedComment, 3, detachedComment, 4], node paras[0].firstChild 
+PASS 33,2: resulting DOM for range [detachedComment, 3, detachedComment, 4], node paras[1].firstChild 
+PASS 33,2: resulting range position for range [detachedComment, 3, detachedComment, 4], node paras[1].firstChild 
+PASS 33,3: resulting DOM for range [detachedComment, 3, detachedComment, 4], node foreignPara1 
+PASS 33,3: resulting range position for range [detachedComment, 3, detachedComment, 4], node foreignPara1 
+PASS 33,4: resulting DOM for range [detachedComment, 3, detachedComment, 4], node foreignPara1.firstChild 
+PASS 33,4: resulting range position for range [detachedComment, 3, detachedComment, 4], node foreignPara1.firstChild 
+PASS 33,5: resulting DOM for range [detachedComment, 3, detachedComment, 4], node detachedPara1 
+PASS 33,5: resulting range position for range [detachedComment, 3, detachedComment, 4], node detachedPara1 
+PASS 33,6: resulting DOM for range [detachedComment, 3, detachedComment, 4], node detachedPara1.firstChild 
+PASS 33,6: resulting range position for range [detachedComment, 3, detachedComment, 4], node detachedPara1.firstChild 
+PASS 33,7: resulting DOM for range [detachedComment, 3, detachedComment, 4], node document 
+PASS 33,7: resulting range position for range [detachedComment, 3, detachedComment, 4], node document 
+PASS 33,8: resulting DOM for range [detachedComment, 3, detachedComment, 4], node detachedDiv 
+PASS 33,8: resulting range position for range [detachedComment, 3, detachedComment, 4], node detachedDiv 
+PASS 33,9: resulting DOM for range [detachedComment, 3, detachedComment, 4], node foreignDoc 
+PASS 33,9: resulting range position for range [detachedComment, 3, detachedComment, 4], node foreignDoc 
+PASS 33,10: resulting DOM for range [detachedComment, 3, detachedComment, 4], node foreignPara2 
+PASS 33,10: resulting range position for range [detachedComment, 3, detachedComment, 4], node foreignPara2 
+PASS 33,11: resulting DOM for range [detachedComment, 3, detachedComment, 4], node xmlDoc 
+PASS 33,11: resulting range position for range [detachedComment, 3, detachedComment, 4], node xmlDoc 
+PASS 33,12: resulting DOM for range [detachedComment, 3, detachedComment, 4], node xmlElement 
+PASS 33,12: resulting range position for range [detachedComment, 3, detachedComment, 4], node xmlElement 
+PASS 33,13: resulting DOM for range [detachedComment, 3, detachedComment, 4], node detachedTextNode 
+PASS 33,13: resulting range position for range [detachedComment, 3, detachedComment, 4], node detachedTextNode 
+PASS 33,14: resulting DOM for range [detachedComment, 3, detachedComment, 4], node foreignTextNode 
+PASS 33,14: resulting range position for range [detachedComment, 3, detachedComment, 4], node foreignTextNode 
+PASS 33,15: resulting DOM for range [detachedComment, 3, detachedComment, 4], node processingInstruction 
+PASS 33,15: resulting range position for range [detachedComment, 3, detachedComment, 4], node processingInstruction 
+PASS 33,16: resulting DOM for range [detachedComment, 3, detachedComment, 4], node detachedProcessingInstruction 
+PASS 33,16: resulting range position for range [detachedComment, 3, detachedComment, 4], node detachedProcessingInstruction 
+PASS 33,17: resulting DOM for range [detachedComment, 3, detachedComment, 4], node comment 
+PASS 33,17: resulting range position for range [detachedComment, 3, detachedComment, 4], node comment 
+PASS 33,18: resulting DOM for range [detachedComment, 3, detachedComment, 4], node detachedComment 
+PASS 33,18: resulting range position for range [detachedComment, 3, detachedComment, 4], node detachedComment 
+PASS 33,19: resulting DOM for range [detachedComment, 3, detachedComment, 4], node docfrag 
+PASS 33,19: resulting range position for range [detachedComment, 3, detachedComment, 4], node docfrag 
+PASS 33,20: resulting DOM for range [detachedComment, 3, detachedComment, 4], node doctype 
+PASS 33,20: resulting range position for range [detachedComment, 3, detachedComment, 4], node doctype 
+PASS 33,21: resulting DOM for range [detachedComment, 3, detachedComment, 4], node foreignDoctype 
+PASS 33,21: resulting range position for range [detachedComment, 3, detachedComment, 4], node foreignDoctype 
+PASS 34,0: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node paras[0] 
+PASS 34,0: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node paras[0] 
+PASS 34,1: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node paras[0].firstChild 
+PASS 34,1: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node paras[0].firstChild 
+PASS 34,2: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node paras[1].firstChild 
+PASS 34,2: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node paras[1].firstChild 
+PASS 34,3: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node foreignPara1 
+PASS 34,3: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node foreignPara1 
+PASS 34,4: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node foreignPara1.firstChild 
+PASS 34,4: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node foreignPara1.firstChild 
+PASS 34,5: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node detachedPara1 
+PASS 34,5: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node detachedPara1 
+PASS 34,6: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node detachedPara1.firstChild 
+PASS 34,6: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node detachedPara1.firstChild 
+PASS 34,7: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node document 
+PASS 34,7: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node document 
+PASS 34,8: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node detachedDiv 
+PASS 34,8: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node detachedDiv 
+PASS 34,9: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node foreignDoc 
+PASS 34,9: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node foreignDoc 
+PASS 34,10: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node foreignPara2 
+PASS 34,10: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node foreignPara2 
+PASS 34,11: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node xmlDoc 
+PASS 34,11: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node xmlDoc 
+PASS 34,12: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node xmlElement 
+PASS 34,12: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node xmlElement 
+PASS 34,13: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node detachedTextNode 
+PASS 34,13: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node detachedTextNode 
+PASS 34,14: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node foreignTextNode 
+PASS 34,14: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node foreignTextNode 
+PASS 34,15: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node processingInstruction 
+PASS 34,15: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node processingInstruction 
+PASS 34,16: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node detachedProcessingInstruction 
+PASS 34,16: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node detachedProcessingInstruction 
+PASS 34,17: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node comment 
+PASS 34,17: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node comment 
+PASS 34,18: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node detachedComment 
+PASS 34,18: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node detachedComment 
+PASS 34,19: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node docfrag 
+PASS 34,19: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node docfrag 
+PASS 34,20: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node doctype 
+PASS 34,20: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node doctype 
+PASS 34,21: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node foreignDoctype 
+PASS 34,21: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node foreignDoctype 
+PASS 35,0: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node paras[0] 
+PASS 35,0: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node paras[0] 
+PASS 35,1: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node paras[0].firstChild 
+PASS 35,1: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node paras[0].firstChild 
+PASS 35,2: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node paras[1].firstChild 
+PASS 35,2: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node paras[1].firstChild 
+PASS 35,3: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node foreignPara1 
+PASS 35,3: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node foreignPara1 
+PASS 35,4: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node foreignPara1.firstChild 
+PASS 35,4: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node foreignPara1.firstChild 
+PASS 35,5: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node detachedPara1 
+PASS 35,5: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node detachedPara1 
+PASS 35,6: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node detachedPara1.firstChild 
+PASS 35,6: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node detachedPara1.firstChild 
+PASS 35,7: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node document 
+PASS 35,7: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node document 
+PASS 35,8: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node detachedDiv 
+PASS 35,8: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node detachedDiv 
+PASS 35,9: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node foreignDoc 
+PASS 35,9: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node foreignDoc 
+PASS 35,10: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node foreignPara2 
+PASS 35,10: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node foreignPara2 
+PASS 35,11: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node xmlDoc 
+PASS 35,11: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node xmlDoc 
+PASS 35,12: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node xmlElement 
+PASS 35,12: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node xmlElement 
+PASS 35,13: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node detachedTextNode 
+PASS 35,13: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node detachedTextNode 
+PASS 35,14: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node foreignTextNode 
+PASS 35,14: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node foreignTextNode 
+PASS 35,15: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node processingInstruction 
+PASS 35,15: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node processingInstruction 
+PASS 35,16: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node detachedProcessingInstruction 
+PASS 35,16: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node detachedProcessingInstruction 
+PASS 35,17: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node comment 
+PASS 35,17: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node comment 
+PASS 35,18: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node detachedComment 
+PASS 35,18: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node detachedComment 
+PASS 35,19: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node docfrag 
+PASS 35,19: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node docfrag 
+PASS 35,20: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node doctype 
+PASS 35,20: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node doctype 
+PASS 35,21: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node foreignDoctype 
+PASS 35,21: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node foreignDoctype 
+PASS 36,0: resulting DOM for range [docfrag, 0, docfrag, 0], node paras[0] 
+PASS 36,0: resulting range position for range [docfrag, 0, docfrag, 0], node paras[0] 
+PASS 36,1: resulting DOM for range [docfrag, 0, docfrag, 0], node paras[0].firstChild 
+PASS 36,1: resulting range position for range [docfrag, 0, docfrag, 0], node paras[0].firstChild 
+PASS 36,2: resulting DOM for range [docfrag, 0, docfrag, 0], node paras[1].firstChild 
+PASS 36,2: resulting range position for range [docfrag, 0, docfrag, 0], node paras[1].firstChild 
+PASS 36,3: resulting DOM for range [docfrag, 0, docfrag, 0], node foreignPara1 
+PASS 36,3: resulting range position for range [docfrag, 0, docfrag, 0], node foreignPara1 
+PASS 36,4: resulting DOM for range [docfrag, 0, docfrag, 0], node foreignPara1.firstChild 
+PASS 36,4: resulting range position for range [docfrag, 0, docfrag, 0], node foreignPara1.firstChild 
+PASS 36,5: resulting DOM for range [docfrag, 0, docfrag, 0], node detachedPara1 
+PASS 36,5: resulting range position for range [docfrag, 0, docfrag, 0], node detachedPara1 
+PASS 36,6: resulting DOM for range [docfrag, 0, docfrag, 0], node detachedPara1.firstChild 
+PASS 36,6: resulting range position for range [docfrag, 0, docfrag, 0], node detachedPara1.firstChild 
+PASS 36,7: resulting DOM for range [docfrag, 0, docfrag, 0], node document 
+PASS 36,7: resulting range position for range [docfrag, 0, docfrag, 0], node document 
+PASS 36,8: resulting DOM for range [docfrag, 0, docfrag, 0], node detachedDiv 
+PASS 36,8: resulting range position for range [docfrag, 0, docfrag, 0], node detachedDiv 
+PASS 36,9: resulting DOM for range [docfrag, 0, docfrag, 0], node foreignDoc 
+PASS 36,9: resulting range position for range [docfrag, 0, docfrag, 0], node foreignDoc 
+PASS 36,10: resulting DOM for range [docfrag, 0, docfrag, 0], node foreignPara2 
+PASS 36,10: resulting range position for range [docfrag, 0, docfrag, 0], node foreignPara2 
+PASS 36,11: resulting DOM for range [docfrag, 0, docfrag, 0], node xmlDoc 
+PASS 36,11: resulting range position for range [docfrag, 0, docfrag, 0], node xmlDoc 
+PASS 36,12: resulting DOM for range [docfrag, 0, docfrag, 0], node xmlElement 
+PASS 36,12: resulting range position for range [docfrag, 0, docfrag, 0], node xmlElement 
+PASS 36,13: resulting DOM for range [docfrag, 0, docfrag, 0], node detachedTextNode 
+PASS 36,13: resulting range position for range [docfrag, 0, docfrag, 0], node detachedTextNode 
+PASS 36,14: resulting DOM for range [docfrag, 0, docfrag, 0], node foreignTextNode 
+PASS 36,14: resulting range position for range [docfrag, 0, docfrag, 0], node foreignTextNode 
+PASS 36,15: resulting DOM for range [docfrag, 0, docfrag, 0], node processingInstruction 
+PASS 36,15: resulting range position for range [docfrag, 0, docfrag, 0], node processingInstruction 
+PASS 36,16: resulting DOM for range [docfrag, 0, docfrag, 0], node detachedProcessingInstruction 
+PASS 36,16: resulting range position for range [docfrag, 0, docfrag, 0], node detachedProcessingInstruction 
+PASS 36,17: resulting DOM for range [docfrag, 0, docfrag, 0], node comment 
+PASS 36,17: resulting range position for range [docfrag, 0, docfrag, 0], node comment 
+PASS 36,18: resulting DOM for range [docfrag, 0, docfrag, 0], node detachedComment 
+PASS 36,18: resulting range position for range [docfrag, 0, docfrag, 0], node detachedComment 
+PASS 36,19: resulting DOM for range [docfrag, 0, docfrag, 0], node docfrag 
+PASS 36,19: resulting range position for range [docfrag, 0, docfrag, 0], node docfrag 
+PASS 36,20: resulting DOM for range [docfrag, 0, docfrag, 0], node doctype 
+PASS 36,20: resulting range position for range [docfrag, 0, docfrag, 0], node doctype 
+PASS 36,21: resulting DOM for range [docfrag, 0, docfrag, 0], node foreignDoctype 
+PASS 36,21: resulting range position for range [docfrag, 0, docfrag, 0], node foreignDoctype 
+PASS 37,0: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node paras[0] 
+PASS 37,0: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node paras[0] 
+PASS 37,1: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node paras[0].firstChild 
+PASS 37,1: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node paras[0].firstChild 
+PASS 37,2: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node paras[1].firstChild 
+PASS 37,2: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node paras[1].firstChild 
+PASS 37,3: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node foreignPara1 
+PASS 37,3: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node foreignPara1 
+PASS 37,4: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node foreignPara1.firstChild 
+PASS 37,4: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node foreignPara1.firstChild 
+PASS 37,5: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node detachedPara1 
+PASS 37,5: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node detachedPara1 
+PASS 37,6: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node detachedPara1.firstChild 
+PASS 37,6: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node detachedPara1.firstChild 
+PASS 37,7: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node document 
+PASS 37,7: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node document 
+PASS 37,8: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node detachedDiv 
+PASS 37,8: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node detachedDiv 
+PASS 37,9: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node foreignDoc 
+PASS 37,9: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node foreignDoc 
+PASS 37,10: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node foreignPara2 
+PASS 37,10: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node foreignPara2 
+PASS 37,11: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node xmlDoc 
+PASS 37,11: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node xmlDoc 
+PASS 37,12: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node xmlElement 
+PASS 37,12: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node xmlElement 
+PASS 37,13: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node detachedTextNode 
+PASS 37,13: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node detachedTextNode 
+PASS 37,14: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node foreignTextNode 
+PASS 37,14: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node foreignTextNode 
+PASS 37,15: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node processingInstruction 
+PASS 37,15: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node processingInstruction 
+PASS 37,16: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node detachedProcessingInstruction 
+PASS 37,16: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node detachedProcessingInstruction 
+PASS 37,17: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node comment 
+PASS 37,17: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node comment 
+PASS 37,18: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node detachedComment 
+PASS 37,18: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node detachedComment 
+PASS 37,19: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node docfrag 
+PASS 37,19: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node docfrag 
+PASS 37,20: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node doctype 
+PASS 37,20: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node doctype 
+PASS 37,21: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node foreignDoctype 
+PASS 37,21: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node foreignDoctype 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeinsertNodehtmlfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangeinsertNodehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-insertNode.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-insertNode.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-insertNode.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-insertNode.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,286 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Range.insertNode() tests&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Aryeh Gregor&quot; href=ayg@aryeh.name&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;p&gt;To debug test failures, add a query parameter &quot;subtest&quot; with the test id (like
+&quot;?subtest=5,16&quot;).  Only that test will be run.  Then you can look at the resulting
+iframes in the DOM.
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;script src=../common.js&gt;&lt;/script&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+
+testDiv.parentNode.removeChild(testDiv);
+
+function restoreIframe(iframe, i, j) {
+    // Most of this function is designed to work around the fact that Opera
+    // doesn't let you add a doctype to a document that no longer has one, in
+    // any way I can figure out.  I eventually compromised on something that
+    // will still let Opera pass most tests that don't actually involve
+    // doctypes.
+    while (iframe.contentDocument.firstChild
+    &amp;&amp; iframe.contentDocument.firstChild.nodeType != Node.DOCUMENT_TYPE_NODE) {
+        iframe.contentDocument.removeChild(iframe.contentDocument.firstChild);
+    }
+
+    while (iframe.contentDocument.lastChild
+    &amp;&amp; iframe.contentDocument.lastChild.nodeType != Node.DOCUMENT_TYPE_NODE) {
+        iframe.contentDocument.removeChild(iframe.contentDocument.lastChild);
+    }
+
+    if (!iframe.contentDocument.firstChild) {
+        // This will throw an exception in Opera if we reach here, which is why
+        // I try to avoid it.  It will never happen in a browser that obeys the
+        // spec, so it's really just insurance.  I don't think it actually gets
+        // hit by anything.
+        iframe.contentDocument.appendChild(iframe.contentDocument.implementation.createDocumentType(&quot;html&quot;, &quot;&quot;, &quot;&quot;));
+    }
+    iframe.contentDocument.appendChild(referenceDoc.documentElement.cloneNode(true));
+    iframe.contentWindow.setupRangeTests();
+    iframe.contentWindow.testRangeInput = testRangesShort[i];
+    iframe.contentWindow.testNodeInput = testNodesShort[j];
+    iframe.contentWindow.run();
+}
+
+function testInsertNode(i, j) {
+    var actualRange;
+    var expectedRange;
+    var actualNode;
+    var expectedNode;
+    var actualRoots = [];
+    var expectedRoots = [];
+
+    var detached = false;
+
+    domTests[i][j].step(function() {
+        restoreIframe(actualIframe, i, j);
+        restoreIframe(expectedIframe, i, j);
+
+        actualRange = actualIframe.contentWindow.testRange;
+        expectedRange = expectedIframe.contentWindow.testRange;
+        actualNode = actualIframe.contentWindow.testNode;
+        expectedNode = expectedIframe.contentWindow.testNode;
+
+        try {
+            actualRange.collapsed;
+        } catch (e) {
+            detached = true;
+        }
+
+        assert_equals(actualIframe.contentWindow.unexpectedException, null,
+            &quot;Unexpected exception thrown when setting up Range for actual insertNode()&quot;);
+        assert_equals(expectedIframe.contentWindow.unexpectedException, null,
+            &quot;Unexpected exception thrown when setting up Range for simulated insertNode()&quot;);
+        assert_equals(typeof actualRange, &quot;object&quot;,
+            &quot;typeof Range produced in actual iframe&quot;);
+        assert_false(actualRange === null,
+            &quot;Range produced in actual iframe was null&quot;);
+        assert_equals(typeof expectedRange, &quot;object&quot;,
+            &quot;typeof Range produced in expected iframe&quot;);
+        assert_false(expectedRange === null,
+            &quot;Range produced in expected iframe was null&quot;);
+        assert_equals(typeof actualNode, &quot;object&quot;,
+            &quot;typeof Node produced in actual iframe&quot;);
+        assert_false(actualNode === null,
+            &quot;Node produced in actual iframe was null&quot;);
+        assert_equals(typeof expectedNode, &quot;object&quot;,
+            &quot;typeof Node produced in expected iframe&quot;);
+        assert_false(expectedNode === null,
+            &quot;Node produced in expected iframe was null&quot;);
+
+        // We want to test that the trees containing the ranges are equal, and
+        // also the trees containing the moved nodes.  These might not be the
+        // same, if we're inserting a node from a detached tree or a different
+        // document.
+        //
+        // Detached ranges are always in the contentDocument.
+        if (detached) {
+            actualRoots.push(actualIframe.contentDocument);
+            expectedRoots.push(expectedIframe.contentDocument);
+        } else {
+            actualRoots.push(furthestAncestor(actualRange.startContainer));
+            expectedRoots.push(furthestAncestor(expectedRange.startContainer));
+        }
+
+        if (furthestAncestor(actualNode) != actualRoots[0]) {
+            actualRoots.push(furthestAncestor(actualNode));
+        }
+        if (furthestAncestor(expectedNode) != expectedRoots[0]) {
+            expectedRoots.push(furthestAncestor(expectedNode));
+        }
+
+        assert_equals(actualRoots.length, expectedRoots.length,
+            &quot;Either the actual node and actual range are in the same tree but the expected are in different trees, or vice versa&quot;);
+
+        // This doctype stuff is to work around the fact that Opera 11.00 will
+        // move around doctypes within a document, even to totally invalid
+        // positions, but it won't allow a new doctype to be added to a
+        // document in any way I can figure out.  So if we try moving a doctype
+        // to some invalid place, in Opera it will actually succeed, and then
+        // restoreIframe() will remove the doctype along with the root element,
+        // and then nothing can re-add the doctype.  So instead, we catch it
+        // during the test itself and move it back to the right place while we
+        // still can.
+        //
+        // I spent *way* too much time debugging and working around this bug.
+        var actualDoctype = actualIframe.contentDocument.doctype;
+        var expectedDoctype = expectedIframe.contentDocument.doctype;
+
+        var result;
+        try {
+            result = myInsertNode(expectedRange, expectedNode);
+        } catch (e) {
+            if (expectedDoctype != expectedIframe.contentDocument.firstChild) {
+                expectedIframe.contentDocument.insertBefore(expectedDoctype, expectedIframe.contentDocument.firstChild);
+            }
+            throw e;
+        }
+        if (typeof result == &quot;string&quot;) {
+            assert_throws(result, function() {
+                try {
+                    actualRange.insertNode(actualNode);
+                } catch (e) {
+                    if (expectedDoctype != expectedIframe.contentDocument.firstChild) {
+                        expectedIframe.contentDocument.insertBefore(expectedDoctype, expectedIframe.contentDocument.firstChild);
+                    }
+                    if (actualDoctype != actualIframe.contentDocument.firstChild) {
+                        actualIframe.contentDocument.insertBefore(actualDoctype, actualIframe.contentDocument.firstChild);
+                    }
+                    throw e;
+                }
+            }, &quot;A &quot; + result + &quot; DOMException must be thrown in this case&quot;);
+            // Don't return, we still need to test DOM equality
+        } else {
+            try {
+                actualRange.insertNode(actualNode);
+            } catch (e) {
+                if (expectedDoctype != expectedIframe.contentDocument.firstChild) {
+                    expectedIframe.contentDocument.insertBefore(expectedDoctype, expectedIframe.contentDocument.firstChild);
+                }
+                if (actualDoctype != actualIframe.contentDocument.firstChild) {
+                    actualIframe.contentDocument.insertBefore(actualDoctype, actualIframe.contentDocument.firstChild);
+                }
+                throw e;
+            }
+        }
+
+        for (var k = 0; k &lt; actualRoots.length; k++) {
+            assertNodesEqual(actualRoots[k], expectedRoots[k], k ? &quot;moved node's tree root&quot; : &quot;range's tree root&quot;);
+        }
+    });
+    domTests[i][j].done();
+
+    positionTests[i][j].step(function() {
+        assert_equals(actualIframe.contentWindow.unexpectedException, null,
+            &quot;Unexpected exception thrown when setting up Range for actual insertNode()&quot;);
+        assert_equals(expectedIframe.contentWindow.unexpectedException, null,
+            &quot;Unexpected exception thrown when setting up Range for simulated insertNode()&quot;);
+        assert_equals(typeof actualRange, &quot;object&quot;,
+            &quot;typeof Range produced in actual iframe&quot;);
+        assert_false(actualRange === null,
+            &quot;Range produced in actual iframe was null&quot;);
+        assert_equals(typeof expectedRange, &quot;object&quot;,
+            &quot;typeof Range produced in expected iframe&quot;);
+        assert_false(expectedRange === null,
+            &quot;Range produced in expected iframe was null&quot;);
+        assert_equals(typeof actualNode, &quot;object&quot;,
+            &quot;typeof Node produced in actual iframe&quot;);
+        assert_false(actualNode === null,
+            &quot;Node produced in actual iframe was null&quot;);
+        assert_equals(typeof expectedNode, &quot;object&quot;,
+            &quot;typeof Node produced in expected iframe&quot;);
+        assert_false(expectedNode === null,
+            &quot;Node produced in expected iframe was null&quot;);
+
+        for (var k = 0; k &lt; actualRoots.length; k++) {
+            assertNodesEqual(actualRoots[k], expectedRoots[k], k ? &quot;moved node's tree root&quot; : &quot;range's tree root&quot;);
+        }
+
+        if (detached) {
+            // No further tests we can do
+            return;
+        }
+
+        assert_equals(actualRange.startOffset, expectedRange.startOffset,
+            &quot;Unexpected startOffset after insertNode()&quot;);
+        assert_equals(actualRange.endOffset, expectedRange.endOffset,
+            &quot;Unexpected endOffset after insertNode()&quot;);
+        // How do we decide that the two nodes are equal, since they're in
+        // different trees?  Since the DOMs are the same, it's enough to check
+        // that the index in the parent is the same all the way up the tree.
+        // But we can first cheat by just checking they're actually equal.
+        assert_true(actualRange.startContainer.isEqualNode(expectedRange.startContainer),
+            &quot;Unexpected startContainer after insertNode(), expected &quot; +
+            expectedRange.startContainer.nodeName.toLowerCase() + &quot; but got &quot; +
+            actualRange.startContainer.nodeName.toLowerCase());
+        var currentActual = actualRange.startContainer;
+        var currentExpected = expectedRange.startContainer;
+        var actual = &quot;&quot;;
+        var expected = &quot;&quot;;
+        while (currentActual &amp;&amp; currentExpected) {
+            actual = indexOf(currentActual) + &quot;-&quot; + actual;
+            expected = indexOf(currentExpected) + &quot;-&quot; + expected;
+
+            currentActual = currentActual.parentNode;
+            currentExpected = currentExpected.parentNode;
+        }
+        actual = actual.substr(0, actual.length - 1);
+        expected = expected.substr(0, expected.length - 1);
+        assert_equals(actual, expected,
+            &quot;startContainer superficially looks right but is actually the wrong node if you trace back its index in all its ancestors (I'm surprised this actually happened&quot;);
+    });
+    positionTests[i][j].done();
+}
+
+testRanges.unshift('&quot;detached&quot;');
+
+var iStart = 0;
+var iStop = testRangesShort.length;
+var jStart = 0;
+var jStop = testNodesShort.length;
+
+if (/subtest=[0-9]+,[0-9]+/.test(location.search)) {
+    var matches = /subtest=([0-9]+),([0-9]+)/.exec(location.search);
+    iStart = Number(matches[1]);
+    iStop = Number(matches[1]) + 1;
+    jStart = Number(matches[2]) + 0;
+    jStop = Number(matches[2]) + 1;
+}
+
+var domTests = [];
+var positionTests = [];
+for (var i = iStart; i &lt; iStop; i++) {
+    domTests[i] = [];
+    positionTests[i] = [];
+    for (var j = jStart; j &lt; jStop; j++) {
+        domTests[i][j] = async_test(i + &quot;,&quot; + j + &quot;: resulting DOM for range &quot; + testRangesShort[i] + &quot;, node &quot; + testNodesShort[j]);
+        positionTests[i][j] = async_test(i + &quot;,&quot; + j + &quot;: resulting range position for range &quot; + testRangesShort[i] + &quot;, node &quot; + testNodesShort[j]);
+    }
+}
+
+var actualIframe = document.createElement(&quot;iframe&quot;);
+actualIframe.style.display = &quot;none&quot;;
+document.body.appendChild(actualIframe);
+
+var expectedIframe = document.createElement(&quot;iframe&quot;);
+expectedIframe.style.display = &quot;none&quot;;
+document.body.appendChild(expectedIframe);
+
+var referenceDoc = document.implementation.createHTMLDocument(&quot;&quot;);
+referenceDoc.removeChild(referenceDoc.documentElement);
+
+actualIframe.onload = function() {
+    expectedIframe.onload = function() {
+        for (var i = iStart; i &lt; iStop; i++) {
+            for (var j = jStart; j &lt; jStop; j++) {
+                testInsertNode(i, j);
+            }
+        }
+    }
+    expectedIframe.src = &quot;Range-test-iframe.html&quot;;
+    referenceDoc.appendChild(actualIframe.contentDocument.documentElement.cloneNode(true));
+}
+actualIframe.src = &quot;Range-test-iframe.html&quot;;
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeintersectsNodebindingexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangeintersectsNodebindingexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-intersectsNode-binding-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-intersectsNode-binding-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-intersectsNode-binding-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-intersectsNode-binding-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+
+PASS Calling intersectsNode without an argument or with an invalid argument should throw a TypeError. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeintersectsNodebindinghtmlfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangeintersectsNodebindinghtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-intersectsNode-binding.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-intersectsNode-binding.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-intersectsNode-binding.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-intersectsNode-binding.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Range.intersectsNode&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Ms2ger&quot; href=&quot;mailto:ms2ger@gmail.com&quot;&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script&gt;
+test(function() {
+  var r = document.createRange();
+  assert_throws(new TypeError(), function() { r.intersectsNode(); });
+  assert_throws(new TypeError(), function() { r.intersectsNode(null); });
+  assert_throws(new TypeError(), function() { r.intersectsNode(undefined); });
+  assert_throws(new TypeError(), function() { r.intersectsNode(42); });
+  assert_throws(new TypeError(), function() { r.intersectsNode(&quot;foo&quot;); });
+  assert_throws(new TypeError(), function() { r.intersectsNode({}); });
+  r.detach();
+  assert_throws(new TypeError(), function() { r.intersectsNode(); });
+  assert_throws(new TypeError(), function() { r.intersectsNode(null); });
+  assert_throws(new TypeError(), function() { r.intersectsNode(undefined); });
+  assert_throws(new TypeError(), function() { r.intersectsNode(42); });
+  assert_throws(new TypeError(), function() { r.intersectsNode(&quot;foo&quot;); });
+  assert_throws(new TypeError(), function() { r.intersectsNode({}); });
+}, &quot;Calling intersectsNode without an argument or with an invalid argument should throw a TypeError.&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeintersectsNodeexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangeintersectsNodeexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-intersectsNode-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-intersectsNode-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-intersectsNode-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-intersectsNode-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,2259 @@
</span><ins>+
+PASS Node 0 paras[0], detached range 
+PASS Node 0 paras[0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 0 paras[0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 0 paras[0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 0 paras[0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 0 paras[0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 0 paras[0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 0 paras[0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 0 paras[0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 0 paras[0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 0 paras[0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 0 paras[0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 0 paras[0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 0 paras[0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 0 paras[0], range 13 [document.head, 1, document.head, 1] 
+PASS Node 0 paras[0], range 14 [document.body, 4, document.body, 5] 
+PASS Node 0 paras[0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 0 paras[0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 0 paras[0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 0 paras[0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 0 paras[0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 0 paras[0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 0 paras[0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 0 paras[0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 0 paras[0], range 23 [document, 0, document, 1] 
+PASS Node 0 paras[0], range 24 [document, 0, document, 2] 
+PASS Node 0 paras[0], range 25 [comment, 2, comment, 3] 
+PASS Node 0 paras[0], range 26 [testDiv, 0, comment, 5] 
+PASS Node 0 paras[0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 0 paras[0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 0 paras[0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 0 paras[0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 0 paras[0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 0 paras[0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 0 paras[0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 0 paras[0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 0 paras[0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 0 paras[0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 0 paras[0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 0 paras[0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 0 paras[0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 0 paras[0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 0 paras[0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 0 paras[0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 0 paras[0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 0 paras[0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 0 paras[0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 0 paras[0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 0 paras[0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 0 paras[0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 0 paras[0], range 49 [document, 1, document, 2] 
+PASS Node 0 paras[0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 0 paras[0], range 51 [paras[3], 1, comment, 8] 
+PASS Node 0 paras[0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 0 paras[0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 0 paras[0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 0 paras[0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 0 paras[0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 0 paras[0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 0 paras[0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 0 paras[0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 1 paras[0].firstChild, detached range 
+PASS Node 1 paras[0].firstChild, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 1 paras[0].firstChild, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 1 paras[0].firstChild, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 1 paras[0].firstChild, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 1 paras[0].firstChild, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 1 paras[0].firstChild, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 1 paras[0].firstChild, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 1 paras[0].firstChild, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 1 paras[0].firstChild, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 1 paras[0].firstChild, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 1 paras[0].firstChild, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 1 paras[0].firstChild, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 1 paras[0].firstChild, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 1 paras[0].firstChild, range 13 [document.head, 1, document.head, 1] 
+PASS Node 1 paras[0].firstChild, range 14 [document.body, 4, document.body, 5] 
+PASS Node 1 paras[0].firstChild, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 1 paras[0].firstChild, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 1 paras[0].firstChild, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 1 paras[0].firstChild, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 1 paras[0].firstChild, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 1 paras[0].firstChild, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 1 paras[0].firstChild, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 1 paras[0].firstChild, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 1 paras[0].firstChild, range 23 [document, 0, document, 1] 
+PASS Node 1 paras[0].firstChild, range 24 [document, 0, document, 2] 
+PASS Node 1 paras[0].firstChild, range 25 [comment, 2, comment, 3] 
+PASS Node 1 paras[0].firstChild, range 26 [testDiv, 0, comment, 5] 
+PASS Node 1 paras[0].firstChild, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 1 paras[0].firstChild, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 1 paras[0].firstChild, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 1 paras[0].firstChild, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 1 paras[0].firstChild, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 1 paras[0].firstChild, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 1 paras[0].firstChild, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 1 paras[0].firstChild, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 1 paras[0].firstChild, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 1 paras[0].firstChild, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 1 paras[0].firstChild, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 1 paras[0].firstChild, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 1 paras[0].firstChild, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 1 paras[0].firstChild, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 1 paras[0].firstChild, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 1 paras[0].firstChild, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 1 paras[0].firstChild, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 1 paras[0].firstChild, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 1 paras[0].firstChild, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 1 paras[0].firstChild, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 1 paras[0].firstChild, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 1 paras[0].firstChild, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 1 paras[0].firstChild, range 49 [document, 1, document, 2] 
+PASS Node 1 paras[0].firstChild, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 1 paras[0].firstChild, range 51 [paras[3], 1, comment, 8] 
+PASS Node 1 paras[0].firstChild, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 1 paras[0].firstChild, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 1 paras[0].firstChild, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 1 paras[0].firstChild, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 1 paras[0].firstChild, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 1 paras[0].firstChild, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 1 paras[0].firstChild, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 1 paras[0].firstChild, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 2 paras[1].firstChild, detached range 
+PASS Node 2 paras[1].firstChild, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 2 paras[1].firstChild, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 2 paras[1].firstChild, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 2 paras[1].firstChild, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 2 paras[1].firstChild, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 2 paras[1].firstChild, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 2 paras[1].firstChild, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 2 paras[1].firstChild, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 2 paras[1].firstChild, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 2 paras[1].firstChild, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 2 paras[1].firstChild, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 2 paras[1].firstChild, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 2 paras[1].firstChild, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 2 paras[1].firstChild, range 13 [document.head, 1, document.head, 1] 
+PASS Node 2 paras[1].firstChild, range 14 [document.body, 4, document.body, 5] 
+PASS Node 2 paras[1].firstChild, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 2 paras[1].firstChild, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 2 paras[1].firstChild, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 2 paras[1].firstChild, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 2 paras[1].firstChild, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 2 paras[1].firstChild, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 2 paras[1].firstChild, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 2 paras[1].firstChild, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 2 paras[1].firstChild, range 23 [document, 0, document, 1] 
+PASS Node 2 paras[1].firstChild, range 24 [document, 0, document, 2] 
+PASS Node 2 paras[1].firstChild, range 25 [comment, 2, comment, 3] 
+PASS Node 2 paras[1].firstChild, range 26 [testDiv, 0, comment, 5] 
+PASS Node 2 paras[1].firstChild, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 2 paras[1].firstChild, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 2 paras[1].firstChild, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 2 paras[1].firstChild, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 2 paras[1].firstChild, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 2 paras[1].firstChild, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 2 paras[1].firstChild, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 2 paras[1].firstChild, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 2 paras[1].firstChild, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 2 paras[1].firstChild, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 2 paras[1].firstChild, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 2 paras[1].firstChild, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 2 paras[1].firstChild, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 2 paras[1].firstChild, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 2 paras[1].firstChild, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 2 paras[1].firstChild, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 2 paras[1].firstChild, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 2 paras[1].firstChild, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 2 paras[1].firstChild, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 2 paras[1].firstChild, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 2 paras[1].firstChild, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 2 paras[1].firstChild, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 2 paras[1].firstChild, range 49 [document, 1, document, 2] 
+PASS Node 2 paras[1].firstChild, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 2 paras[1].firstChild, range 51 [paras[3], 1, comment, 8] 
+PASS Node 2 paras[1].firstChild, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 2 paras[1].firstChild, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 2 paras[1].firstChild, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 2 paras[1].firstChild, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 2 paras[1].firstChild, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 2 paras[1].firstChild, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 2 paras[1].firstChild, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 2 paras[1].firstChild, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 3 foreignPara1, detached range 
+PASS Node 3 foreignPara1, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 3 foreignPara1, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 3 foreignPara1, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 3 foreignPara1, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 3 foreignPara1, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 3 foreignPara1, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 3 foreignPara1, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 3 foreignPara1, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 3 foreignPara1, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 3 foreignPara1, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 3 foreignPara1, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 3 foreignPara1, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 3 foreignPara1, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 3 foreignPara1, range 13 [document.head, 1, document.head, 1] 
+PASS Node 3 foreignPara1, range 14 [document.body, 4, document.body, 5] 
+PASS Node 3 foreignPara1, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 3 foreignPara1, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 3 foreignPara1, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 3 foreignPara1, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 3 foreignPara1, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 3 foreignPara1, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 3 foreignPara1, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 3 foreignPara1, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 3 foreignPara1, range 23 [document, 0, document, 1] 
+PASS Node 3 foreignPara1, range 24 [document, 0, document, 2] 
+PASS Node 3 foreignPara1, range 25 [comment, 2, comment, 3] 
+PASS Node 3 foreignPara1, range 26 [testDiv, 0, comment, 5] 
+PASS Node 3 foreignPara1, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 3 foreignPara1, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 3 foreignPara1, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 3 foreignPara1, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 3 foreignPara1, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 3 foreignPara1, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 3 foreignPara1, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 3 foreignPara1, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 3 foreignPara1, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 3 foreignPara1, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 3 foreignPara1, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 3 foreignPara1, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 3 foreignPara1, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 3 foreignPara1, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 3 foreignPara1, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 3 foreignPara1, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 3 foreignPara1, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 3 foreignPara1, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 3 foreignPara1, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 3 foreignPara1, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 3 foreignPara1, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 3 foreignPara1, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 3 foreignPara1, range 49 [document, 1, document, 2] 
+PASS Node 3 foreignPara1, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 3 foreignPara1, range 51 [paras[3], 1, comment, 8] 
+PASS Node 3 foreignPara1, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 3 foreignPara1, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 3 foreignPara1, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 3 foreignPara1, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 3 foreignPara1, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 3 foreignPara1, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 3 foreignPara1, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 3 foreignPara1, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 4 foreignPara1.firstChild, detached range 
+PASS Node 4 foreignPara1.firstChild, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 4 foreignPara1.firstChild, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 4 foreignPara1.firstChild, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 4 foreignPara1.firstChild, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 4 foreignPara1.firstChild, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 4 foreignPara1.firstChild, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 4 foreignPara1.firstChild, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 4 foreignPara1.firstChild, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 4 foreignPara1.firstChild, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 4 foreignPara1.firstChild, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 4 foreignPara1.firstChild, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 4 foreignPara1.firstChild, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 4 foreignPara1.firstChild, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 4 foreignPara1.firstChild, range 13 [document.head, 1, document.head, 1] 
+PASS Node 4 foreignPara1.firstChild, range 14 [document.body, 4, document.body, 5] 
+PASS Node 4 foreignPara1.firstChild, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 4 foreignPara1.firstChild, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 4 foreignPara1.firstChild, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 4 foreignPara1.firstChild, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 4 foreignPara1.firstChild, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 4 foreignPara1.firstChild, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 4 foreignPara1.firstChild, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 4 foreignPara1.firstChild, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 4 foreignPara1.firstChild, range 23 [document, 0, document, 1] 
+PASS Node 4 foreignPara1.firstChild, range 24 [document, 0, document, 2] 
+PASS Node 4 foreignPara1.firstChild, range 25 [comment, 2, comment, 3] 
+PASS Node 4 foreignPara1.firstChild, range 26 [testDiv, 0, comment, 5] 
+PASS Node 4 foreignPara1.firstChild, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 4 foreignPara1.firstChild, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 4 foreignPara1.firstChild, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 4 foreignPara1.firstChild, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 4 foreignPara1.firstChild, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 4 foreignPara1.firstChild, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 4 foreignPara1.firstChild, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 4 foreignPara1.firstChild, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 4 foreignPara1.firstChild, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 4 foreignPara1.firstChild, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 4 foreignPara1.firstChild, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 4 foreignPara1.firstChild, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 4 foreignPara1.firstChild, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 4 foreignPara1.firstChild, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 4 foreignPara1.firstChild, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 4 foreignPara1.firstChild, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 4 foreignPara1.firstChild, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 4 foreignPara1.firstChild, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 4 foreignPara1.firstChild, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 4 foreignPara1.firstChild, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 4 foreignPara1.firstChild, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 4 foreignPara1.firstChild, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 4 foreignPara1.firstChild, range 49 [document, 1, document, 2] 
+PASS Node 4 foreignPara1.firstChild, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 4 foreignPara1.firstChild, range 51 [paras[3], 1, comment, 8] 
+PASS Node 4 foreignPara1.firstChild, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 4 foreignPara1.firstChild, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 4 foreignPara1.firstChild, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 4 foreignPara1.firstChild, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 4 foreignPara1.firstChild, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 4 foreignPara1.firstChild, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 4 foreignPara1.firstChild, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 4 foreignPara1.firstChild, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 5 detachedPara1, detached range 
+PASS Node 5 detachedPara1, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 5 detachedPara1, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 5 detachedPara1, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 5 detachedPara1, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 5 detachedPara1, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 5 detachedPara1, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 5 detachedPara1, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 5 detachedPara1, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 5 detachedPara1, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 5 detachedPara1, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 5 detachedPara1, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 5 detachedPara1, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 5 detachedPara1, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 5 detachedPara1, range 13 [document.head, 1, document.head, 1] 
+PASS Node 5 detachedPara1, range 14 [document.body, 4, document.body, 5] 
+PASS Node 5 detachedPara1, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 5 detachedPara1, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 5 detachedPara1, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 5 detachedPara1, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 5 detachedPara1, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 5 detachedPara1, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 5 detachedPara1, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 5 detachedPara1, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 5 detachedPara1, range 23 [document, 0, document, 1] 
+PASS Node 5 detachedPara1, range 24 [document, 0, document, 2] 
+PASS Node 5 detachedPara1, range 25 [comment, 2, comment, 3] 
+PASS Node 5 detachedPara1, range 26 [testDiv, 0, comment, 5] 
+PASS Node 5 detachedPara1, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 5 detachedPara1, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 5 detachedPara1, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 5 detachedPara1, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 5 detachedPara1, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 5 detachedPara1, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 5 detachedPara1, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 5 detachedPara1, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 5 detachedPara1, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 5 detachedPara1, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 5 detachedPara1, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 5 detachedPara1, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 5 detachedPara1, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 5 detachedPara1, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 5 detachedPara1, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 5 detachedPara1, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 5 detachedPara1, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 5 detachedPara1, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 5 detachedPara1, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 5 detachedPara1, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 5 detachedPara1, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 5 detachedPara1, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 5 detachedPara1, range 49 [document, 1, document, 2] 
+PASS Node 5 detachedPara1, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 5 detachedPara1, range 51 [paras[3], 1, comment, 8] 
+PASS Node 5 detachedPara1, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 5 detachedPara1, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 5 detachedPara1, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 5 detachedPara1, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 5 detachedPara1, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 5 detachedPara1, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 5 detachedPara1, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 5 detachedPara1, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 6 detachedPara1.firstChild, detached range 
+PASS Node 6 detachedPara1.firstChild, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 6 detachedPara1.firstChild, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 6 detachedPara1.firstChild, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 6 detachedPara1.firstChild, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 6 detachedPara1.firstChild, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 6 detachedPara1.firstChild, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 6 detachedPara1.firstChild, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 6 detachedPara1.firstChild, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 6 detachedPara1.firstChild, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 6 detachedPara1.firstChild, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 6 detachedPara1.firstChild, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 6 detachedPara1.firstChild, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 6 detachedPara1.firstChild, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 6 detachedPara1.firstChild, range 13 [document.head, 1, document.head, 1] 
+PASS Node 6 detachedPara1.firstChild, range 14 [document.body, 4, document.body, 5] 
+PASS Node 6 detachedPara1.firstChild, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 6 detachedPara1.firstChild, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 6 detachedPara1.firstChild, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 6 detachedPara1.firstChild, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 6 detachedPara1.firstChild, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 6 detachedPara1.firstChild, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 6 detachedPara1.firstChild, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 6 detachedPara1.firstChild, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 6 detachedPara1.firstChild, range 23 [document, 0, document, 1] 
+PASS Node 6 detachedPara1.firstChild, range 24 [document, 0, document, 2] 
+PASS Node 6 detachedPara1.firstChild, range 25 [comment, 2, comment, 3] 
+PASS Node 6 detachedPara1.firstChild, range 26 [testDiv, 0, comment, 5] 
+PASS Node 6 detachedPara1.firstChild, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 6 detachedPara1.firstChild, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 6 detachedPara1.firstChild, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 6 detachedPara1.firstChild, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 6 detachedPara1.firstChild, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 6 detachedPara1.firstChild, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 6 detachedPara1.firstChild, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 6 detachedPara1.firstChild, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 6 detachedPara1.firstChild, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 6 detachedPara1.firstChild, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 6 detachedPara1.firstChild, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 6 detachedPara1.firstChild, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 6 detachedPara1.firstChild, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 6 detachedPara1.firstChild, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 6 detachedPara1.firstChild, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 6 detachedPara1.firstChild, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 6 detachedPara1.firstChild, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 6 detachedPara1.firstChild, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 6 detachedPara1.firstChild, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 6 detachedPara1.firstChild, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 6 detachedPara1.firstChild, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 6 detachedPara1.firstChild, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 6 detachedPara1.firstChild, range 49 [document, 1, document, 2] 
+PASS Node 6 detachedPara1.firstChild, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 6 detachedPara1.firstChild, range 51 [paras[3], 1, comment, 8] 
+PASS Node 6 detachedPara1.firstChild, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 6 detachedPara1.firstChild, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 6 detachedPara1.firstChild, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 6 detachedPara1.firstChild, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 6 detachedPara1.firstChild, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 6 detachedPara1.firstChild, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 6 detachedPara1.firstChild, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 6 detachedPara1.firstChild, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 7 document, detached range 
+PASS Node 7 document, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 7 document, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 7 document, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 7 document, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 7 document, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 7 document, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 7 document, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 7 document, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 7 document, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 7 document, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 7 document, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 7 document, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 7 document, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 7 document, range 13 [document.head, 1, document.head, 1] 
+PASS Node 7 document, range 14 [document.body, 4, document.body, 5] 
+PASS Node 7 document, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 7 document, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 7 document, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 7 document, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 7 document, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 7 document, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 7 document, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 7 document, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 7 document, range 23 [document, 0, document, 1] 
+PASS Node 7 document, range 24 [document, 0, document, 2] 
+PASS Node 7 document, range 25 [comment, 2, comment, 3] 
+PASS Node 7 document, range 26 [testDiv, 0, comment, 5] 
+PASS Node 7 document, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 7 document, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 7 document, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 7 document, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 7 document, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 7 document, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 7 document, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 7 document, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 7 document, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 7 document, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 7 document, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 7 document, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 7 document, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 7 document, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 7 document, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 7 document, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 7 document, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 7 document, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 7 document, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 7 document, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 7 document, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 7 document, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 7 document, range 49 [document, 1, document, 2] 
+PASS Node 7 document, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 7 document, range 51 [paras[3], 1, comment, 8] 
+PASS Node 7 document, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 7 document, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 7 document, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 7 document, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 7 document, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 7 document, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 7 document, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 7 document, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 8 detachedDiv, detached range 
+PASS Node 8 detachedDiv, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 8 detachedDiv, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 8 detachedDiv, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 8 detachedDiv, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 8 detachedDiv, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 8 detachedDiv, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 8 detachedDiv, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 8 detachedDiv, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 8 detachedDiv, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 8 detachedDiv, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 8 detachedDiv, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 8 detachedDiv, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 8 detachedDiv, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 8 detachedDiv, range 13 [document.head, 1, document.head, 1] 
+PASS Node 8 detachedDiv, range 14 [document.body, 4, document.body, 5] 
+PASS Node 8 detachedDiv, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 8 detachedDiv, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 8 detachedDiv, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 8 detachedDiv, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 8 detachedDiv, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 8 detachedDiv, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 8 detachedDiv, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 8 detachedDiv, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 8 detachedDiv, range 23 [document, 0, document, 1] 
+PASS Node 8 detachedDiv, range 24 [document, 0, document, 2] 
+PASS Node 8 detachedDiv, range 25 [comment, 2, comment, 3] 
+PASS Node 8 detachedDiv, range 26 [testDiv, 0, comment, 5] 
+PASS Node 8 detachedDiv, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 8 detachedDiv, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 8 detachedDiv, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 8 detachedDiv, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 8 detachedDiv, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 8 detachedDiv, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 8 detachedDiv, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 8 detachedDiv, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 8 detachedDiv, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 8 detachedDiv, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 8 detachedDiv, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 8 detachedDiv, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 8 detachedDiv, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 8 detachedDiv, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 8 detachedDiv, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 8 detachedDiv, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 8 detachedDiv, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 8 detachedDiv, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 8 detachedDiv, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 8 detachedDiv, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 8 detachedDiv, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 8 detachedDiv, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 8 detachedDiv, range 49 [document, 1, document, 2] 
+PASS Node 8 detachedDiv, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 8 detachedDiv, range 51 [paras[3], 1, comment, 8] 
+PASS Node 8 detachedDiv, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 8 detachedDiv, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 8 detachedDiv, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 8 detachedDiv, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 8 detachedDiv, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 8 detachedDiv, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 8 detachedDiv, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 8 detachedDiv, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 9 foreignDoc, detached range 
+PASS Node 9 foreignDoc, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 9 foreignDoc, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 9 foreignDoc, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 9 foreignDoc, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 9 foreignDoc, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 9 foreignDoc, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 9 foreignDoc, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 9 foreignDoc, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 9 foreignDoc, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 9 foreignDoc, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 9 foreignDoc, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 9 foreignDoc, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 9 foreignDoc, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 9 foreignDoc, range 13 [document.head, 1, document.head, 1] 
+PASS Node 9 foreignDoc, range 14 [document.body, 4, document.body, 5] 
+PASS Node 9 foreignDoc, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 9 foreignDoc, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 9 foreignDoc, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 9 foreignDoc, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 9 foreignDoc, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 9 foreignDoc, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 9 foreignDoc, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 9 foreignDoc, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 9 foreignDoc, range 23 [document, 0, document, 1] 
+PASS Node 9 foreignDoc, range 24 [document, 0, document, 2] 
+PASS Node 9 foreignDoc, range 25 [comment, 2, comment, 3] 
+PASS Node 9 foreignDoc, range 26 [testDiv, 0, comment, 5] 
+PASS Node 9 foreignDoc, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 9 foreignDoc, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 9 foreignDoc, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 9 foreignDoc, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 9 foreignDoc, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 9 foreignDoc, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 9 foreignDoc, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 9 foreignDoc, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 9 foreignDoc, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 9 foreignDoc, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 9 foreignDoc, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 9 foreignDoc, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 9 foreignDoc, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 9 foreignDoc, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 9 foreignDoc, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 9 foreignDoc, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 9 foreignDoc, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 9 foreignDoc, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 9 foreignDoc, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 9 foreignDoc, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 9 foreignDoc, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 9 foreignDoc, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 9 foreignDoc, range 49 [document, 1, document, 2] 
+PASS Node 9 foreignDoc, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 9 foreignDoc, range 51 [paras[3], 1, comment, 8] 
+PASS Node 9 foreignDoc, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 9 foreignDoc, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 9 foreignDoc, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 9 foreignDoc, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 9 foreignDoc, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 9 foreignDoc, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 9 foreignDoc, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 9 foreignDoc, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 10 foreignPara2, detached range 
+PASS Node 10 foreignPara2, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 10 foreignPara2, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 10 foreignPara2, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 10 foreignPara2, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 10 foreignPara2, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 10 foreignPara2, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 10 foreignPara2, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 10 foreignPara2, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 10 foreignPara2, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 10 foreignPara2, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 10 foreignPara2, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 10 foreignPara2, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 10 foreignPara2, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 10 foreignPara2, range 13 [document.head, 1, document.head, 1] 
+PASS Node 10 foreignPara2, range 14 [document.body, 4, document.body, 5] 
+PASS Node 10 foreignPara2, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 10 foreignPara2, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 10 foreignPara2, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 10 foreignPara2, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 10 foreignPara2, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 10 foreignPara2, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 10 foreignPara2, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 10 foreignPara2, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 10 foreignPara2, range 23 [document, 0, document, 1] 
+PASS Node 10 foreignPara2, range 24 [document, 0, document, 2] 
+PASS Node 10 foreignPara2, range 25 [comment, 2, comment, 3] 
+PASS Node 10 foreignPara2, range 26 [testDiv, 0, comment, 5] 
+PASS Node 10 foreignPara2, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 10 foreignPara2, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 10 foreignPara2, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 10 foreignPara2, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 10 foreignPara2, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 10 foreignPara2, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 10 foreignPara2, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 10 foreignPara2, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 10 foreignPara2, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 10 foreignPara2, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 10 foreignPara2, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 10 foreignPara2, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 10 foreignPara2, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 10 foreignPara2, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 10 foreignPara2, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 10 foreignPara2, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 10 foreignPara2, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 10 foreignPara2, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 10 foreignPara2, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 10 foreignPara2, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 10 foreignPara2, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 10 foreignPara2, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 10 foreignPara2, range 49 [document, 1, document, 2] 
+PASS Node 10 foreignPara2, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 10 foreignPara2, range 51 [paras[3], 1, comment, 8] 
+PASS Node 10 foreignPara2, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 10 foreignPara2, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 10 foreignPara2, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 10 foreignPara2, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 10 foreignPara2, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 10 foreignPara2, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 10 foreignPara2, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 10 foreignPara2, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 11 xmlDoc, detached range 
+PASS Node 11 xmlDoc, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 11 xmlDoc, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 11 xmlDoc, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 11 xmlDoc, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 11 xmlDoc, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 11 xmlDoc, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 11 xmlDoc, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 11 xmlDoc, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 11 xmlDoc, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 11 xmlDoc, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 11 xmlDoc, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 11 xmlDoc, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 11 xmlDoc, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 11 xmlDoc, range 13 [document.head, 1, document.head, 1] 
+PASS Node 11 xmlDoc, range 14 [document.body, 4, document.body, 5] 
+PASS Node 11 xmlDoc, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 11 xmlDoc, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 11 xmlDoc, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 11 xmlDoc, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 11 xmlDoc, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 11 xmlDoc, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 11 xmlDoc, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 11 xmlDoc, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 11 xmlDoc, range 23 [document, 0, document, 1] 
+PASS Node 11 xmlDoc, range 24 [document, 0, document, 2] 
+PASS Node 11 xmlDoc, range 25 [comment, 2, comment, 3] 
+PASS Node 11 xmlDoc, range 26 [testDiv, 0, comment, 5] 
+PASS Node 11 xmlDoc, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 11 xmlDoc, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 11 xmlDoc, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 11 xmlDoc, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 11 xmlDoc, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 11 xmlDoc, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 11 xmlDoc, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 11 xmlDoc, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 11 xmlDoc, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 11 xmlDoc, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 11 xmlDoc, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 11 xmlDoc, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 11 xmlDoc, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 11 xmlDoc, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 11 xmlDoc, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 11 xmlDoc, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 11 xmlDoc, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 11 xmlDoc, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 11 xmlDoc, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 11 xmlDoc, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 11 xmlDoc, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 11 xmlDoc, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 11 xmlDoc, range 49 [document, 1, document, 2] 
+PASS Node 11 xmlDoc, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 11 xmlDoc, range 51 [paras[3], 1, comment, 8] 
+PASS Node 11 xmlDoc, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 11 xmlDoc, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 11 xmlDoc, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 11 xmlDoc, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 11 xmlDoc, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 11 xmlDoc, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 11 xmlDoc, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 11 xmlDoc, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 12 xmlElement, detached range 
+PASS Node 12 xmlElement, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 12 xmlElement, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 12 xmlElement, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 12 xmlElement, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 12 xmlElement, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 12 xmlElement, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 12 xmlElement, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 12 xmlElement, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 12 xmlElement, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 12 xmlElement, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 12 xmlElement, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 12 xmlElement, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 12 xmlElement, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 12 xmlElement, range 13 [document.head, 1, document.head, 1] 
+PASS Node 12 xmlElement, range 14 [document.body, 4, document.body, 5] 
+PASS Node 12 xmlElement, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 12 xmlElement, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 12 xmlElement, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 12 xmlElement, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 12 xmlElement, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 12 xmlElement, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 12 xmlElement, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 12 xmlElement, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 12 xmlElement, range 23 [document, 0, document, 1] 
+PASS Node 12 xmlElement, range 24 [document, 0, document, 2] 
+PASS Node 12 xmlElement, range 25 [comment, 2, comment, 3] 
+PASS Node 12 xmlElement, range 26 [testDiv, 0, comment, 5] 
+PASS Node 12 xmlElement, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 12 xmlElement, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 12 xmlElement, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 12 xmlElement, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 12 xmlElement, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 12 xmlElement, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 12 xmlElement, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 12 xmlElement, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 12 xmlElement, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 12 xmlElement, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 12 xmlElement, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 12 xmlElement, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 12 xmlElement, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 12 xmlElement, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 12 xmlElement, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 12 xmlElement, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 12 xmlElement, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 12 xmlElement, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 12 xmlElement, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 12 xmlElement, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 12 xmlElement, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 12 xmlElement, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 12 xmlElement, range 49 [document, 1, document, 2] 
+PASS Node 12 xmlElement, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 12 xmlElement, range 51 [paras[3], 1, comment, 8] 
+PASS Node 12 xmlElement, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 12 xmlElement, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 12 xmlElement, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 12 xmlElement, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 12 xmlElement, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 12 xmlElement, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 12 xmlElement, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 12 xmlElement, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 13 detachedTextNode, detached range 
+PASS Node 13 detachedTextNode, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 13 detachedTextNode, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 13 detachedTextNode, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 13 detachedTextNode, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 13 detachedTextNode, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 13 detachedTextNode, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 13 detachedTextNode, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 13 detachedTextNode, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 13 detachedTextNode, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 13 detachedTextNode, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 13 detachedTextNode, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 13 detachedTextNode, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 13 detachedTextNode, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 13 detachedTextNode, range 13 [document.head, 1, document.head, 1] 
+PASS Node 13 detachedTextNode, range 14 [document.body, 4, document.body, 5] 
+PASS Node 13 detachedTextNode, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 13 detachedTextNode, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 13 detachedTextNode, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 13 detachedTextNode, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 13 detachedTextNode, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 13 detachedTextNode, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 13 detachedTextNode, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 13 detachedTextNode, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 13 detachedTextNode, range 23 [document, 0, document, 1] 
+PASS Node 13 detachedTextNode, range 24 [document, 0, document, 2] 
+PASS Node 13 detachedTextNode, range 25 [comment, 2, comment, 3] 
+PASS Node 13 detachedTextNode, range 26 [testDiv, 0, comment, 5] 
+PASS Node 13 detachedTextNode, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 13 detachedTextNode, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 13 detachedTextNode, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 13 detachedTextNode, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 13 detachedTextNode, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 13 detachedTextNode, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 13 detachedTextNode, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 13 detachedTextNode, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 13 detachedTextNode, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 13 detachedTextNode, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 13 detachedTextNode, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 13 detachedTextNode, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 13 detachedTextNode, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 13 detachedTextNode, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 13 detachedTextNode, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 13 detachedTextNode, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 13 detachedTextNode, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 13 detachedTextNode, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 13 detachedTextNode, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 13 detachedTextNode, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 13 detachedTextNode, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 13 detachedTextNode, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 13 detachedTextNode, range 49 [document, 1, document, 2] 
+PASS Node 13 detachedTextNode, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 13 detachedTextNode, range 51 [paras[3], 1, comment, 8] 
+PASS Node 13 detachedTextNode, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 13 detachedTextNode, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 13 detachedTextNode, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 13 detachedTextNode, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 13 detachedTextNode, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 13 detachedTextNode, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 13 detachedTextNode, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 13 detachedTextNode, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 14 foreignTextNode, detached range 
+PASS Node 14 foreignTextNode, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 14 foreignTextNode, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 14 foreignTextNode, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 14 foreignTextNode, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 14 foreignTextNode, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 14 foreignTextNode, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 14 foreignTextNode, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 14 foreignTextNode, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 14 foreignTextNode, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 14 foreignTextNode, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 14 foreignTextNode, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 14 foreignTextNode, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 14 foreignTextNode, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 14 foreignTextNode, range 13 [document.head, 1, document.head, 1] 
+PASS Node 14 foreignTextNode, range 14 [document.body, 4, document.body, 5] 
+PASS Node 14 foreignTextNode, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 14 foreignTextNode, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 14 foreignTextNode, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 14 foreignTextNode, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 14 foreignTextNode, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 14 foreignTextNode, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 14 foreignTextNode, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 14 foreignTextNode, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 14 foreignTextNode, range 23 [document, 0, document, 1] 
+PASS Node 14 foreignTextNode, range 24 [document, 0, document, 2] 
+PASS Node 14 foreignTextNode, range 25 [comment, 2, comment, 3] 
+PASS Node 14 foreignTextNode, range 26 [testDiv, 0, comment, 5] 
+PASS Node 14 foreignTextNode, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 14 foreignTextNode, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 14 foreignTextNode, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 14 foreignTextNode, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 14 foreignTextNode, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 14 foreignTextNode, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 14 foreignTextNode, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 14 foreignTextNode, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 14 foreignTextNode, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 14 foreignTextNode, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 14 foreignTextNode, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 14 foreignTextNode, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 14 foreignTextNode, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 14 foreignTextNode, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 14 foreignTextNode, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 14 foreignTextNode, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 14 foreignTextNode, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 14 foreignTextNode, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 14 foreignTextNode, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 14 foreignTextNode, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 14 foreignTextNode, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 14 foreignTextNode, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 14 foreignTextNode, range 49 [document, 1, document, 2] 
+PASS Node 14 foreignTextNode, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 14 foreignTextNode, range 51 [paras[3], 1, comment, 8] 
+PASS Node 14 foreignTextNode, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 14 foreignTextNode, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 14 foreignTextNode, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 14 foreignTextNode, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 14 foreignTextNode, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 14 foreignTextNode, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 14 foreignTextNode, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 14 foreignTextNode, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 15 processingInstruction, detached range 
+PASS Node 15 processingInstruction, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 15 processingInstruction, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 15 processingInstruction, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 15 processingInstruction, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 15 processingInstruction, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 15 processingInstruction, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 15 processingInstruction, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 15 processingInstruction, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 15 processingInstruction, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 15 processingInstruction, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 15 processingInstruction, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 15 processingInstruction, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 15 processingInstruction, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 15 processingInstruction, range 13 [document.head, 1, document.head, 1] 
+PASS Node 15 processingInstruction, range 14 [document.body, 4, document.body, 5] 
+PASS Node 15 processingInstruction, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 15 processingInstruction, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 15 processingInstruction, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 15 processingInstruction, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 15 processingInstruction, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 15 processingInstruction, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 15 processingInstruction, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 15 processingInstruction, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 15 processingInstruction, range 23 [document, 0, document, 1] 
+PASS Node 15 processingInstruction, range 24 [document, 0, document, 2] 
+PASS Node 15 processingInstruction, range 25 [comment, 2, comment, 3] 
+PASS Node 15 processingInstruction, range 26 [testDiv, 0, comment, 5] 
+PASS Node 15 processingInstruction, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 15 processingInstruction, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 15 processingInstruction, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 15 processingInstruction, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 15 processingInstruction, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 15 processingInstruction, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 15 processingInstruction, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 15 processingInstruction, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 15 processingInstruction, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 15 processingInstruction, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 15 processingInstruction, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 15 processingInstruction, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 15 processingInstruction, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 15 processingInstruction, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 15 processingInstruction, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 15 processingInstruction, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 15 processingInstruction, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 15 processingInstruction, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 15 processingInstruction, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 15 processingInstruction, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 15 processingInstruction, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 15 processingInstruction, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 15 processingInstruction, range 49 [document, 1, document, 2] 
+PASS Node 15 processingInstruction, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 15 processingInstruction, range 51 [paras[3], 1, comment, 8] 
+PASS Node 15 processingInstruction, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 15 processingInstruction, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 15 processingInstruction, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 15 processingInstruction, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 15 processingInstruction, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 15 processingInstruction, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 15 processingInstruction, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 15 processingInstruction, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 16 detachedProcessingInstruction, detached range 
+PASS Node 16 detachedProcessingInstruction, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 16 detachedProcessingInstruction, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 16 detachedProcessingInstruction, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 16 detachedProcessingInstruction, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 16 detachedProcessingInstruction, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 16 detachedProcessingInstruction, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 16 detachedProcessingInstruction, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 16 detachedProcessingInstruction, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 16 detachedProcessingInstruction, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 16 detachedProcessingInstruction, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 16 detachedProcessingInstruction, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 16 detachedProcessingInstruction, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 16 detachedProcessingInstruction, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 16 detachedProcessingInstruction, range 13 [document.head, 1, document.head, 1] 
+PASS Node 16 detachedProcessingInstruction, range 14 [document.body, 4, document.body, 5] 
+PASS Node 16 detachedProcessingInstruction, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 16 detachedProcessingInstruction, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 16 detachedProcessingInstruction, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 16 detachedProcessingInstruction, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 16 detachedProcessingInstruction, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 16 detachedProcessingInstruction, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 16 detachedProcessingInstruction, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 16 detachedProcessingInstruction, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 16 detachedProcessingInstruction, range 23 [document, 0, document, 1] 
+PASS Node 16 detachedProcessingInstruction, range 24 [document, 0, document, 2] 
+PASS Node 16 detachedProcessingInstruction, range 25 [comment, 2, comment, 3] 
+PASS Node 16 detachedProcessingInstruction, range 26 [testDiv, 0, comment, 5] 
+PASS Node 16 detachedProcessingInstruction, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 16 detachedProcessingInstruction, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 16 detachedProcessingInstruction, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 16 detachedProcessingInstruction, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 16 detachedProcessingInstruction, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 16 detachedProcessingInstruction, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 16 detachedProcessingInstruction, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 16 detachedProcessingInstruction, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 16 detachedProcessingInstruction, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 16 detachedProcessingInstruction, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 16 detachedProcessingInstruction, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 16 detachedProcessingInstruction, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 16 detachedProcessingInstruction, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 16 detachedProcessingInstruction, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 16 detachedProcessingInstruction, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 16 detachedProcessingInstruction, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 16 detachedProcessingInstruction, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 16 detachedProcessingInstruction, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 16 detachedProcessingInstruction, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 16 detachedProcessingInstruction, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 16 detachedProcessingInstruction, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 16 detachedProcessingInstruction, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 16 detachedProcessingInstruction, range 49 [document, 1, document, 2] 
+PASS Node 16 detachedProcessingInstruction, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 16 detachedProcessingInstruction, range 51 [paras[3], 1, comment, 8] 
+PASS Node 16 detachedProcessingInstruction, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 16 detachedProcessingInstruction, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 16 detachedProcessingInstruction, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 16 detachedProcessingInstruction, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 16 detachedProcessingInstruction, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 16 detachedProcessingInstruction, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 16 detachedProcessingInstruction, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 16 detachedProcessingInstruction, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 17 comment, detached range 
+PASS Node 17 comment, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 17 comment, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 17 comment, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 17 comment, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 17 comment, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 17 comment, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 17 comment, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 17 comment, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 17 comment, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 17 comment, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 17 comment, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 17 comment, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 17 comment, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 17 comment, range 13 [document.head, 1, document.head, 1] 
+PASS Node 17 comment, range 14 [document.body, 4, document.body, 5] 
+PASS Node 17 comment, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 17 comment, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 17 comment, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 17 comment, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 17 comment, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 17 comment, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 17 comment, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 17 comment, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 17 comment, range 23 [document, 0, document, 1] 
+PASS Node 17 comment, range 24 [document, 0, document, 2] 
+PASS Node 17 comment, range 25 [comment, 2, comment, 3] 
+PASS Node 17 comment, range 26 [testDiv, 0, comment, 5] 
+PASS Node 17 comment, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 17 comment, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 17 comment, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 17 comment, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 17 comment, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 17 comment, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 17 comment, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 17 comment, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 17 comment, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 17 comment, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 17 comment, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 17 comment, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 17 comment, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 17 comment, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 17 comment, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 17 comment, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 17 comment, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 17 comment, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 17 comment, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 17 comment, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 17 comment, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 17 comment, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 17 comment, range 49 [document, 1, document, 2] 
+PASS Node 17 comment, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 17 comment, range 51 [paras[3], 1, comment, 8] 
+PASS Node 17 comment, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 17 comment, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 17 comment, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 17 comment, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 17 comment, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 17 comment, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 17 comment, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 17 comment, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 18 detachedComment, detached range 
+PASS Node 18 detachedComment, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 18 detachedComment, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 18 detachedComment, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 18 detachedComment, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 18 detachedComment, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 18 detachedComment, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 18 detachedComment, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 18 detachedComment, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 18 detachedComment, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 18 detachedComment, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 18 detachedComment, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 18 detachedComment, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 18 detachedComment, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 18 detachedComment, range 13 [document.head, 1, document.head, 1] 
+PASS Node 18 detachedComment, range 14 [document.body, 4, document.body, 5] 
+PASS Node 18 detachedComment, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 18 detachedComment, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 18 detachedComment, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 18 detachedComment, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 18 detachedComment, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 18 detachedComment, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 18 detachedComment, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 18 detachedComment, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 18 detachedComment, range 23 [document, 0, document, 1] 
+PASS Node 18 detachedComment, range 24 [document, 0, document, 2] 
+PASS Node 18 detachedComment, range 25 [comment, 2, comment, 3] 
+PASS Node 18 detachedComment, range 26 [testDiv, 0, comment, 5] 
+PASS Node 18 detachedComment, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 18 detachedComment, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 18 detachedComment, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 18 detachedComment, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 18 detachedComment, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 18 detachedComment, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 18 detachedComment, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 18 detachedComment, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 18 detachedComment, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 18 detachedComment, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 18 detachedComment, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 18 detachedComment, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 18 detachedComment, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 18 detachedComment, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 18 detachedComment, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 18 detachedComment, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 18 detachedComment, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 18 detachedComment, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 18 detachedComment, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 18 detachedComment, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 18 detachedComment, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 18 detachedComment, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 18 detachedComment, range 49 [document, 1, document, 2] 
+PASS Node 18 detachedComment, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 18 detachedComment, range 51 [paras[3], 1, comment, 8] 
+PASS Node 18 detachedComment, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 18 detachedComment, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 18 detachedComment, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 18 detachedComment, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 18 detachedComment, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 18 detachedComment, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 18 detachedComment, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 18 detachedComment, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 19 docfrag, detached range 
+PASS Node 19 docfrag, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 19 docfrag, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 19 docfrag, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 19 docfrag, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 19 docfrag, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 19 docfrag, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 19 docfrag, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 19 docfrag, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 19 docfrag, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 19 docfrag, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 19 docfrag, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 19 docfrag, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 19 docfrag, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 19 docfrag, range 13 [document.head, 1, document.head, 1] 
+PASS Node 19 docfrag, range 14 [document.body, 4, document.body, 5] 
+PASS Node 19 docfrag, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 19 docfrag, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 19 docfrag, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 19 docfrag, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 19 docfrag, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 19 docfrag, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 19 docfrag, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 19 docfrag, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 19 docfrag, range 23 [document, 0, document, 1] 
+PASS Node 19 docfrag, range 24 [document, 0, document, 2] 
+PASS Node 19 docfrag, range 25 [comment, 2, comment, 3] 
+PASS Node 19 docfrag, range 26 [testDiv, 0, comment, 5] 
+PASS Node 19 docfrag, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 19 docfrag, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 19 docfrag, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 19 docfrag, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 19 docfrag, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 19 docfrag, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 19 docfrag, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 19 docfrag, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 19 docfrag, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 19 docfrag, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 19 docfrag, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 19 docfrag, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 19 docfrag, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 19 docfrag, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 19 docfrag, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 19 docfrag, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 19 docfrag, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 19 docfrag, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 19 docfrag, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 19 docfrag, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 19 docfrag, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 19 docfrag, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 19 docfrag, range 49 [document, 1, document, 2] 
+PASS Node 19 docfrag, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 19 docfrag, range 51 [paras[3], 1, comment, 8] 
+PASS Node 19 docfrag, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 19 docfrag, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 19 docfrag, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 19 docfrag, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 19 docfrag, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 19 docfrag, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 19 docfrag, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 19 docfrag, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+FAIL Node 20 doctype, detached range assert_equals: expected false but got true
+PASS Node 20 doctype, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 20 doctype, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 20 doctype, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 20 doctype, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 20 doctype, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 20 doctype, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 20 doctype, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 20 doctype, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 20 doctype, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 20 doctype, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 20 doctype, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 20 doctype, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 20 doctype, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 20 doctype, range 13 [document.head, 1, document.head, 1] 
+PASS Node 20 doctype, range 14 [document.body, 4, document.body, 5] 
+PASS Node 20 doctype, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 20 doctype, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 20 doctype, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 20 doctype, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 20 doctype, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 20 doctype, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 20 doctype, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 20 doctype, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 20 doctype, range 23 [document, 0, document, 1] 
+PASS Node 20 doctype, range 24 [document, 0, document, 2] 
+PASS Node 20 doctype, range 25 [comment, 2, comment, 3] 
+PASS Node 20 doctype, range 26 [testDiv, 0, comment, 5] 
+PASS Node 20 doctype, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 20 doctype, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 20 doctype, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 20 doctype, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 20 doctype, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 20 doctype, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 20 doctype, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 20 doctype, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 20 doctype, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 20 doctype, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 20 doctype, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 20 doctype, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 20 doctype, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 20 doctype, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 20 doctype, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 20 doctype, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 20 doctype, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 20 doctype, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 20 doctype, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 20 doctype, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 20 doctype, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 20 doctype, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 20 doctype, range 49 [document, 1, document, 2] 
+PASS Node 20 doctype, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 20 doctype, range 51 [paras[3], 1, comment, 8] 
+PASS Node 20 doctype, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 20 doctype, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 20 doctype, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 20 doctype, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 20 doctype, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 20 doctype, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 20 doctype, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 20 doctype, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 21 foreignDoctype, detached range 
+PASS Node 21 foreignDoctype, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 21 foreignDoctype, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 21 foreignDoctype, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 21 foreignDoctype, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 21 foreignDoctype, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 21 foreignDoctype, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 21 foreignDoctype, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 21 foreignDoctype, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 21 foreignDoctype, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 21 foreignDoctype, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 21 foreignDoctype, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 21 foreignDoctype, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 21 foreignDoctype, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 21 foreignDoctype, range 13 [document.head, 1, document.head, 1] 
+PASS Node 21 foreignDoctype, range 14 [document.body, 4, document.body, 5] 
+PASS Node 21 foreignDoctype, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 21 foreignDoctype, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 21 foreignDoctype, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 21 foreignDoctype, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 21 foreignDoctype, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 21 foreignDoctype, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 21 foreignDoctype, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 21 foreignDoctype, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 21 foreignDoctype, range 23 [document, 0, document, 1] 
+PASS Node 21 foreignDoctype, range 24 [document, 0, document, 2] 
+PASS Node 21 foreignDoctype, range 25 [comment, 2, comment, 3] 
+PASS Node 21 foreignDoctype, range 26 [testDiv, 0, comment, 5] 
+PASS Node 21 foreignDoctype, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 21 foreignDoctype, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 21 foreignDoctype, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 21 foreignDoctype, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 21 foreignDoctype, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 21 foreignDoctype, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 21 foreignDoctype, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 21 foreignDoctype, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 21 foreignDoctype, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 21 foreignDoctype, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 21 foreignDoctype, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 21 foreignDoctype, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 21 foreignDoctype, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 21 foreignDoctype, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 21 foreignDoctype, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 21 foreignDoctype, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 21 foreignDoctype, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 21 foreignDoctype, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 21 foreignDoctype, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 21 foreignDoctype, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 21 foreignDoctype, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 21 foreignDoctype, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 21 foreignDoctype, range 49 [document, 1, document, 2] 
+PASS Node 21 foreignDoctype, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 21 foreignDoctype, range 51 [paras[3], 1, comment, 8] 
+PASS Node 21 foreignDoctype, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 21 foreignDoctype, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 21 foreignDoctype, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 21 foreignDoctype, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 21 foreignDoctype, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 21 foreignDoctype, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 21 foreignDoctype, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 21 foreignDoctype, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 22 paras[1], detached range 
+PASS Node 22 paras[1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 22 paras[1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 22 paras[1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 22 paras[1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 22 paras[1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 22 paras[1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 22 paras[1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 22 paras[1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 22 paras[1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 22 paras[1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 22 paras[1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 22 paras[1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 22 paras[1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 22 paras[1], range 13 [document.head, 1, document.head, 1] 
+PASS Node 22 paras[1], range 14 [document.body, 4, document.body, 5] 
+PASS Node 22 paras[1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 22 paras[1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 22 paras[1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 22 paras[1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 22 paras[1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 22 paras[1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 22 paras[1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 22 paras[1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 22 paras[1], range 23 [document, 0, document, 1] 
+PASS Node 22 paras[1], range 24 [document, 0, document, 2] 
+PASS Node 22 paras[1], range 25 [comment, 2, comment, 3] 
+PASS Node 22 paras[1], range 26 [testDiv, 0, comment, 5] 
+PASS Node 22 paras[1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 22 paras[1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 22 paras[1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 22 paras[1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 22 paras[1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 22 paras[1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 22 paras[1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 22 paras[1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 22 paras[1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 22 paras[1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 22 paras[1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 22 paras[1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 22 paras[1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 22 paras[1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 22 paras[1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 22 paras[1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 22 paras[1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 22 paras[1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 22 paras[1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 22 paras[1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 22 paras[1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 22 paras[1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 22 paras[1], range 49 [document, 1, document, 2] 
+PASS Node 22 paras[1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 22 paras[1], range 51 [paras[3], 1, comment, 8] 
+PASS Node 22 paras[1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 22 paras[1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 22 paras[1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 22 paras[1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 22 paras[1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 22 paras[1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 22 paras[1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 22 paras[1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 23 detachedPara2, detached range 
+PASS Node 23 detachedPara2, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 23 detachedPara2, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 23 detachedPara2, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 23 detachedPara2, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 23 detachedPara2, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 23 detachedPara2, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 23 detachedPara2, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 23 detachedPara2, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 23 detachedPara2, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 23 detachedPara2, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 23 detachedPara2, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 23 detachedPara2, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 23 detachedPara2, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 23 detachedPara2, range 13 [document.head, 1, document.head, 1] 
+PASS Node 23 detachedPara2, range 14 [document.body, 4, document.body, 5] 
+PASS Node 23 detachedPara2, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 23 detachedPara2, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 23 detachedPara2, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 23 detachedPara2, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 23 detachedPara2, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 23 detachedPara2, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 23 detachedPara2, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 23 detachedPara2, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 23 detachedPara2, range 23 [document, 0, document, 1] 
+PASS Node 23 detachedPara2, range 24 [document, 0, document, 2] 
+PASS Node 23 detachedPara2, range 25 [comment, 2, comment, 3] 
+PASS Node 23 detachedPara2, range 26 [testDiv, 0, comment, 5] 
+PASS Node 23 detachedPara2, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 23 detachedPara2, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 23 detachedPara2, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 23 detachedPara2, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 23 detachedPara2, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 23 detachedPara2, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 23 detachedPara2, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 23 detachedPara2, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 23 detachedPara2, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 23 detachedPara2, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 23 detachedPara2, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 23 detachedPara2, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 23 detachedPara2, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 23 detachedPara2, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 23 detachedPara2, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 23 detachedPara2, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 23 detachedPara2, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 23 detachedPara2, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 23 detachedPara2, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 23 detachedPara2, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 23 detachedPara2, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 23 detachedPara2, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 23 detachedPara2, range 49 [document, 1, document, 2] 
+PASS Node 23 detachedPara2, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 23 detachedPara2, range 51 [paras[3], 1, comment, 8] 
+PASS Node 23 detachedPara2, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 23 detachedPara2, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 23 detachedPara2, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 23 detachedPara2, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 23 detachedPara2, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 23 detachedPara2, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 23 detachedPara2, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 23 detachedPara2, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 24 detachedPara2.firstChild, detached range 
+PASS Node 24 detachedPara2.firstChild, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 24 detachedPara2.firstChild, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 24 detachedPara2.firstChild, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 24 detachedPara2.firstChild, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 24 detachedPara2.firstChild, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 24 detachedPara2.firstChild, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 24 detachedPara2.firstChild, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 24 detachedPara2.firstChild, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 24 detachedPara2.firstChild, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 24 detachedPara2.firstChild, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 24 detachedPara2.firstChild, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 24 detachedPara2.firstChild, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 24 detachedPara2.firstChild, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 24 detachedPara2.firstChild, range 13 [document.head, 1, document.head, 1] 
+PASS Node 24 detachedPara2.firstChild, range 14 [document.body, 4, document.body, 5] 
+PASS Node 24 detachedPara2.firstChild, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 24 detachedPara2.firstChild, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 24 detachedPara2.firstChild, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 24 detachedPara2.firstChild, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 24 detachedPara2.firstChild, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 24 detachedPara2.firstChild, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 24 detachedPara2.firstChild, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 24 detachedPara2.firstChild, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 24 detachedPara2.firstChild, range 23 [document, 0, document, 1] 
+PASS Node 24 detachedPara2.firstChild, range 24 [document, 0, document, 2] 
+PASS Node 24 detachedPara2.firstChild, range 25 [comment, 2, comment, 3] 
+PASS Node 24 detachedPara2.firstChild, range 26 [testDiv, 0, comment, 5] 
+PASS Node 24 detachedPara2.firstChild, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 24 detachedPara2.firstChild, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 24 detachedPara2.firstChild, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 24 detachedPara2.firstChild, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 24 detachedPara2.firstChild, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 24 detachedPara2.firstChild, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 24 detachedPara2.firstChild, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 24 detachedPara2.firstChild, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 24 detachedPara2.firstChild, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 24 detachedPara2.firstChild, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 24 detachedPara2.firstChild, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 24 detachedPara2.firstChild, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 24 detachedPara2.firstChild, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 24 detachedPara2.firstChild, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 24 detachedPara2.firstChild, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 24 detachedPara2.firstChild, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 24 detachedPara2.firstChild, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 24 detachedPara2.firstChild, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 24 detachedPara2.firstChild, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 24 detachedPara2.firstChild, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 24 detachedPara2.firstChild, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 24 detachedPara2.firstChild, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 24 detachedPara2.firstChild, range 49 [document, 1, document, 2] 
+PASS Node 24 detachedPara2.firstChild, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 24 detachedPara2.firstChild, range 51 [paras[3], 1, comment, 8] 
+PASS Node 24 detachedPara2.firstChild, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 24 detachedPara2.firstChild, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 24 detachedPara2.firstChild, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 24 detachedPara2.firstChild, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 24 detachedPara2.firstChild, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 24 detachedPara2.firstChild, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 24 detachedPara2.firstChild, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 24 detachedPara2.firstChild, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 25 testDiv, detached range 
+PASS Node 25 testDiv, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 25 testDiv, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 25 testDiv, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 25 testDiv, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 25 testDiv, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 25 testDiv, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 25 testDiv, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 25 testDiv, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 25 testDiv, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 25 testDiv, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 25 testDiv, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 25 testDiv, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 25 testDiv, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 25 testDiv, range 13 [document.head, 1, document.head, 1] 
+PASS Node 25 testDiv, range 14 [document.body, 4, document.body, 5] 
+PASS Node 25 testDiv, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 25 testDiv, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 25 testDiv, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 25 testDiv, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 25 testDiv, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 25 testDiv, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 25 testDiv, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 25 testDiv, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 25 testDiv, range 23 [document, 0, document, 1] 
+PASS Node 25 testDiv, range 24 [document, 0, document, 2] 
+PASS Node 25 testDiv, range 25 [comment, 2, comment, 3] 
+PASS Node 25 testDiv, range 26 [testDiv, 0, comment, 5] 
+PASS Node 25 testDiv, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 25 testDiv, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 25 testDiv, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 25 testDiv, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 25 testDiv, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 25 testDiv, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 25 testDiv, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 25 testDiv, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 25 testDiv, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 25 testDiv, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 25 testDiv, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 25 testDiv, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 25 testDiv, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 25 testDiv, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 25 testDiv, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 25 testDiv, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 25 testDiv, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 25 testDiv, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 25 testDiv, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 25 testDiv, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 25 testDiv, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 25 testDiv, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 25 testDiv, range 49 [document, 1, document, 2] 
+PASS Node 25 testDiv, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 25 testDiv, range 51 [paras[3], 1, comment, 8] 
+PASS Node 25 testDiv, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 25 testDiv, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 25 testDiv, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 25 testDiv, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 25 testDiv, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 25 testDiv, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 25 testDiv, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 25 testDiv, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 26 detachedXmlElement, detached range 
+PASS Node 26 detachedXmlElement, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 26 detachedXmlElement, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 26 detachedXmlElement, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 26 detachedXmlElement, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 26 detachedXmlElement, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 26 detachedXmlElement, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 26 detachedXmlElement, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 26 detachedXmlElement, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 26 detachedXmlElement, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 26 detachedXmlElement, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 26 detachedXmlElement, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 26 detachedXmlElement, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 26 detachedXmlElement, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 26 detachedXmlElement, range 13 [document.head, 1, document.head, 1] 
+PASS Node 26 detachedXmlElement, range 14 [document.body, 4, document.body, 5] 
+PASS Node 26 detachedXmlElement, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 26 detachedXmlElement, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 26 detachedXmlElement, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 26 detachedXmlElement, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 26 detachedXmlElement, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 26 detachedXmlElement, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 26 detachedXmlElement, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 26 detachedXmlElement, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 26 detachedXmlElement, range 23 [document, 0, document, 1] 
+PASS Node 26 detachedXmlElement, range 24 [document, 0, document, 2] 
+PASS Node 26 detachedXmlElement, range 25 [comment, 2, comment, 3] 
+PASS Node 26 detachedXmlElement, range 26 [testDiv, 0, comment, 5] 
+PASS Node 26 detachedXmlElement, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 26 detachedXmlElement, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 26 detachedXmlElement, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 26 detachedXmlElement, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 26 detachedXmlElement, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 26 detachedXmlElement, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 26 detachedXmlElement, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 26 detachedXmlElement, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 26 detachedXmlElement, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 26 detachedXmlElement, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 26 detachedXmlElement, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 26 detachedXmlElement, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 26 detachedXmlElement, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 26 detachedXmlElement, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 26 detachedXmlElement, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 26 detachedXmlElement, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 26 detachedXmlElement, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 26 detachedXmlElement, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 26 detachedXmlElement, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 26 detachedXmlElement, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 26 detachedXmlElement, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 26 detachedXmlElement, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 26 detachedXmlElement, range 49 [document, 1, document, 2] 
+PASS Node 26 detachedXmlElement, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 26 detachedXmlElement, range 51 [paras[3], 1, comment, 8] 
+PASS Node 26 detachedXmlElement, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 26 detachedXmlElement, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 26 detachedXmlElement, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 26 detachedXmlElement, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 26 detachedXmlElement, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 26 detachedXmlElement, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 26 detachedXmlElement, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 26 detachedXmlElement, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 27 detachedForeignTextNode, detached range 
+PASS Node 27 detachedForeignTextNode, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 27 detachedForeignTextNode, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 27 detachedForeignTextNode, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 27 detachedForeignTextNode, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 27 detachedForeignTextNode, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 27 detachedForeignTextNode, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 27 detachedForeignTextNode, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 27 detachedForeignTextNode, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 27 detachedForeignTextNode, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 27 detachedForeignTextNode, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 27 detachedForeignTextNode, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 27 detachedForeignTextNode, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 27 detachedForeignTextNode, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 27 detachedForeignTextNode, range 13 [document.head, 1, document.head, 1] 
+PASS Node 27 detachedForeignTextNode, range 14 [document.body, 4, document.body, 5] 
+PASS Node 27 detachedForeignTextNode, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 27 detachedForeignTextNode, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 27 detachedForeignTextNode, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 27 detachedForeignTextNode, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 27 detachedForeignTextNode, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 27 detachedForeignTextNode, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 27 detachedForeignTextNode, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 27 detachedForeignTextNode, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 27 detachedForeignTextNode, range 23 [document, 0, document, 1] 
+PASS Node 27 detachedForeignTextNode, range 24 [document, 0, document, 2] 
+PASS Node 27 detachedForeignTextNode, range 25 [comment, 2, comment, 3] 
+PASS Node 27 detachedForeignTextNode, range 26 [testDiv, 0, comment, 5] 
+PASS Node 27 detachedForeignTextNode, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 27 detachedForeignTextNode, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 27 detachedForeignTextNode, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 27 detachedForeignTextNode, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 27 detachedForeignTextNode, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 27 detachedForeignTextNode, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 27 detachedForeignTextNode, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 27 detachedForeignTextNode, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 27 detachedForeignTextNode, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 27 detachedForeignTextNode, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 27 detachedForeignTextNode, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 27 detachedForeignTextNode, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 27 detachedForeignTextNode, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 27 detachedForeignTextNode, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 27 detachedForeignTextNode, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 27 detachedForeignTextNode, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 27 detachedForeignTextNode, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 27 detachedForeignTextNode, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 27 detachedForeignTextNode, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 27 detachedForeignTextNode, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 27 detachedForeignTextNode, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 27 detachedForeignTextNode, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 27 detachedForeignTextNode, range 49 [document, 1, document, 2] 
+PASS Node 27 detachedForeignTextNode, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 27 detachedForeignTextNode, range 51 [paras[3], 1, comment, 8] 
+PASS Node 27 detachedForeignTextNode, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 27 detachedForeignTextNode, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 27 detachedForeignTextNode, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 27 detachedForeignTextNode, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 27 detachedForeignTextNode, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 27 detachedForeignTextNode, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 27 detachedForeignTextNode, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 27 detachedForeignTextNode, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 28 xmlTextNode, detached range 
+PASS Node 28 xmlTextNode, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 28 xmlTextNode, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 28 xmlTextNode, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 28 xmlTextNode, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 28 xmlTextNode, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 28 xmlTextNode, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 28 xmlTextNode, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 28 xmlTextNode, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 28 xmlTextNode, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 28 xmlTextNode, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 28 xmlTextNode, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 28 xmlTextNode, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 28 xmlTextNode, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 28 xmlTextNode, range 13 [document.head, 1, document.head, 1] 
+PASS Node 28 xmlTextNode, range 14 [document.body, 4, document.body, 5] 
+PASS Node 28 xmlTextNode, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 28 xmlTextNode, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 28 xmlTextNode, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 28 xmlTextNode, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 28 xmlTextNode, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 28 xmlTextNode, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 28 xmlTextNode, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 28 xmlTextNode, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 28 xmlTextNode, range 23 [document, 0, document, 1] 
+PASS Node 28 xmlTextNode, range 24 [document, 0, document, 2] 
+PASS Node 28 xmlTextNode, range 25 [comment, 2, comment, 3] 
+PASS Node 28 xmlTextNode, range 26 [testDiv, 0, comment, 5] 
+PASS Node 28 xmlTextNode, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 28 xmlTextNode, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 28 xmlTextNode, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 28 xmlTextNode, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 28 xmlTextNode, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 28 xmlTextNode, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 28 xmlTextNode, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 28 xmlTextNode, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 28 xmlTextNode, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 28 xmlTextNode, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 28 xmlTextNode, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 28 xmlTextNode, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 28 xmlTextNode, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 28 xmlTextNode, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 28 xmlTextNode, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 28 xmlTextNode, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 28 xmlTextNode, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 28 xmlTextNode, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 28 xmlTextNode, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 28 xmlTextNode, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 28 xmlTextNode, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 28 xmlTextNode, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 28 xmlTextNode, range 49 [document, 1, document, 2] 
+PASS Node 28 xmlTextNode, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 28 xmlTextNode, range 51 [paras[3], 1, comment, 8] 
+PASS Node 28 xmlTextNode, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 28 xmlTextNode, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 28 xmlTextNode, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 28 xmlTextNode, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 28 xmlTextNode, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 28 xmlTextNode, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 28 xmlTextNode, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 28 xmlTextNode, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 29 detachedXmlTextNode, detached range 
+PASS Node 29 detachedXmlTextNode, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 29 detachedXmlTextNode, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 29 detachedXmlTextNode, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 29 detachedXmlTextNode, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 29 detachedXmlTextNode, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 29 detachedXmlTextNode, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 29 detachedXmlTextNode, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 29 detachedXmlTextNode, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 29 detachedXmlTextNode, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 29 detachedXmlTextNode, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 29 detachedXmlTextNode, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 29 detachedXmlTextNode, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 29 detachedXmlTextNode, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 29 detachedXmlTextNode, range 13 [document.head, 1, document.head, 1] 
+PASS Node 29 detachedXmlTextNode, range 14 [document.body, 4, document.body, 5] 
+PASS Node 29 detachedXmlTextNode, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 29 detachedXmlTextNode, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 29 detachedXmlTextNode, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 29 detachedXmlTextNode, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 29 detachedXmlTextNode, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 29 detachedXmlTextNode, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 29 detachedXmlTextNode, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 29 detachedXmlTextNode, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 29 detachedXmlTextNode, range 23 [document, 0, document, 1] 
+PASS Node 29 detachedXmlTextNode, range 24 [document, 0, document, 2] 
+PASS Node 29 detachedXmlTextNode, range 25 [comment, 2, comment, 3] 
+PASS Node 29 detachedXmlTextNode, range 26 [testDiv, 0, comment, 5] 
+PASS Node 29 detachedXmlTextNode, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 29 detachedXmlTextNode, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 29 detachedXmlTextNode, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 29 detachedXmlTextNode, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 29 detachedXmlTextNode, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 29 detachedXmlTextNode, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 29 detachedXmlTextNode, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 29 detachedXmlTextNode, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 29 detachedXmlTextNode, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 29 detachedXmlTextNode, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 29 detachedXmlTextNode, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 29 detachedXmlTextNode, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 29 detachedXmlTextNode, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 29 detachedXmlTextNode, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 29 detachedXmlTextNode, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 29 detachedXmlTextNode, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 29 detachedXmlTextNode, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 29 detachedXmlTextNode, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 29 detachedXmlTextNode, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 29 detachedXmlTextNode, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 29 detachedXmlTextNode, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 29 detachedXmlTextNode, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 29 detachedXmlTextNode, range 49 [document, 1, document, 2] 
+PASS Node 29 detachedXmlTextNode, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 29 detachedXmlTextNode, range 51 [paras[3], 1, comment, 8] 
+PASS Node 29 detachedXmlTextNode, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 29 detachedXmlTextNode, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 29 detachedXmlTextNode, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 29 detachedXmlTextNode, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 29 detachedXmlTextNode, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 29 detachedXmlTextNode, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 29 detachedXmlTextNode, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 29 detachedXmlTextNode, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 30 xmlComment, detached range 
+PASS Node 30 xmlComment, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 30 xmlComment, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 30 xmlComment, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 30 xmlComment, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 30 xmlComment, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 30 xmlComment, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 30 xmlComment, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 30 xmlComment, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 30 xmlComment, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 30 xmlComment, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 30 xmlComment, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 30 xmlComment, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 30 xmlComment, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 30 xmlComment, range 13 [document.head, 1, document.head, 1] 
+PASS Node 30 xmlComment, range 14 [document.body, 4, document.body, 5] 
+PASS Node 30 xmlComment, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 30 xmlComment, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 30 xmlComment, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 30 xmlComment, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 30 xmlComment, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 30 xmlComment, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 30 xmlComment, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 30 xmlComment, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 30 xmlComment, range 23 [document, 0, document, 1] 
+PASS Node 30 xmlComment, range 24 [document, 0, document, 2] 
+PASS Node 30 xmlComment, range 25 [comment, 2, comment, 3] 
+PASS Node 30 xmlComment, range 26 [testDiv, 0, comment, 5] 
+PASS Node 30 xmlComment, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 30 xmlComment, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 30 xmlComment, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 30 xmlComment, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 30 xmlComment, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 30 xmlComment, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 30 xmlComment, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 30 xmlComment, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 30 xmlComment, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 30 xmlComment, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 30 xmlComment, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 30 xmlComment, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 30 xmlComment, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 30 xmlComment, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 30 xmlComment, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 30 xmlComment, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 30 xmlComment, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 30 xmlComment, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 30 xmlComment, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 30 xmlComment, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 30 xmlComment, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 30 xmlComment, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 30 xmlComment, range 49 [document, 1, document, 2] 
+PASS Node 30 xmlComment, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 30 xmlComment, range 51 [paras[3], 1, comment, 8] 
+PASS Node 30 xmlComment, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 30 xmlComment, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 30 xmlComment, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 30 xmlComment, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 30 xmlComment, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 30 xmlComment, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 30 xmlComment, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 30 xmlComment, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 31 foreignComment, detached range 
+PASS Node 31 foreignComment, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 31 foreignComment, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 31 foreignComment, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 31 foreignComment, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 31 foreignComment, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 31 foreignComment, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 31 foreignComment, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 31 foreignComment, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 31 foreignComment, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 31 foreignComment, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 31 foreignComment, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 31 foreignComment, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 31 foreignComment, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 31 foreignComment, range 13 [document.head, 1, document.head, 1] 
+PASS Node 31 foreignComment, range 14 [document.body, 4, document.body, 5] 
+PASS Node 31 foreignComment, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 31 foreignComment, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 31 foreignComment, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 31 foreignComment, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 31 foreignComment, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 31 foreignComment, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 31 foreignComment, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 31 foreignComment, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 31 foreignComment, range 23 [document, 0, document, 1] 
+PASS Node 31 foreignComment, range 24 [document, 0, document, 2] 
+PASS Node 31 foreignComment, range 25 [comment, 2, comment, 3] 
+PASS Node 31 foreignComment, range 26 [testDiv, 0, comment, 5] 
+PASS Node 31 foreignComment, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 31 foreignComment, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 31 foreignComment, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 31 foreignComment, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 31 foreignComment, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 31 foreignComment, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 31 foreignComment, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 31 foreignComment, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 31 foreignComment, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 31 foreignComment, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 31 foreignComment, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 31 foreignComment, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 31 foreignComment, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 31 foreignComment, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 31 foreignComment, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 31 foreignComment, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 31 foreignComment, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 31 foreignComment, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 31 foreignComment, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 31 foreignComment, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 31 foreignComment, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 31 foreignComment, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 31 foreignComment, range 49 [document, 1, document, 2] 
+PASS Node 31 foreignComment, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 31 foreignComment, range 51 [paras[3], 1, comment, 8] 
+PASS Node 31 foreignComment, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 31 foreignComment, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 31 foreignComment, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 31 foreignComment, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 31 foreignComment, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 31 foreignComment, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 31 foreignComment, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 31 foreignComment, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 32 detachedForeignComment, detached range 
+PASS Node 32 detachedForeignComment, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 32 detachedForeignComment, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 32 detachedForeignComment, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 32 detachedForeignComment, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 32 detachedForeignComment, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 32 detachedForeignComment, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 32 detachedForeignComment, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 32 detachedForeignComment, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 32 detachedForeignComment, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 32 detachedForeignComment, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 32 detachedForeignComment, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 32 detachedForeignComment, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 32 detachedForeignComment, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 32 detachedForeignComment, range 13 [document.head, 1, document.head, 1] 
+PASS Node 32 detachedForeignComment, range 14 [document.body, 4, document.body, 5] 
+PASS Node 32 detachedForeignComment, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 32 detachedForeignComment, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 32 detachedForeignComment, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 32 detachedForeignComment, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 32 detachedForeignComment, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 32 detachedForeignComment, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 32 detachedForeignComment, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 32 detachedForeignComment, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 32 detachedForeignComment, range 23 [document, 0, document, 1] 
+PASS Node 32 detachedForeignComment, range 24 [document, 0, document, 2] 
+PASS Node 32 detachedForeignComment, range 25 [comment, 2, comment, 3] 
+PASS Node 32 detachedForeignComment, range 26 [testDiv, 0, comment, 5] 
+PASS Node 32 detachedForeignComment, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 32 detachedForeignComment, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 32 detachedForeignComment, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 32 detachedForeignComment, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 32 detachedForeignComment, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 32 detachedForeignComment, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 32 detachedForeignComment, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 32 detachedForeignComment, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 32 detachedForeignComment, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 32 detachedForeignComment, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 32 detachedForeignComment, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 32 detachedForeignComment, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 32 detachedForeignComment, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 32 detachedForeignComment, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 32 detachedForeignComment, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 32 detachedForeignComment, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 32 detachedForeignComment, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 32 detachedForeignComment, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 32 detachedForeignComment, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 32 detachedForeignComment, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 32 detachedForeignComment, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 32 detachedForeignComment, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 32 detachedForeignComment, range 49 [document, 1, document, 2] 
+PASS Node 32 detachedForeignComment, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 32 detachedForeignComment, range 51 [paras[3], 1, comment, 8] 
+PASS Node 32 detachedForeignComment, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 32 detachedForeignComment, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 32 detachedForeignComment, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 32 detachedForeignComment, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 32 detachedForeignComment, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 32 detachedForeignComment, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 32 detachedForeignComment, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 32 detachedForeignComment, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 33 detachedXmlComment, detached range 
+PASS Node 33 detachedXmlComment, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 33 detachedXmlComment, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 33 detachedXmlComment, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 33 detachedXmlComment, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 33 detachedXmlComment, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 33 detachedXmlComment, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 33 detachedXmlComment, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 33 detachedXmlComment, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 33 detachedXmlComment, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 33 detachedXmlComment, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 33 detachedXmlComment, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 33 detachedXmlComment, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 33 detachedXmlComment, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 33 detachedXmlComment, range 13 [document.head, 1, document.head, 1] 
+PASS Node 33 detachedXmlComment, range 14 [document.body, 4, document.body, 5] 
+PASS Node 33 detachedXmlComment, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 33 detachedXmlComment, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 33 detachedXmlComment, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 33 detachedXmlComment, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 33 detachedXmlComment, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 33 detachedXmlComment, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 33 detachedXmlComment, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 33 detachedXmlComment, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 33 detachedXmlComment, range 23 [document, 0, document, 1] 
+PASS Node 33 detachedXmlComment, range 24 [document, 0, document, 2] 
+PASS Node 33 detachedXmlComment, range 25 [comment, 2, comment, 3] 
+PASS Node 33 detachedXmlComment, range 26 [testDiv, 0, comment, 5] 
+PASS Node 33 detachedXmlComment, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 33 detachedXmlComment, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 33 detachedXmlComment, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 33 detachedXmlComment, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 33 detachedXmlComment, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 33 detachedXmlComment, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 33 detachedXmlComment, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 33 detachedXmlComment, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 33 detachedXmlComment, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 33 detachedXmlComment, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 33 detachedXmlComment, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 33 detachedXmlComment, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 33 detachedXmlComment, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 33 detachedXmlComment, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 33 detachedXmlComment, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 33 detachedXmlComment, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 33 detachedXmlComment, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 33 detachedXmlComment, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 33 detachedXmlComment, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 33 detachedXmlComment, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 33 detachedXmlComment, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 33 detachedXmlComment, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 33 detachedXmlComment, range 49 [document, 1, document, 2] 
+PASS Node 33 detachedXmlComment, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 33 detachedXmlComment, range 51 [paras[3], 1, comment, 8] 
+PASS Node 33 detachedXmlComment, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 33 detachedXmlComment, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 33 detachedXmlComment, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 33 detachedXmlComment, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 33 detachedXmlComment, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 33 detachedXmlComment, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 33 detachedXmlComment, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 33 detachedXmlComment, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 34 foreignDocfrag, detached range 
+PASS Node 34 foreignDocfrag, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 34 foreignDocfrag, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 34 foreignDocfrag, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 34 foreignDocfrag, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 34 foreignDocfrag, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 34 foreignDocfrag, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 34 foreignDocfrag, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 34 foreignDocfrag, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 34 foreignDocfrag, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 34 foreignDocfrag, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 34 foreignDocfrag, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 34 foreignDocfrag, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 34 foreignDocfrag, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 34 foreignDocfrag, range 13 [document.head, 1, document.head, 1] 
+PASS Node 34 foreignDocfrag, range 14 [document.body, 4, document.body, 5] 
+PASS Node 34 foreignDocfrag, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 34 foreignDocfrag, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 34 foreignDocfrag, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 34 foreignDocfrag, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 34 foreignDocfrag, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 34 foreignDocfrag, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 34 foreignDocfrag, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 34 foreignDocfrag, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 34 foreignDocfrag, range 23 [document, 0, document, 1] 
+PASS Node 34 foreignDocfrag, range 24 [document, 0, document, 2] 
+PASS Node 34 foreignDocfrag, range 25 [comment, 2, comment, 3] 
+PASS Node 34 foreignDocfrag, range 26 [testDiv, 0, comment, 5] 
+PASS Node 34 foreignDocfrag, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 34 foreignDocfrag, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 34 foreignDocfrag, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 34 foreignDocfrag, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 34 foreignDocfrag, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 34 foreignDocfrag, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 34 foreignDocfrag, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 34 foreignDocfrag, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 34 foreignDocfrag, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 34 foreignDocfrag, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 34 foreignDocfrag, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 34 foreignDocfrag, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 34 foreignDocfrag, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 34 foreignDocfrag, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 34 foreignDocfrag, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 34 foreignDocfrag, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 34 foreignDocfrag, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 34 foreignDocfrag, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 34 foreignDocfrag, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 34 foreignDocfrag, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 34 foreignDocfrag, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 34 foreignDocfrag, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 34 foreignDocfrag, range 49 [document, 1, document, 2] 
+PASS Node 34 foreignDocfrag, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 34 foreignDocfrag, range 51 [paras[3], 1, comment, 8] 
+PASS Node 34 foreignDocfrag, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 34 foreignDocfrag, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 34 foreignDocfrag, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 34 foreignDocfrag, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 34 foreignDocfrag, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 34 foreignDocfrag, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 34 foreignDocfrag, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 34 foreignDocfrag, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 35 xmlDocfrag, detached range 
+PASS Node 35 xmlDocfrag, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 35 xmlDocfrag, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 35 xmlDocfrag, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 35 xmlDocfrag, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 35 xmlDocfrag, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 35 xmlDocfrag, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 35 xmlDocfrag, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 35 xmlDocfrag, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 35 xmlDocfrag, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 35 xmlDocfrag, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 35 xmlDocfrag, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 35 xmlDocfrag, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 35 xmlDocfrag, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 35 xmlDocfrag, range 13 [document.head, 1, document.head, 1] 
+PASS Node 35 xmlDocfrag, range 14 [document.body, 4, document.body, 5] 
+PASS Node 35 xmlDocfrag, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 35 xmlDocfrag, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 35 xmlDocfrag, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 35 xmlDocfrag, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 35 xmlDocfrag, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 35 xmlDocfrag, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 35 xmlDocfrag, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 35 xmlDocfrag, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 35 xmlDocfrag, range 23 [document, 0, document, 1] 
+PASS Node 35 xmlDocfrag, range 24 [document, 0, document, 2] 
+PASS Node 35 xmlDocfrag, range 25 [comment, 2, comment, 3] 
+PASS Node 35 xmlDocfrag, range 26 [testDiv, 0, comment, 5] 
+PASS Node 35 xmlDocfrag, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 35 xmlDocfrag, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 35 xmlDocfrag, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 35 xmlDocfrag, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 35 xmlDocfrag, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 35 xmlDocfrag, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 35 xmlDocfrag, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 35 xmlDocfrag, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 35 xmlDocfrag, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 35 xmlDocfrag, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 35 xmlDocfrag, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 35 xmlDocfrag, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 35 xmlDocfrag, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 35 xmlDocfrag, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 35 xmlDocfrag, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 35 xmlDocfrag, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 35 xmlDocfrag, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 35 xmlDocfrag, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 35 xmlDocfrag, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 35 xmlDocfrag, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 35 xmlDocfrag, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 35 xmlDocfrag, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 35 xmlDocfrag, range 49 [document, 1, document, 2] 
+PASS Node 35 xmlDocfrag, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 35 xmlDocfrag, range 51 [paras[3], 1, comment, 8] 
+PASS Node 35 xmlDocfrag, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 35 xmlDocfrag, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 35 xmlDocfrag, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 35 xmlDocfrag, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 35 xmlDocfrag, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 35 xmlDocfrag, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 35 xmlDocfrag, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 35 xmlDocfrag, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Node 36 xmlDoctype, detached range 
+PASS Node 36 xmlDoctype, range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Node 36 xmlDoctype, range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Node 36 xmlDoctype, range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Node 36 xmlDoctype, range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Node 36 xmlDoctype, range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 36 xmlDoctype, range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Node 36 xmlDoctype, range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Node 36 xmlDoctype, range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Node 36 xmlDoctype, range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Node 36 xmlDoctype, range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Node 36 xmlDoctype, range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Node 36 xmlDoctype, range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Node 36 xmlDoctype, range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Node 36 xmlDoctype, range 13 [document.head, 1, document.head, 1] 
+PASS Node 36 xmlDoctype, range 14 [document.body, 4, document.body, 5] 
+PASS Node 36 xmlDoctype, range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Node 36 xmlDoctype, range 16 [paras[0], 0, paras[0], 1] 
+PASS Node 36 xmlDoctype, range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Node 36 xmlDoctype, range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Node 36 xmlDoctype, range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Node 36 xmlDoctype, range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Node 36 xmlDoctype, range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Node 36 xmlDoctype, range 22 [testDiv, 2, paras[4], 1] 
+PASS Node 36 xmlDoctype, range 23 [document, 0, document, 1] 
+PASS Node 36 xmlDoctype, range 24 [document, 0, document, 2] 
+PASS Node 36 xmlDoctype, range 25 [comment, 2, comment, 3] 
+PASS Node 36 xmlDoctype, range 26 [testDiv, 0, comment, 5] 
+PASS Node 36 xmlDoctype, range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Node 36 xmlDoctype, range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Node 36 xmlDoctype, range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Node 36 xmlDoctype, range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Node 36 xmlDoctype, range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Node 36 xmlDoctype, range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Node 36 xmlDoctype, range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Node 36 xmlDoctype, range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Node 36 xmlDoctype, range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Node 36 xmlDoctype, range 36 [docfrag, 0, docfrag, 0] 
+PASS Node 36 xmlDoctype, range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Node 36 xmlDoctype, range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Node 36 xmlDoctype, range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Node 36 xmlDoctype, range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Node 36 xmlDoctype, range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Node 36 xmlDoctype, range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Node 36 xmlDoctype, range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Node 36 xmlDoctype, range 44 [paras[0], 0, paras[0], 0] 
+PASS Node 36 xmlDoctype, range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Node 36 xmlDoctype, range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Node 36 xmlDoctype, range 47 [document.documentElement, 1, document.body, 0] 
+PASS Node 36 xmlDoctype, range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Node 36 xmlDoctype, range 49 [document, 1, document, 2] 
+PASS Node 36 xmlDoctype, range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Node 36 xmlDoctype, range 51 [paras[3], 1, comment, 8] 
+PASS Node 36 xmlDoctype, range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Node 36 xmlDoctype, range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Node 36 xmlDoctype, range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Node 36 xmlDoctype, range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Node 36 xmlDoctype, range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Node 36 xmlDoctype, range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Node 36 xmlDoctype, range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Node 36 xmlDoctype, range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeintersectsNodehtmlfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangeintersectsNodehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-intersectsNode.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-intersectsNode.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-intersectsNode.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-intersectsNode.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,78 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Range.intersectsNode() tests&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Aryeh Gregor&quot; href=ayg@aryeh.name&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;script src=../common.js&gt;&lt;/script&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+
+// Will be filled in on the first run for that range
+var testRangesCached = [];
+
+for (var i = 0; i &lt; testNodes.length; i++) {
+  var node = eval(testNodes[i]);
+
+  // &quot;If the detached flag is set, throw an &quot;InvalidStateError&quot; exception and
+  // terminate these steps.&quot;
+  test(function() {
+    var range = document.createRange();
+    range.detach();
+    assert_equals(range.intersectsNode(node), node === document);
+  }, &quot;Node &quot; + i + &quot; &quot; + testNodes[i] + &quot;, detached range&quot;);
+
+  for (var j = 0; j &lt; testRanges.length; j++) {
+    test(function() {
+      if (testRangesCached[j] === undefined) {
+        try {
+          testRangesCached[j] = rangeFromEndpoints(eval(testRanges[i]));
+        } catch(e) {
+          testRangesCached[j] = null;
+        }
+      }
+      assert_not_equals(testRangesCached[j], null,
+        &quot;Setting up the range failed&quot;);
+
+      var range = testRangesCached[j].cloneRange();
+
+      // &quot;If node's root is different from the context object's root,
+      // return false and terminate these steps.&quot;
+      if (furthestAncestor(node) !== furthestAncestor(range.startContainer)) {
+        assert_equals(range.intersectsNode(node), false,
+          &quot;Must return false if node and range have different roots&quot;);
+        return;
+      }
+
+      // &quot;Let parent be node's parent.&quot;
+      var parent_ = node.parentNode;
+
+      // &quot;If parent is null, return true and terminate these steps.&quot;
+      if (!parent_) {
+        assert_equals(range.intersectsNode(node), true,
+          &quot;Must return true if node's parent is null&quot;);
+        return;
+      }
+
+      // &quot;Let offset be node's index.&quot;
+      var offset = indexOf(node);
+
+      // &quot;If (parent, offset) is before end and (parent, offset + 1) is
+      // after start, return true and terminate these steps.&quot;
+      if (getPosition(parent_, offset, range.endContainer, range.endOffset) === &quot;before&quot;
+      &amp;&amp; getPosition(parent_, offset + 1, range.startContainer, range.startOffset) === &quot;after&quot;) {
+        assert_equals(range.intersectsNode(node), true,
+          &quot;Must return true if (parent, offset) is before range end and (parent, offset + 1) is after range start&quot;);
+        return;
+      }
+
+      // &quot;Return false.&quot;
+      assert_equals(range.intersectsNode(node), false,
+        &quot;Must return false if (parent, offset) is not before range end or (parent, offset + 1) is not after range start&quot;);
+    }, &quot;Node &quot; + i + &quot; &quot; + testNodes[i] + &quot;, range &quot; + j + &quot; &quot; + testRanges[j]);
+  }
+}
+
+testDiv.style.display = &quot;none&quot;;
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeisPointInRangeexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangeisPointInRangeexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-isPointInRange-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-isPointInRange-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-isPointInRange-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-isPointInRange-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,5431 @@
</span><ins>+
+PASS Setup 
+PASS Set up for range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Set up for range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Set up for range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Set up for range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Set up for range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Set up for range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Set up for range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Set up for range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Set up for range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Set up for range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Set up for range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Set up for range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Set up for range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Set up for range 13 [document.head, 1, document.head, 1] 
+PASS Set up for range 14 [document.body, 4, document.body, 5] 
+PASS Set up for range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Set up for range 16 [paras[0], 0, paras[0], 1] 
+PASS Set up for range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Set up for range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Set up for range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Set up for range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Set up for range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Set up for range 22 [testDiv, 2, paras[4], 1] 
+PASS Set up for range 23 [document, 0, document, 1] 
+PASS Set up for range 24 [document, 0, document, 2] 
+PASS Set up for range 25 [comment, 2, comment, 3] 
+PASS Set up for range 26 [testDiv, 0, comment, 5] 
+PASS Set up for range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Set up for range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Set up for range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Set up for range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Set up for range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Set up for range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Set up for range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Set up for range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Set up for range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Set up for range 36 [docfrag, 0, docfrag, 0] 
+PASS Set up for range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Set up for range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Set up for range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Set up for range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Set up for range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Set up for range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Set up for range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Set up for range 44 [paras[0], 0, paras[0], 0] 
+PASS Set up for range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Set up for range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Set up for range 47 [document.documentElement, 1, document.body, 0] 
+PASS Set up for range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Set up for range 49 [document, 1, document, 2] 
+PASS Set up for range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Set up for range 51 [paras[3], 1, comment, 8] 
+PASS Set up for range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Set up for range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Set up for range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Set up for range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Set up for range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Set up for range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Set up for range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Set up for range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 0 [paras[0].firstChild, -1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 0 [paras[0].firstChild, -1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 0 [paras[0].firstChild, -1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 0 [paras[0].firstChild, -1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 0 [paras[0].firstChild, -1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 0 [paras[0].firstChild, -1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 0 [paras[0].firstChild, -1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 0 [paras[0].firstChild, -1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 0 [paras[0].firstChild, -1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 0 [paras[0].firstChild, -1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 0 [paras[0].firstChild, -1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 0 [paras[0].firstChild, -1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 0 [paras[0].firstChild, -1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 0 [paras[0].firstChild, -1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 0 [paras[0].firstChild, -1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 0 [paras[0].firstChild, -1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 0 [paras[0].firstChild, -1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 0 [paras[0].firstChild, -1], range 23 [document, 0, document, 1] 
+PASS Point 0 [paras[0].firstChild, -1], range 24 [document, 0, document, 2] 
+PASS Point 0 [paras[0].firstChild, -1], range 25 [comment, 2, comment, 3] 
+PASS Point 0 [paras[0].firstChild, -1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 0 [paras[0].firstChild, -1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 0 [paras[0].firstChild, -1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 0 [paras[0].firstChild, -1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 0 [paras[0].firstChild, -1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 0 [paras[0].firstChild, -1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 0 [paras[0].firstChild, -1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 0 [paras[0].firstChild, -1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 0 [paras[0].firstChild, -1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 0 [paras[0].firstChild, -1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 0 [paras[0].firstChild, -1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 0 [paras[0].firstChild, -1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 0 [paras[0].firstChild, -1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 0 [paras[0].firstChild, -1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 0 [paras[0].firstChild, -1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 0 [paras[0].firstChild, -1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 0 [paras[0].firstChild, -1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 49 [document, 1, document, 2] 
+PASS Point 0 [paras[0].firstChild, -1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 0 [paras[0].firstChild, -1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 0 [paras[0].firstChild, -1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 0 [paras[0].firstChild, -1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 0 [paras[0].firstChild, -1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 0 [paras[0].firstChild, -1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 0 [paras[0].firstChild, -1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 0 [paras[0].firstChild, -1], range 60 detached 
+PASS Point 1 [paras[0].firstChild, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 1 [paras[0].firstChild, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 1 [paras[0].firstChild, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 1 [paras[0].firstChild, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 1 [paras[0].firstChild, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 1 [paras[0].firstChild, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 1 [paras[0].firstChild, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 1 [paras[0].firstChild, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 1 [paras[0].firstChild, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 1 [paras[0].firstChild, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 1 [paras[0].firstChild, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 1 [paras[0].firstChild, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 1 [paras[0].firstChild, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 1 [paras[0].firstChild, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 1 [paras[0].firstChild, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 1 [paras[0].firstChild, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 1 [paras[0].firstChild, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 1 [paras[0].firstChild, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 1 [paras[0].firstChild, 0], range 23 [document, 0, document, 1] 
+PASS Point 1 [paras[0].firstChild, 0], range 24 [document, 0, document, 2] 
+PASS Point 1 [paras[0].firstChild, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 1 [paras[0].firstChild, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 1 [paras[0].firstChild, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 1 [paras[0].firstChild, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 1 [paras[0].firstChild, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 1 [paras[0].firstChild, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 1 [paras[0].firstChild, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 1 [paras[0].firstChild, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 1 [paras[0].firstChild, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 1 [paras[0].firstChild, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 1 [paras[0].firstChild, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 1 [paras[0].firstChild, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 1 [paras[0].firstChild, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 1 [paras[0].firstChild, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 1 [paras[0].firstChild, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 1 [paras[0].firstChild, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 1 [paras[0].firstChild, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 1 [paras[0].firstChild, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 49 [document, 1, document, 2] 
+PASS Point 1 [paras[0].firstChild, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 1 [paras[0].firstChild, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 1 [paras[0].firstChild, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 1 [paras[0].firstChild, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 1 [paras[0].firstChild, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 1 [paras[0].firstChild, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 1 [paras[0].firstChild, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 1 [paras[0].firstChild, 0], range 60 detached 
+PASS Point 2 [paras[0].firstChild, 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 2 [paras[0].firstChild, 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 2 [paras[0].firstChild, 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 2 [paras[0].firstChild, 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 2 [paras[0].firstChild, 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 2 [paras[0].firstChild, 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 2 [paras[0].firstChild, 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 2 [paras[0].firstChild, 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 2 [paras[0].firstChild, 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 2 [paras[0].firstChild, 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 2 [paras[0].firstChild, 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 2 [paras[0].firstChild, 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 2 [paras[0].firstChild, 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 2 [paras[0].firstChild, 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 2 [paras[0].firstChild, 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 2 [paras[0].firstChild, 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 2 [paras[0].firstChild, 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 2 [paras[0].firstChild, 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 2 [paras[0].firstChild, 1], range 23 [document, 0, document, 1] 
+PASS Point 2 [paras[0].firstChild, 1], range 24 [document, 0, document, 2] 
+PASS Point 2 [paras[0].firstChild, 1], range 25 [comment, 2, comment, 3] 
+PASS Point 2 [paras[0].firstChild, 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 2 [paras[0].firstChild, 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 2 [paras[0].firstChild, 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 2 [paras[0].firstChild, 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 2 [paras[0].firstChild, 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 2 [paras[0].firstChild, 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 2 [paras[0].firstChild, 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 2 [paras[0].firstChild, 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 2 [paras[0].firstChild, 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 2 [paras[0].firstChild, 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 2 [paras[0].firstChild, 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 2 [paras[0].firstChild, 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 2 [paras[0].firstChild, 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 2 [paras[0].firstChild, 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 2 [paras[0].firstChild, 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 2 [paras[0].firstChild, 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 2 [paras[0].firstChild, 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 49 [document, 1, document, 2] 
+PASS Point 2 [paras[0].firstChild, 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 2 [paras[0].firstChild, 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 2 [paras[0].firstChild, 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 2 [paras[0].firstChild, 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 2 [paras[0].firstChild, 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 2 [paras[0].firstChild, 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 2 [paras[0].firstChild, 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 2 [paras[0].firstChild, 1], range 60 detached 
+PASS Point 3 [paras[0].firstChild, 2], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 3 [paras[0].firstChild, 2], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 3 [paras[0].firstChild, 2], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 3 [paras[0].firstChild, 2], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 3 [paras[0].firstChild, 2], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 3 [paras[0].firstChild, 2], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 3 [paras[0].firstChild, 2], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 3 [paras[0].firstChild, 2], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 3 [paras[0].firstChild, 2], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 3 [paras[0].firstChild, 2], range 13 [document.head, 1, document.head, 1] 
+PASS Point 3 [paras[0].firstChild, 2], range 14 [document.body, 4, document.body, 5] 
+PASS Point 3 [paras[0].firstChild, 2], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 3 [paras[0].firstChild, 2], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 3 [paras[0].firstChild, 2], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 3 [paras[0].firstChild, 2], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 3 [paras[0].firstChild, 2], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 3 [paras[0].firstChild, 2], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 3 [paras[0].firstChild, 2], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 3 [paras[0].firstChild, 2], range 23 [document, 0, document, 1] 
+PASS Point 3 [paras[0].firstChild, 2], range 24 [document, 0, document, 2] 
+PASS Point 3 [paras[0].firstChild, 2], range 25 [comment, 2, comment, 3] 
+PASS Point 3 [paras[0].firstChild, 2], range 26 [testDiv, 0, comment, 5] 
+PASS Point 3 [paras[0].firstChild, 2], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 3 [paras[0].firstChild, 2], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 3 [paras[0].firstChild, 2], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 3 [paras[0].firstChild, 2], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 3 [paras[0].firstChild, 2], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 3 [paras[0].firstChild, 2], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 3 [paras[0].firstChild, 2], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 3 [paras[0].firstChild, 2], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 3 [paras[0].firstChild, 2], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 3 [paras[0].firstChild, 2], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 3 [paras[0].firstChild, 2], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 3 [paras[0].firstChild, 2], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 3 [paras[0].firstChild, 2], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 3 [paras[0].firstChild, 2], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 3 [paras[0].firstChild, 2], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 3 [paras[0].firstChild, 2], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 49 [document, 1, document, 2] 
+PASS Point 3 [paras[0].firstChild, 2], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 3 [paras[0].firstChild, 2], range 51 [paras[3], 1, comment, 8] 
+PASS Point 3 [paras[0].firstChild, 2], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 3 [paras[0].firstChild, 2], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 3 [paras[0].firstChild, 2], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 3 [paras[0].firstChild, 2], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 3 [paras[0].firstChild, 2], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 3 [paras[0].firstChild, 2], range 60 detached 
+PASS Point 4 [paras[0].firstChild, 8], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 4 [paras[0].firstChild, 8], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 4 [paras[0].firstChild, 8], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 4 [paras[0].firstChild, 8], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 4 [paras[0].firstChild, 8], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 4 [paras[0].firstChild, 8], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 4 [paras[0].firstChild, 8], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 4 [paras[0].firstChild, 8], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 4 [paras[0].firstChild, 8], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 4 [paras[0].firstChild, 8], range 13 [document.head, 1, document.head, 1] 
+PASS Point 4 [paras[0].firstChild, 8], range 14 [document.body, 4, document.body, 5] 
+PASS Point 4 [paras[0].firstChild, 8], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 4 [paras[0].firstChild, 8], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 4 [paras[0].firstChild, 8], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 4 [paras[0].firstChild, 8], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 4 [paras[0].firstChild, 8], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 4 [paras[0].firstChild, 8], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 4 [paras[0].firstChild, 8], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 4 [paras[0].firstChild, 8], range 23 [document, 0, document, 1] 
+PASS Point 4 [paras[0].firstChild, 8], range 24 [document, 0, document, 2] 
+PASS Point 4 [paras[0].firstChild, 8], range 25 [comment, 2, comment, 3] 
+PASS Point 4 [paras[0].firstChild, 8], range 26 [testDiv, 0, comment, 5] 
+PASS Point 4 [paras[0].firstChild, 8], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 4 [paras[0].firstChild, 8], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 4 [paras[0].firstChild, 8], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 4 [paras[0].firstChild, 8], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 4 [paras[0].firstChild, 8], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 4 [paras[0].firstChild, 8], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 4 [paras[0].firstChild, 8], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 4 [paras[0].firstChild, 8], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 4 [paras[0].firstChild, 8], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 4 [paras[0].firstChild, 8], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 4 [paras[0].firstChild, 8], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 4 [paras[0].firstChild, 8], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 4 [paras[0].firstChild, 8], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 4 [paras[0].firstChild, 8], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 4 [paras[0].firstChild, 8], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 4 [paras[0].firstChild, 8], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 49 [document, 1, document, 2] 
+PASS Point 4 [paras[0].firstChild, 8], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 4 [paras[0].firstChild, 8], range 51 [paras[3], 1, comment, 8] 
+PASS Point 4 [paras[0].firstChild, 8], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 4 [paras[0].firstChild, 8], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 4 [paras[0].firstChild, 8], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 4 [paras[0].firstChild, 8], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 4 [paras[0].firstChild, 8], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 4 [paras[0].firstChild, 8], range 60 detached 
+PASS Point 5 [paras[0].firstChild, 9], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 5 [paras[0].firstChild, 9], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 5 [paras[0].firstChild, 9], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 5 [paras[0].firstChild, 9], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 5 [paras[0].firstChild, 9], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 5 [paras[0].firstChild, 9], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 5 [paras[0].firstChild, 9], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 5 [paras[0].firstChild, 9], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 5 [paras[0].firstChild, 9], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 5 [paras[0].firstChild, 9], range 13 [document.head, 1, document.head, 1] 
+PASS Point 5 [paras[0].firstChild, 9], range 14 [document.body, 4, document.body, 5] 
+PASS Point 5 [paras[0].firstChild, 9], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 5 [paras[0].firstChild, 9], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 5 [paras[0].firstChild, 9], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 5 [paras[0].firstChild, 9], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 5 [paras[0].firstChild, 9], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 5 [paras[0].firstChild, 9], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 5 [paras[0].firstChild, 9], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 5 [paras[0].firstChild, 9], range 23 [document, 0, document, 1] 
+PASS Point 5 [paras[0].firstChild, 9], range 24 [document, 0, document, 2] 
+PASS Point 5 [paras[0].firstChild, 9], range 25 [comment, 2, comment, 3] 
+PASS Point 5 [paras[0].firstChild, 9], range 26 [testDiv, 0, comment, 5] 
+PASS Point 5 [paras[0].firstChild, 9], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 5 [paras[0].firstChild, 9], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 5 [paras[0].firstChild, 9], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 5 [paras[0].firstChild, 9], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 5 [paras[0].firstChild, 9], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 5 [paras[0].firstChild, 9], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 5 [paras[0].firstChild, 9], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 5 [paras[0].firstChild, 9], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 5 [paras[0].firstChild, 9], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 5 [paras[0].firstChild, 9], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 5 [paras[0].firstChild, 9], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 5 [paras[0].firstChild, 9], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 5 [paras[0].firstChild, 9], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 5 [paras[0].firstChild, 9], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 5 [paras[0].firstChild, 9], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 5 [paras[0].firstChild, 9], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 49 [document, 1, document, 2] 
+PASS Point 5 [paras[0].firstChild, 9], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 5 [paras[0].firstChild, 9], range 51 [paras[3], 1, comment, 8] 
+PASS Point 5 [paras[0].firstChild, 9], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 5 [paras[0].firstChild, 9], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 5 [paras[0].firstChild, 9], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 5 [paras[0].firstChild, 9], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 5 [paras[0].firstChild, 9], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 5 [paras[0].firstChild, 9], range 60 detached 
+PASS Point 6 [paras[0].firstChild, 10], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 6 [paras[0].firstChild, 10], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 6 [paras[0].firstChild, 10], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 6 [paras[0].firstChild, 10], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 6 [paras[0].firstChild, 10], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 6 [paras[0].firstChild, 10], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 6 [paras[0].firstChild, 10], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 6 [paras[0].firstChild, 10], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 6 [paras[0].firstChild, 10], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 6 [paras[0].firstChild, 10], range 13 [document.head, 1, document.head, 1] 
+PASS Point 6 [paras[0].firstChild, 10], range 14 [document.body, 4, document.body, 5] 
+PASS Point 6 [paras[0].firstChild, 10], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 6 [paras[0].firstChild, 10], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 6 [paras[0].firstChild, 10], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 6 [paras[0].firstChild, 10], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 6 [paras[0].firstChild, 10], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 6 [paras[0].firstChild, 10], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 6 [paras[0].firstChild, 10], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 6 [paras[0].firstChild, 10], range 23 [document, 0, document, 1] 
+PASS Point 6 [paras[0].firstChild, 10], range 24 [document, 0, document, 2] 
+PASS Point 6 [paras[0].firstChild, 10], range 25 [comment, 2, comment, 3] 
+PASS Point 6 [paras[0].firstChild, 10], range 26 [testDiv, 0, comment, 5] 
+PASS Point 6 [paras[0].firstChild, 10], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 6 [paras[0].firstChild, 10], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 6 [paras[0].firstChild, 10], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 6 [paras[0].firstChild, 10], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 6 [paras[0].firstChild, 10], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 6 [paras[0].firstChild, 10], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 6 [paras[0].firstChild, 10], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 6 [paras[0].firstChild, 10], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 6 [paras[0].firstChild, 10], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 6 [paras[0].firstChild, 10], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 6 [paras[0].firstChild, 10], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 6 [paras[0].firstChild, 10], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 6 [paras[0].firstChild, 10], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 6 [paras[0].firstChild, 10], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 6 [paras[0].firstChild, 10], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 6 [paras[0].firstChild, 10], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 49 [document, 1, document, 2] 
+PASS Point 6 [paras[0].firstChild, 10], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 6 [paras[0].firstChild, 10], range 51 [paras[3], 1, comment, 8] 
+PASS Point 6 [paras[0].firstChild, 10], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 6 [paras[0].firstChild, 10], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 6 [paras[0].firstChild, 10], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 6 [paras[0].firstChild, 10], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 6 [paras[0].firstChild, 10], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 6 [paras[0].firstChild, 10], range 60 detached 
+PASS Point 7 [paras[0].firstChild, 65535], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 7 [paras[0].firstChild, 65535], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 7 [paras[0].firstChild, 65535], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 7 [paras[0].firstChild, 65535], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 7 [paras[0].firstChild, 65535], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 7 [paras[0].firstChild, 65535], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 7 [paras[0].firstChild, 65535], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 7 [paras[0].firstChild, 65535], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 7 [paras[0].firstChild, 65535], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 7 [paras[0].firstChild, 65535], range 13 [document.head, 1, document.head, 1] 
+PASS Point 7 [paras[0].firstChild, 65535], range 14 [document.body, 4, document.body, 5] 
+PASS Point 7 [paras[0].firstChild, 65535], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 7 [paras[0].firstChild, 65535], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 7 [paras[0].firstChild, 65535], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 7 [paras[0].firstChild, 65535], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 7 [paras[0].firstChild, 65535], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 7 [paras[0].firstChild, 65535], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 7 [paras[0].firstChild, 65535], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 7 [paras[0].firstChild, 65535], range 23 [document, 0, document, 1] 
+PASS Point 7 [paras[0].firstChild, 65535], range 24 [document, 0, document, 2] 
+PASS Point 7 [paras[0].firstChild, 65535], range 25 [comment, 2, comment, 3] 
+PASS Point 7 [paras[0].firstChild, 65535], range 26 [testDiv, 0, comment, 5] 
+PASS Point 7 [paras[0].firstChild, 65535], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 7 [paras[0].firstChild, 65535], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 7 [paras[0].firstChild, 65535], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 7 [paras[0].firstChild, 65535], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 7 [paras[0].firstChild, 65535], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 7 [paras[0].firstChild, 65535], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 7 [paras[0].firstChild, 65535], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 7 [paras[0].firstChild, 65535], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 7 [paras[0].firstChild, 65535], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 7 [paras[0].firstChild, 65535], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 7 [paras[0].firstChild, 65535], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 7 [paras[0].firstChild, 65535], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 7 [paras[0].firstChild, 65535], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 7 [paras[0].firstChild, 65535], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 7 [paras[0].firstChild, 65535], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 7 [paras[0].firstChild, 65535], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 49 [document, 1, document, 2] 
+PASS Point 7 [paras[0].firstChild, 65535], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 7 [paras[0].firstChild, 65535], range 51 [paras[3], 1, comment, 8] 
+PASS Point 7 [paras[0].firstChild, 65535], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 7 [paras[0].firstChild, 65535], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 7 [paras[0].firstChild, 65535], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 7 [paras[0].firstChild, 65535], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 7 [paras[0].firstChild, 65535], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 7 [paras[0].firstChild, 65535], range 60 detached 
+PASS Point 8 [paras[1].firstChild, -1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 8 [paras[1].firstChild, -1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 8 [paras[1].firstChild, -1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 8 [paras[1].firstChild, -1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 8 [paras[1].firstChild, -1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 8 [paras[1].firstChild, -1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 8 [paras[1].firstChild, -1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 8 [paras[1].firstChild, -1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 8 [paras[1].firstChild, -1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 8 [paras[1].firstChild, -1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 8 [paras[1].firstChild, -1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 8 [paras[1].firstChild, -1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 8 [paras[1].firstChild, -1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 8 [paras[1].firstChild, -1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 8 [paras[1].firstChild, -1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 8 [paras[1].firstChild, -1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 8 [paras[1].firstChild, -1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 8 [paras[1].firstChild, -1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 8 [paras[1].firstChild, -1], range 23 [document, 0, document, 1] 
+PASS Point 8 [paras[1].firstChild, -1], range 24 [document, 0, document, 2] 
+PASS Point 8 [paras[1].firstChild, -1], range 25 [comment, 2, comment, 3] 
+PASS Point 8 [paras[1].firstChild, -1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 8 [paras[1].firstChild, -1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 8 [paras[1].firstChild, -1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 8 [paras[1].firstChild, -1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 8 [paras[1].firstChild, -1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 8 [paras[1].firstChild, -1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 8 [paras[1].firstChild, -1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 8 [paras[1].firstChild, -1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 8 [paras[1].firstChild, -1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 8 [paras[1].firstChild, -1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 8 [paras[1].firstChild, -1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 8 [paras[1].firstChild, -1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 8 [paras[1].firstChild, -1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 8 [paras[1].firstChild, -1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 8 [paras[1].firstChild, -1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 8 [paras[1].firstChild, -1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 8 [paras[1].firstChild, -1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 49 [document, 1, document, 2] 
+PASS Point 8 [paras[1].firstChild, -1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 8 [paras[1].firstChild, -1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 8 [paras[1].firstChild, -1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 8 [paras[1].firstChild, -1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 8 [paras[1].firstChild, -1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 8 [paras[1].firstChild, -1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 8 [paras[1].firstChild, -1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 8 [paras[1].firstChild, -1], range 60 detached 
+PASS Point 9 [paras[1].firstChild, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 9 [paras[1].firstChild, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 9 [paras[1].firstChild, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 9 [paras[1].firstChild, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 9 [paras[1].firstChild, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 9 [paras[1].firstChild, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 9 [paras[1].firstChild, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 9 [paras[1].firstChild, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 9 [paras[1].firstChild, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 9 [paras[1].firstChild, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 9 [paras[1].firstChild, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 9 [paras[1].firstChild, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 9 [paras[1].firstChild, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 9 [paras[1].firstChild, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 9 [paras[1].firstChild, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 9 [paras[1].firstChild, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 9 [paras[1].firstChild, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 9 [paras[1].firstChild, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 9 [paras[1].firstChild, 0], range 23 [document, 0, document, 1] 
+PASS Point 9 [paras[1].firstChild, 0], range 24 [document, 0, document, 2] 
+PASS Point 9 [paras[1].firstChild, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 9 [paras[1].firstChild, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 9 [paras[1].firstChild, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 9 [paras[1].firstChild, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 9 [paras[1].firstChild, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 9 [paras[1].firstChild, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 9 [paras[1].firstChild, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 9 [paras[1].firstChild, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 9 [paras[1].firstChild, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 9 [paras[1].firstChild, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 9 [paras[1].firstChild, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 9 [paras[1].firstChild, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 9 [paras[1].firstChild, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 9 [paras[1].firstChild, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 9 [paras[1].firstChild, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 9 [paras[1].firstChild, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 9 [paras[1].firstChild, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 9 [paras[1].firstChild, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 49 [document, 1, document, 2] 
+PASS Point 9 [paras[1].firstChild, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 9 [paras[1].firstChild, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 9 [paras[1].firstChild, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 9 [paras[1].firstChild, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 9 [paras[1].firstChild, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 9 [paras[1].firstChild, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 9 [paras[1].firstChild, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 9 [paras[1].firstChild, 0], range 60 detached 
+PASS Point 10 [paras[1].firstChild, 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 10 [paras[1].firstChild, 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 10 [paras[1].firstChild, 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 10 [paras[1].firstChild, 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 10 [paras[1].firstChild, 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 10 [paras[1].firstChild, 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 10 [paras[1].firstChild, 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 10 [paras[1].firstChild, 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 10 [paras[1].firstChild, 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 10 [paras[1].firstChild, 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 10 [paras[1].firstChild, 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 10 [paras[1].firstChild, 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 10 [paras[1].firstChild, 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 10 [paras[1].firstChild, 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 10 [paras[1].firstChild, 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 10 [paras[1].firstChild, 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 10 [paras[1].firstChild, 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 10 [paras[1].firstChild, 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 10 [paras[1].firstChild, 1], range 23 [document, 0, document, 1] 
+PASS Point 10 [paras[1].firstChild, 1], range 24 [document, 0, document, 2] 
+PASS Point 10 [paras[1].firstChild, 1], range 25 [comment, 2, comment, 3] 
+PASS Point 10 [paras[1].firstChild, 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 10 [paras[1].firstChild, 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 10 [paras[1].firstChild, 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 10 [paras[1].firstChild, 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 10 [paras[1].firstChild, 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 10 [paras[1].firstChild, 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 10 [paras[1].firstChild, 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 10 [paras[1].firstChild, 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 10 [paras[1].firstChild, 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 10 [paras[1].firstChild, 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 10 [paras[1].firstChild, 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 10 [paras[1].firstChild, 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 10 [paras[1].firstChild, 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 10 [paras[1].firstChild, 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 10 [paras[1].firstChild, 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 10 [paras[1].firstChild, 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 10 [paras[1].firstChild, 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 49 [document, 1, document, 2] 
+PASS Point 10 [paras[1].firstChild, 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 10 [paras[1].firstChild, 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 10 [paras[1].firstChild, 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 10 [paras[1].firstChild, 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 10 [paras[1].firstChild, 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 10 [paras[1].firstChild, 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 10 [paras[1].firstChild, 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 10 [paras[1].firstChild, 1], range 60 detached 
+PASS Point 11 [paras[1].firstChild, 2], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 11 [paras[1].firstChild, 2], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 11 [paras[1].firstChild, 2], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 11 [paras[1].firstChild, 2], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 11 [paras[1].firstChild, 2], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 11 [paras[1].firstChild, 2], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 11 [paras[1].firstChild, 2], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 11 [paras[1].firstChild, 2], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 11 [paras[1].firstChild, 2], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 11 [paras[1].firstChild, 2], range 13 [document.head, 1, document.head, 1] 
+PASS Point 11 [paras[1].firstChild, 2], range 14 [document.body, 4, document.body, 5] 
+PASS Point 11 [paras[1].firstChild, 2], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 11 [paras[1].firstChild, 2], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 11 [paras[1].firstChild, 2], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 11 [paras[1].firstChild, 2], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 11 [paras[1].firstChild, 2], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 11 [paras[1].firstChild, 2], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 11 [paras[1].firstChild, 2], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 11 [paras[1].firstChild, 2], range 23 [document, 0, document, 1] 
+PASS Point 11 [paras[1].firstChild, 2], range 24 [document, 0, document, 2] 
+PASS Point 11 [paras[1].firstChild, 2], range 25 [comment, 2, comment, 3] 
+PASS Point 11 [paras[1].firstChild, 2], range 26 [testDiv, 0, comment, 5] 
+PASS Point 11 [paras[1].firstChild, 2], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 11 [paras[1].firstChild, 2], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 11 [paras[1].firstChild, 2], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 11 [paras[1].firstChild, 2], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 11 [paras[1].firstChild, 2], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 11 [paras[1].firstChild, 2], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 11 [paras[1].firstChild, 2], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 11 [paras[1].firstChild, 2], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 11 [paras[1].firstChild, 2], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 11 [paras[1].firstChild, 2], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 11 [paras[1].firstChild, 2], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 11 [paras[1].firstChild, 2], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 11 [paras[1].firstChild, 2], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 11 [paras[1].firstChild, 2], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 11 [paras[1].firstChild, 2], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 11 [paras[1].firstChild, 2], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 49 [document, 1, document, 2] 
+PASS Point 11 [paras[1].firstChild, 2], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 11 [paras[1].firstChild, 2], range 51 [paras[3], 1, comment, 8] 
+PASS Point 11 [paras[1].firstChild, 2], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 11 [paras[1].firstChild, 2], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 11 [paras[1].firstChild, 2], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 11 [paras[1].firstChild, 2], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 11 [paras[1].firstChild, 2], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 11 [paras[1].firstChild, 2], range 60 detached 
+PASS Point 12 [paras[1].firstChild, 8], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 12 [paras[1].firstChild, 8], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 12 [paras[1].firstChild, 8], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 12 [paras[1].firstChild, 8], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 12 [paras[1].firstChild, 8], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 12 [paras[1].firstChild, 8], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 12 [paras[1].firstChild, 8], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 12 [paras[1].firstChild, 8], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 12 [paras[1].firstChild, 8], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 12 [paras[1].firstChild, 8], range 13 [document.head, 1, document.head, 1] 
+PASS Point 12 [paras[1].firstChild, 8], range 14 [document.body, 4, document.body, 5] 
+PASS Point 12 [paras[1].firstChild, 8], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 12 [paras[1].firstChild, 8], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 12 [paras[1].firstChild, 8], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 12 [paras[1].firstChild, 8], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 12 [paras[1].firstChild, 8], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 12 [paras[1].firstChild, 8], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 12 [paras[1].firstChild, 8], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 12 [paras[1].firstChild, 8], range 23 [document, 0, document, 1] 
+PASS Point 12 [paras[1].firstChild, 8], range 24 [document, 0, document, 2] 
+PASS Point 12 [paras[1].firstChild, 8], range 25 [comment, 2, comment, 3] 
+PASS Point 12 [paras[1].firstChild, 8], range 26 [testDiv, 0, comment, 5] 
+PASS Point 12 [paras[1].firstChild, 8], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 12 [paras[1].firstChild, 8], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 12 [paras[1].firstChild, 8], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 12 [paras[1].firstChild, 8], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 12 [paras[1].firstChild, 8], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 12 [paras[1].firstChild, 8], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 12 [paras[1].firstChild, 8], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 12 [paras[1].firstChild, 8], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 12 [paras[1].firstChild, 8], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 12 [paras[1].firstChild, 8], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 12 [paras[1].firstChild, 8], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 12 [paras[1].firstChild, 8], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 12 [paras[1].firstChild, 8], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 12 [paras[1].firstChild, 8], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 12 [paras[1].firstChild, 8], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 12 [paras[1].firstChild, 8], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 49 [document, 1, document, 2] 
+PASS Point 12 [paras[1].firstChild, 8], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 12 [paras[1].firstChild, 8], range 51 [paras[3], 1, comment, 8] 
+PASS Point 12 [paras[1].firstChild, 8], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 12 [paras[1].firstChild, 8], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 12 [paras[1].firstChild, 8], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 12 [paras[1].firstChild, 8], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 12 [paras[1].firstChild, 8], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 12 [paras[1].firstChild, 8], range 60 detached 
+PASS Point 13 [paras[1].firstChild, 9], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 13 [paras[1].firstChild, 9], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 13 [paras[1].firstChild, 9], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 13 [paras[1].firstChild, 9], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 13 [paras[1].firstChild, 9], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 13 [paras[1].firstChild, 9], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 13 [paras[1].firstChild, 9], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 13 [paras[1].firstChild, 9], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 13 [paras[1].firstChild, 9], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 13 [paras[1].firstChild, 9], range 13 [document.head, 1, document.head, 1] 
+PASS Point 13 [paras[1].firstChild, 9], range 14 [document.body, 4, document.body, 5] 
+PASS Point 13 [paras[1].firstChild, 9], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 13 [paras[1].firstChild, 9], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 13 [paras[1].firstChild, 9], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 13 [paras[1].firstChild, 9], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 13 [paras[1].firstChild, 9], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 13 [paras[1].firstChild, 9], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 13 [paras[1].firstChild, 9], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 13 [paras[1].firstChild, 9], range 23 [document, 0, document, 1] 
+PASS Point 13 [paras[1].firstChild, 9], range 24 [document, 0, document, 2] 
+PASS Point 13 [paras[1].firstChild, 9], range 25 [comment, 2, comment, 3] 
+PASS Point 13 [paras[1].firstChild, 9], range 26 [testDiv, 0, comment, 5] 
+PASS Point 13 [paras[1].firstChild, 9], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 13 [paras[1].firstChild, 9], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 13 [paras[1].firstChild, 9], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 13 [paras[1].firstChild, 9], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 13 [paras[1].firstChild, 9], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 13 [paras[1].firstChild, 9], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 13 [paras[1].firstChild, 9], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 13 [paras[1].firstChild, 9], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 13 [paras[1].firstChild, 9], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 13 [paras[1].firstChild, 9], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 13 [paras[1].firstChild, 9], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 13 [paras[1].firstChild, 9], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 13 [paras[1].firstChild, 9], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 13 [paras[1].firstChild, 9], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 13 [paras[1].firstChild, 9], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 13 [paras[1].firstChild, 9], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 49 [document, 1, document, 2] 
+PASS Point 13 [paras[1].firstChild, 9], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 13 [paras[1].firstChild, 9], range 51 [paras[3], 1, comment, 8] 
+PASS Point 13 [paras[1].firstChild, 9], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 13 [paras[1].firstChild, 9], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 13 [paras[1].firstChild, 9], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 13 [paras[1].firstChild, 9], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 13 [paras[1].firstChild, 9], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 13 [paras[1].firstChild, 9], range 60 detached 
+PASS Point 14 [paras[1].firstChild, 10], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 14 [paras[1].firstChild, 10], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 14 [paras[1].firstChild, 10], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 14 [paras[1].firstChild, 10], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 14 [paras[1].firstChild, 10], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 14 [paras[1].firstChild, 10], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 14 [paras[1].firstChild, 10], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 14 [paras[1].firstChild, 10], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 14 [paras[1].firstChild, 10], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 14 [paras[1].firstChild, 10], range 13 [document.head, 1, document.head, 1] 
+PASS Point 14 [paras[1].firstChild, 10], range 14 [document.body, 4, document.body, 5] 
+PASS Point 14 [paras[1].firstChild, 10], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 14 [paras[1].firstChild, 10], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 14 [paras[1].firstChild, 10], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 14 [paras[1].firstChild, 10], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 14 [paras[1].firstChild, 10], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 14 [paras[1].firstChild, 10], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 14 [paras[1].firstChild, 10], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 14 [paras[1].firstChild, 10], range 23 [document, 0, document, 1] 
+PASS Point 14 [paras[1].firstChild, 10], range 24 [document, 0, document, 2] 
+PASS Point 14 [paras[1].firstChild, 10], range 25 [comment, 2, comment, 3] 
+PASS Point 14 [paras[1].firstChild, 10], range 26 [testDiv, 0, comment, 5] 
+PASS Point 14 [paras[1].firstChild, 10], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 14 [paras[1].firstChild, 10], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 14 [paras[1].firstChild, 10], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 14 [paras[1].firstChild, 10], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 14 [paras[1].firstChild, 10], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 14 [paras[1].firstChild, 10], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 14 [paras[1].firstChild, 10], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 14 [paras[1].firstChild, 10], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 14 [paras[1].firstChild, 10], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 14 [paras[1].firstChild, 10], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 14 [paras[1].firstChild, 10], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 14 [paras[1].firstChild, 10], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 14 [paras[1].firstChild, 10], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 14 [paras[1].firstChild, 10], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 14 [paras[1].firstChild, 10], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 14 [paras[1].firstChild, 10], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 49 [document, 1, document, 2] 
+PASS Point 14 [paras[1].firstChild, 10], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 14 [paras[1].firstChild, 10], range 51 [paras[3], 1, comment, 8] 
+PASS Point 14 [paras[1].firstChild, 10], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 14 [paras[1].firstChild, 10], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 14 [paras[1].firstChild, 10], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 14 [paras[1].firstChild, 10], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 14 [paras[1].firstChild, 10], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 14 [paras[1].firstChild, 10], range 60 detached 
+PASS Point 15 [paras[1].firstChild, 65535], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 15 [paras[1].firstChild, 65535], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 15 [paras[1].firstChild, 65535], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 15 [paras[1].firstChild, 65535], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 15 [paras[1].firstChild, 65535], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 15 [paras[1].firstChild, 65535], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 15 [paras[1].firstChild, 65535], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 15 [paras[1].firstChild, 65535], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 15 [paras[1].firstChild, 65535], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 15 [paras[1].firstChild, 65535], range 13 [document.head, 1, document.head, 1] 
+PASS Point 15 [paras[1].firstChild, 65535], range 14 [document.body, 4, document.body, 5] 
+PASS Point 15 [paras[1].firstChild, 65535], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 15 [paras[1].firstChild, 65535], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 15 [paras[1].firstChild, 65535], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 15 [paras[1].firstChild, 65535], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 15 [paras[1].firstChild, 65535], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 15 [paras[1].firstChild, 65535], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 15 [paras[1].firstChild, 65535], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 15 [paras[1].firstChild, 65535], range 23 [document, 0, document, 1] 
+PASS Point 15 [paras[1].firstChild, 65535], range 24 [document, 0, document, 2] 
+PASS Point 15 [paras[1].firstChild, 65535], range 25 [comment, 2, comment, 3] 
+PASS Point 15 [paras[1].firstChild, 65535], range 26 [testDiv, 0, comment, 5] 
+PASS Point 15 [paras[1].firstChild, 65535], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 15 [paras[1].firstChild, 65535], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 15 [paras[1].firstChild, 65535], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 15 [paras[1].firstChild, 65535], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 15 [paras[1].firstChild, 65535], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 15 [paras[1].firstChild, 65535], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 15 [paras[1].firstChild, 65535], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 15 [paras[1].firstChild, 65535], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 15 [paras[1].firstChild, 65535], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 15 [paras[1].firstChild, 65535], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 15 [paras[1].firstChild, 65535], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 15 [paras[1].firstChild, 65535], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 15 [paras[1].firstChild, 65535], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 15 [paras[1].firstChild, 65535], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 15 [paras[1].firstChild, 65535], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 15 [paras[1].firstChild, 65535], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 49 [document, 1, document, 2] 
+PASS Point 15 [paras[1].firstChild, 65535], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 15 [paras[1].firstChild, 65535], range 51 [paras[3], 1, comment, 8] 
+PASS Point 15 [paras[1].firstChild, 65535], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 15 [paras[1].firstChild, 65535], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 15 [paras[1].firstChild, 65535], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 15 [paras[1].firstChild, 65535], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 15 [paras[1].firstChild, 65535], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 15 [paras[1].firstChild, 65535], range 60 detached 
+PASS Point 16 [detachedPara1.firstChild, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 23 [document, 0, document, 1] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 24 [document, 0, document, 2] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 49 [document, 1, document, 2] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 16 [detachedPara1.firstChild, 0], range 60 detached 
+PASS Point 17 [detachedPara1.firstChild, 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 23 [document, 0, document, 1] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 24 [document, 0, document, 2] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 25 [comment, 2, comment, 3] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 49 [document, 1, document, 2] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 17 [detachedPara1.firstChild, 1], range 60 detached 
+PASS Point 18 [detachedPara1.firstChild, 8], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 13 [document.head, 1, document.head, 1] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 14 [document.body, 4, document.body, 5] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 23 [document, 0, document, 1] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 24 [document, 0, document, 2] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 25 [comment, 2, comment, 3] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 26 [testDiv, 0, comment, 5] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 49 [document, 1, document, 2] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 51 [paras[3], 1, comment, 8] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 18 [detachedPara1.firstChild, 8], range 60 detached 
+PASS Point 19 [detachedPara1.firstChild, 9], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 13 [document.head, 1, document.head, 1] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 14 [document.body, 4, document.body, 5] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 23 [document, 0, document, 1] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 24 [document, 0, document, 2] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 25 [comment, 2, comment, 3] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 26 [testDiv, 0, comment, 5] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 49 [document, 1, document, 2] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 51 [paras[3], 1, comment, 8] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 19 [detachedPara1.firstChild, 9], range 60 detached 
+PASS Point 20 [foreignPara1.firstChild, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 23 [document, 0, document, 1] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 24 [document, 0, document, 2] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 49 [document, 1, document, 2] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 20 [foreignPara1.firstChild, 0], range 60 detached 
+PASS Point 21 [foreignPara1.firstChild, 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 23 [document, 0, document, 1] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 24 [document, 0, document, 2] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 25 [comment, 2, comment, 3] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 49 [document, 1, document, 2] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 21 [foreignPara1.firstChild, 1], range 60 detached 
+PASS Point 22 [foreignPara1.firstChild, 8], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 13 [document.head, 1, document.head, 1] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 14 [document.body, 4, document.body, 5] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 23 [document, 0, document, 1] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 24 [document, 0, document, 2] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 25 [comment, 2, comment, 3] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 26 [testDiv, 0, comment, 5] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 49 [document, 1, document, 2] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 51 [paras[3], 1, comment, 8] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 22 [foreignPara1.firstChild, 8], range 60 detached 
+PASS Point 23 [foreignPara1.firstChild, 9], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 13 [document.head, 1, document.head, 1] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 14 [document.body, 4, document.body, 5] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 23 [document, 0, document, 1] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 24 [document, 0, document, 2] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 25 [comment, 2, comment, 3] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 26 [testDiv, 0, comment, 5] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 49 [document, 1, document, 2] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 51 [paras[3], 1, comment, 8] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 23 [foreignPara1.firstChild, 9], range 60 detached 
+PASS Point 24 [document.documentElement, -1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 24 [document.documentElement, -1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 24 [document.documentElement, -1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 24 [document.documentElement, -1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 24 [document.documentElement, -1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 24 [document.documentElement, -1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 24 [document.documentElement, -1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 24 [document.documentElement, -1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 24 [document.documentElement, -1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 24 [document.documentElement, -1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 24 [document.documentElement, -1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 24 [document.documentElement, -1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 24 [document.documentElement, -1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 24 [document.documentElement, -1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 24 [document.documentElement, -1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 24 [document.documentElement, -1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 24 [document.documentElement, -1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 24 [document.documentElement, -1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 24 [document.documentElement, -1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 24 [document.documentElement, -1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 24 [document.documentElement, -1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 24 [document.documentElement, -1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 24 [document.documentElement, -1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 24 [document.documentElement, -1], range 23 [document, 0, document, 1] 
+PASS Point 24 [document.documentElement, -1], range 24 [document, 0, document, 2] 
+PASS Point 24 [document.documentElement, -1], range 25 [comment, 2, comment, 3] 
+PASS Point 24 [document.documentElement, -1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 24 [document.documentElement, -1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 24 [document.documentElement, -1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 24 [document.documentElement, -1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 24 [document.documentElement, -1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 24 [document.documentElement, -1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 24 [document.documentElement, -1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 24 [document.documentElement, -1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 24 [document.documentElement, -1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 24 [document.documentElement, -1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 24 [document.documentElement, -1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 24 [document.documentElement, -1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 24 [document.documentElement, -1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 24 [document.documentElement, -1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 24 [document.documentElement, -1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 24 [document.documentElement, -1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 24 [document.documentElement, -1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 24 [document.documentElement, -1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 24 [document.documentElement, -1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 24 [document.documentElement, -1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 24 [document.documentElement, -1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 24 [document.documentElement, -1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 24 [document.documentElement, -1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 24 [document.documentElement, -1], range 49 [document, 1, document, 2] 
+PASS Point 24 [document.documentElement, -1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 24 [document.documentElement, -1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 24 [document.documentElement, -1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 24 [document.documentElement, -1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 24 [document.documentElement, -1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 24 [document.documentElement, -1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 24 [document.documentElement, -1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 24 [document.documentElement, -1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 24 [document.documentElement, -1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 24 [document.documentElement, -1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 24 [document.documentElement, -1], range 60 detached 
+PASS Point 25 [document.documentElement, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 25 [document.documentElement, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 25 [document.documentElement, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 25 [document.documentElement, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 25 [document.documentElement, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 25 [document.documentElement, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 25 [document.documentElement, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 25 [document.documentElement, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 25 [document.documentElement, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 25 [document.documentElement, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 25 [document.documentElement, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 25 [document.documentElement, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 25 [document.documentElement, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 25 [document.documentElement, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 25 [document.documentElement, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 25 [document.documentElement, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 25 [document.documentElement, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 25 [document.documentElement, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 25 [document.documentElement, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 25 [document.documentElement, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 25 [document.documentElement, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 25 [document.documentElement, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 25 [document.documentElement, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 25 [document.documentElement, 0], range 23 [document, 0, document, 1] 
+PASS Point 25 [document.documentElement, 0], range 24 [document, 0, document, 2] 
+PASS Point 25 [document.documentElement, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 25 [document.documentElement, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 25 [document.documentElement, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 25 [document.documentElement, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 25 [document.documentElement, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 25 [document.documentElement, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 25 [document.documentElement, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 25 [document.documentElement, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 25 [document.documentElement, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 25 [document.documentElement, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 25 [document.documentElement, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 25 [document.documentElement, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 25 [document.documentElement, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 25 [document.documentElement, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 25 [document.documentElement, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 25 [document.documentElement, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 25 [document.documentElement, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 25 [document.documentElement, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 25 [document.documentElement, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 25 [document.documentElement, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 25 [document.documentElement, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 25 [document.documentElement, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 25 [document.documentElement, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 25 [document.documentElement, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 25 [document.documentElement, 0], range 49 [document, 1, document, 2] 
+PASS Point 25 [document.documentElement, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 25 [document.documentElement, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 25 [document.documentElement, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 25 [document.documentElement, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 25 [document.documentElement, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 25 [document.documentElement, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 25 [document.documentElement, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 25 [document.documentElement, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 25 [document.documentElement, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 25 [document.documentElement, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 25 [document.documentElement, 0], range 60 detached 
+PASS Point 26 [document.documentElement, 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 26 [document.documentElement, 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 26 [document.documentElement, 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 26 [document.documentElement, 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 26 [document.documentElement, 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 26 [document.documentElement, 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 26 [document.documentElement, 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 26 [document.documentElement, 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 26 [document.documentElement, 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 26 [document.documentElement, 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 26 [document.documentElement, 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 26 [document.documentElement, 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 26 [document.documentElement, 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 26 [document.documentElement, 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 26 [document.documentElement, 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 26 [document.documentElement, 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 26 [document.documentElement, 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 26 [document.documentElement, 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 26 [document.documentElement, 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 26 [document.documentElement, 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 26 [document.documentElement, 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 26 [document.documentElement, 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 26 [document.documentElement, 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 26 [document.documentElement, 1], range 23 [document, 0, document, 1] 
+PASS Point 26 [document.documentElement, 1], range 24 [document, 0, document, 2] 
+PASS Point 26 [document.documentElement, 1], range 25 [comment, 2, comment, 3] 
+PASS Point 26 [document.documentElement, 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 26 [document.documentElement, 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 26 [document.documentElement, 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 26 [document.documentElement, 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 26 [document.documentElement, 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 26 [document.documentElement, 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 26 [document.documentElement, 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 26 [document.documentElement, 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 26 [document.documentElement, 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 26 [document.documentElement, 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 26 [document.documentElement, 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 26 [document.documentElement, 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 26 [document.documentElement, 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 26 [document.documentElement, 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 26 [document.documentElement, 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 26 [document.documentElement, 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 26 [document.documentElement, 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 26 [document.documentElement, 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 26 [document.documentElement, 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 26 [document.documentElement, 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 26 [document.documentElement, 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 26 [document.documentElement, 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 26 [document.documentElement, 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 26 [document.documentElement, 1], range 49 [document, 1, document, 2] 
+PASS Point 26 [document.documentElement, 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 26 [document.documentElement, 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 26 [document.documentElement, 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 26 [document.documentElement, 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 26 [document.documentElement, 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 26 [document.documentElement, 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 26 [document.documentElement, 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 26 [document.documentElement, 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 26 [document.documentElement, 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 26 [document.documentElement, 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 26 [document.documentElement, 1], range 60 detached 
+PASS Point 27 [document.documentElement, 2], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 27 [document.documentElement, 2], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 27 [document.documentElement, 2], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 27 [document.documentElement, 2], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 27 [document.documentElement, 2], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 27 [document.documentElement, 2], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 27 [document.documentElement, 2], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 27 [document.documentElement, 2], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 27 [document.documentElement, 2], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 27 [document.documentElement, 2], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 27 [document.documentElement, 2], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 27 [document.documentElement, 2], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 27 [document.documentElement, 2], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 27 [document.documentElement, 2], range 13 [document.head, 1, document.head, 1] 
+PASS Point 27 [document.documentElement, 2], range 14 [document.body, 4, document.body, 5] 
+PASS Point 27 [document.documentElement, 2], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 27 [document.documentElement, 2], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 27 [document.documentElement, 2], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 27 [document.documentElement, 2], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 27 [document.documentElement, 2], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 27 [document.documentElement, 2], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 27 [document.documentElement, 2], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 27 [document.documentElement, 2], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 27 [document.documentElement, 2], range 23 [document, 0, document, 1] 
+PASS Point 27 [document.documentElement, 2], range 24 [document, 0, document, 2] 
+PASS Point 27 [document.documentElement, 2], range 25 [comment, 2, comment, 3] 
+PASS Point 27 [document.documentElement, 2], range 26 [testDiv, 0, comment, 5] 
+PASS Point 27 [document.documentElement, 2], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 27 [document.documentElement, 2], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 27 [document.documentElement, 2], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 27 [document.documentElement, 2], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 27 [document.documentElement, 2], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 27 [document.documentElement, 2], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 27 [document.documentElement, 2], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 27 [document.documentElement, 2], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 27 [document.documentElement, 2], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 27 [document.documentElement, 2], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 27 [document.documentElement, 2], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 27 [document.documentElement, 2], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 27 [document.documentElement, 2], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 27 [document.documentElement, 2], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 27 [document.documentElement, 2], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 27 [document.documentElement, 2], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 27 [document.documentElement, 2], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 27 [document.documentElement, 2], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 27 [document.documentElement, 2], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 27 [document.documentElement, 2], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 27 [document.documentElement, 2], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 27 [document.documentElement, 2], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 27 [document.documentElement, 2], range 49 [document, 1, document, 2] 
+PASS Point 27 [document.documentElement, 2], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 27 [document.documentElement, 2], range 51 [paras[3], 1, comment, 8] 
+PASS Point 27 [document.documentElement, 2], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 27 [document.documentElement, 2], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 27 [document.documentElement, 2], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 27 [document.documentElement, 2], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 27 [document.documentElement, 2], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 27 [document.documentElement, 2], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 27 [document.documentElement, 2], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 27 [document.documentElement, 2], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 27 [document.documentElement, 2], range 60 detached 
+PASS Point 28 [document.documentElement, 7], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 28 [document.documentElement, 7], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 28 [document.documentElement, 7], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 28 [document.documentElement, 7], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 28 [document.documentElement, 7], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 28 [document.documentElement, 7], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 28 [document.documentElement, 7], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 28 [document.documentElement, 7], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 28 [document.documentElement, 7], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 28 [document.documentElement, 7], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 28 [document.documentElement, 7], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 28 [document.documentElement, 7], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 28 [document.documentElement, 7], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 28 [document.documentElement, 7], range 13 [document.head, 1, document.head, 1] 
+PASS Point 28 [document.documentElement, 7], range 14 [document.body, 4, document.body, 5] 
+PASS Point 28 [document.documentElement, 7], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 28 [document.documentElement, 7], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 28 [document.documentElement, 7], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 28 [document.documentElement, 7], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 28 [document.documentElement, 7], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 28 [document.documentElement, 7], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 28 [document.documentElement, 7], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 28 [document.documentElement, 7], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 28 [document.documentElement, 7], range 23 [document, 0, document, 1] 
+PASS Point 28 [document.documentElement, 7], range 24 [document, 0, document, 2] 
+PASS Point 28 [document.documentElement, 7], range 25 [comment, 2, comment, 3] 
+PASS Point 28 [document.documentElement, 7], range 26 [testDiv, 0, comment, 5] 
+PASS Point 28 [document.documentElement, 7], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 28 [document.documentElement, 7], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 28 [document.documentElement, 7], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 28 [document.documentElement, 7], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 28 [document.documentElement, 7], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 28 [document.documentElement, 7], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 28 [document.documentElement, 7], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 28 [document.documentElement, 7], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 28 [document.documentElement, 7], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 28 [document.documentElement, 7], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 28 [document.documentElement, 7], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 28 [document.documentElement, 7], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 28 [document.documentElement, 7], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 28 [document.documentElement, 7], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 28 [document.documentElement, 7], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 28 [document.documentElement, 7], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 28 [document.documentElement, 7], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 28 [document.documentElement, 7], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 28 [document.documentElement, 7], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 28 [document.documentElement, 7], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 28 [document.documentElement, 7], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 28 [document.documentElement, 7], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 28 [document.documentElement, 7], range 49 [document, 1, document, 2] 
+PASS Point 28 [document.documentElement, 7], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 28 [document.documentElement, 7], range 51 [paras[3], 1, comment, 8] 
+PASS Point 28 [document.documentElement, 7], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 28 [document.documentElement, 7], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 28 [document.documentElement, 7], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 28 [document.documentElement, 7], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 28 [document.documentElement, 7], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 28 [document.documentElement, 7], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 28 [document.documentElement, 7], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 28 [document.documentElement, 7], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 28 [document.documentElement, 7], range 60 detached 
+PASS Point 29 [document.head, 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 29 [document.head, 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 29 [document.head, 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 29 [document.head, 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 29 [document.head, 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 29 [document.head, 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 29 [document.head, 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 29 [document.head, 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 29 [document.head, 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 29 [document.head, 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 29 [document.head, 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 29 [document.head, 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 29 [document.head, 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 29 [document.head, 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 29 [document.head, 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 29 [document.head, 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 29 [document.head, 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 29 [document.head, 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 29 [document.head, 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 29 [document.head, 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 29 [document.head, 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 29 [document.head, 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 29 [document.head, 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 29 [document.head, 1], range 23 [document, 0, document, 1] 
+PASS Point 29 [document.head, 1], range 24 [document, 0, document, 2] 
+PASS Point 29 [document.head, 1], range 25 [comment, 2, comment, 3] 
+PASS Point 29 [document.head, 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 29 [document.head, 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 29 [document.head, 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 29 [document.head, 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 29 [document.head, 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 29 [document.head, 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 29 [document.head, 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 29 [document.head, 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 29 [document.head, 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 29 [document.head, 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 29 [document.head, 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 29 [document.head, 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 29 [document.head, 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 29 [document.head, 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 29 [document.head, 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 29 [document.head, 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 29 [document.head, 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 29 [document.head, 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 29 [document.head, 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 29 [document.head, 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 29 [document.head, 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 29 [document.head, 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 29 [document.head, 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 29 [document.head, 1], range 49 [document, 1, document, 2] 
+PASS Point 29 [document.head, 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 29 [document.head, 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 29 [document.head, 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 29 [document.head, 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 29 [document.head, 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 29 [document.head, 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 29 [document.head, 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 29 [document.head, 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 29 [document.head, 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 29 [document.head, 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 29 [document.head, 1], range 60 detached 
+PASS Point 30 [document.body, 3], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 30 [document.body, 3], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 30 [document.body, 3], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 30 [document.body, 3], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 30 [document.body, 3], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 30 [document.body, 3], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 30 [document.body, 3], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 30 [document.body, 3], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 30 [document.body, 3], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 30 [document.body, 3], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 30 [document.body, 3], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 30 [document.body, 3], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 30 [document.body, 3], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 30 [document.body, 3], range 13 [document.head, 1, document.head, 1] 
+PASS Point 30 [document.body, 3], range 14 [document.body, 4, document.body, 5] 
+PASS Point 30 [document.body, 3], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 30 [document.body, 3], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 30 [document.body, 3], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 30 [document.body, 3], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 30 [document.body, 3], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 30 [document.body, 3], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 30 [document.body, 3], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 30 [document.body, 3], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 30 [document.body, 3], range 23 [document, 0, document, 1] 
+PASS Point 30 [document.body, 3], range 24 [document, 0, document, 2] 
+PASS Point 30 [document.body, 3], range 25 [comment, 2, comment, 3] 
+PASS Point 30 [document.body, 3], range 26 [testDiv, 0, comment, 5] 
+PASS Point 30 [document.body, 3], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 30 [document.body, 3], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 30 [document.body, 3], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 30 [document.body, 3], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 30 [document.body, 3], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 30 [document.body, 3], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 30 [document.body, 3], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 30 [document.body, 3], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 30 [document.body, 3], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 30 [document.body, 3], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 30 [document.body, 3], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 30 [document.body, 3], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 30 [document.body, 3], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 30 [document.body, 3], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 30 [document.body, 3], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 30 [document.body, 3], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 30 [document.body, 3], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 30 [document.body, 3], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 30 [document.body, 3], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 30 [document.body, 3], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 30 [document.body, 3], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 30 [document.body, 3], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 30 [document.body, 3], range 49 [document, 1, document, 2] 
+PASS Point 30 [document.body, 3], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 30 [document.body, 3], range 51 [paras[3], 1, comment, 8] 
+PASS Point 30 [document.body, 3], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 30 [document.body, 3], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 30 [document.body, 3], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 30 [document.body, 3], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 30 [document.body, 3], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 30 [document.body, 3], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 30 [document.body, 3], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 30 [document.body, 3], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 30 [document.body, 3], range 60 detached 
+PASS Point 31 [foreignDoc.documentElement, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 23 [document, 0, document, 1] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 24 [document, 0, document, 2] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 49 [document, 1, document, 2] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 31 [foreignDoc.documentElement, 0], range 60 detached 
+PASS Point 32 [foreignDoc.documentElement, 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 23 [document, 0, document, 1] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 24 [document, 0, document, 2] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 25 [comment, 2, comment, 3] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 49 [document, 1, document, 2] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 32 [foreignDoc.documentElement, 1], range 60 detached 
+PASS Point 33 [foreignDoc.head, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 33 [foreignDoc.head, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 33 [foreignDoc.head, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 33 [foreignDoc.head, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 33 [foreignDoc.head, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 33 [foreignDoc.head, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 33 [foreignDoc.head, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 33 [foreignDoc.head, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 33 [foreignDoc.head, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 33 [foreignDoc.head, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 33 [foreignDoc.head, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 33 [foreignDoc.head, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 33 [foreignDoc.head, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 33 [foreignDoc.head, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 33 [foreignDoc.head, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 33 [foreignDoc.head, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 33 [foreignDoc.head, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 33 [foreignDoc.head, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 33 [foreignDoc.head, 0], range 23 [document, 0, document, 1] 
+PASS Point 33 [foreignDoc.head, 0], range 24 [document, 0, document, 2] 
+PASS Point 33 [foreignDoc.head, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 33 [foreignDoc.head, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 33 [foreignDoc.head, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 33 [foreignDoc.head, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 33 [foreignDoc.head, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 33 [foreignDoc.head, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 33 [foreignDoc.head, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 33 [foreignDoc.head, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 33 [foreignDoc.head, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 33 [foreignDoc.head, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 33 [foreignDoc.head, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 33 [foreignDoc.head, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 33 [foreignDoc.head, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 33 [foreignDoc.head, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 33 [foreignDoc.head, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 33 [foreignDoc.head, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 33 [foreignDoc.head, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 33 [foreignDoc.head, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 33 [foreignDoc.head, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 49 [document, 1, document, 2] 
+PASS Point 33 [foreignDoc.head, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 33 [foreignDoc.head, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 33 [foreignDoc.head, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 33 [foreignDoc.head, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 33 [foreignDoc.head, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 33 [foreignDoc.head, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 33 [foreignDoc.head, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 33 [foreignDoc.head, 0], range 60 detached 
+PASS Point 34 [foreignDoc.body, 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 34 [foreignDoc.body, 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 34 [foreignDoc.body, 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 34 [foreignDoc.body, 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 34 [foreignDoc.body, 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 34 [foreignDoc.body, 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 34 [foreignDoc.body, 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 34 [foreignDoc.body, 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 34 [foreignDoc.body, 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 34 [foreignDoc.body, 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 34 [foreignDoc.body, 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 34 [foreignDoc.body, 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 34 [foreignDoc.body, 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 34 [foreignDoc.body, 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 34 [foreignDoc.body, 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 34 [foreignDoc.body, 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 34 [foreignDoc.body, 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 34 [foreignDoc.body, 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 34 [foreignDoc.body, 1], range 23 [document, 0, document, 1] 
+PASS Point 34 [foreignDoc.body, 1], range 24 [document, 0, document, 2] 
+PASS Point 34 [foreignDoc.body, 1], range 25 [comment, 2, comment, 3] 
+PASS Point 34 [foreignDoc.body, 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 34 [foreignDoc.body, 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 34 [foreignDoc.body, 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 34 [foreignDoc.body, 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 34 [foreignDoc.body, 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 34 [foreignDoc.body, 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 34 [foreignDoc.body, 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 34 [foreignDoc.body, 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 34 [foreignDoc.body, 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 34 [foreignDoc.body, 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 34 [foreignDoc.body, 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 34 [foreignDoc.body, 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 34 [foreignDoc.body, 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 34 [foreignDoc.body, 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 34 [foreignDoc.body, 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 34 [foreignDoc.body, 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 34 [foreignDoc.body, 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 34 [foreignDoc.body, 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 49 [document, 1, document, 2] 
+PASS Point 34 [foreignDoc.body, 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 34 [foreignDoc.body, 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 34 [foreignDoc.body, 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 34 [foreignDoc.body, 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 34 [foreignDoc.body, 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 34 [foreignDoc.body, 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 34 [foreignDoc.body, 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 34 [foreignDoc.body, 1], range 60 detached 
+PASS Point 35 [paras[0], 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 35 [paras[0], 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 35 [paras[0], 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 35 [paras[0], 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 35 [paras[0], 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 35 [paras[0], 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 35 [paras[0], 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 35 [paras[0], 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 35 [paras[0], 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 35 [paras[0], 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 35 [paras[0], 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 35 [paras[0], 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 35 [paras[0], 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 35 [paras[0], 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 35 [paras[0], 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 35 [paras[0], 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 35 [paras[0], 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 35 [paras[0], 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 35 [paras[0], 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 35 [paras[0], 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 35 [paras[0], 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 35 [paras[0], 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 35 [paras[0], 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 35 [paras[0], 0], range 23 [document, 0, document, 1] 
+PASS Point 35 [paras[0], 0], range 24 [document, 0, document, 2] 
+PASS Point 35 [paras[0], 0], range 25 [comment, 2, comment, 3] 
+PASS Point 35 [paras[0], 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 35 [paras[0], 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 35 [paras[0], 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 35 [paras[0], 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 35 [paras[0], 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 35 [paras[0], 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 35 [paras[0], 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 35 [paras[0], 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 35 [paras[0], 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 35 [paras[0], 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 35 [paras[0], 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 35 [paras[0], 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 35 [paras[0], 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 35 [paras[0], 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 35 [paras[0], 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 35 [paras[0], 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 35 [paras[0], 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 35 [paras[0], 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 35 [paras[0], 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 35 [paras[0], 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 35 [paras[0], 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 35 [paras[0], 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 35 [paras[0], 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 35 [paras[0], 0], range 49 [document, 1, document, 2] 
+PASS Point 35 [paras[0], 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 35 [paras[0], 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 35 [paras[0], 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 35 [paras[0], 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 35 [paras[0], 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 35 [paras[0], 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 35 [paras[0], 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 35 [paras[0], 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 35 [paras[0], 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 35 [paras[0], 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 35 [paras[0], 0], range 60 detached 
+PASS Point 36 [paras[0], 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 36 [paras[0], 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 36 [paras[0], 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 36 [paras[0], 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 36 [paras[0], 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 36 [paras[0], 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 36 [paras[0], 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 36 [paras[0], 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 36 [paras[0], 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 36 [paras[0], 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 36 [paras[0], 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 36 [paras[0], 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 36 [paras[0], 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 36 [paras[0], 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 36 [paras[0], 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 36 [paras[0], 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 36 [paras[0], 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 36 [paras[0], 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 36 [paras[0], 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 36 [paras[0], 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 36 [paras[0], 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 36 [paras[0], 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 36 [paras[0], 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 36 [paras[0], 1], range 23 [document, 0, document, 1] 
+PASS Point 36 [paras[0], 1], range 24 [document, 0, document, 2] 
+PASS Point 36 [paras[0], 1], range 25 [comment, 2, comment, 3] 
+PASS Point 36 [paras[0], 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 36 [paras[0], 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 36 [paras[0], 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 36 [paras[0], 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 36 [paras[0], 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 36 [paras[0], 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 36 [paras[0], 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 36 [paras[0], 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 36 [paras[0], 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 36 [paras[0], 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 36 [paras[0], 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 36 [paras[0], 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 36 [paras[0], 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 36 [paras[0], 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 36 [paras[0], 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 36 [paras[0], 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 36 [paras[0], 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 36 [paras[0], 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 36 [paras[0], 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 36 [paras[0], 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 36 [paras[0], 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 36 [paras[0], 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 36 [paras[0], 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 36 [paras[0], 1], range 49 [document, 1, document, 2] 
+PASS Point 36 [paras[0], 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 36 [paras[0], 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 36 [paras[0], 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 36 [paras[0], 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 36 [paras[0], 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 36 [paras[0], 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 36 [paras[0], 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 36 [paras[0], 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 36 [paras[0], 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 36 [paras[0], 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 36 [paras[0], 1], range 60 detached 
+PASS Point 37 [paras[0], 2], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 37 [paras[0], 2], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 37 [paras[0], 2], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 37 [paras[0], 2], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 37 [paras[0], 2], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 37 [paras[0], 2], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 37 [paras[0], 2], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 37 [paras[0], 2], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 37 [paras[0], 2], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 37 [paras[0], 2], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 37 [paras[0], 2], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 37 [paras[0], 2], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 37 [paras[0], 2], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 37 [paras[0], 2], range 13 [document.head, 1, document.head, 1] 
+PASS Point 37 [paras[0], 2], range 14 [document.body, 4, document.body, 5] 
+PASS Point 37 [paras[0], 2], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 37 [paras[0], 2], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 37 [paras[0], 2], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 37 [paras[0], 2], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 37 [paras[0], 2], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 37 [paras[0], 2], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 37 [paras[0], 2], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 37 [paras[0], 2], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 37 [paras[0], 2], range 23 [document, 0, document, 1] 
+PASS Point 37 [paras[0], 2], range 24 [document, 0, document, 2] 
+PASS Point 37 [paras[0], 2], range 25 [comment, 2, comment, 3] 
+PASS Point 37 [paras[0], 2], range 26 [testDiv, 0, comment, 5] 
+PASS Point 37 [paras[0], 2], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 37 [paras[0], 2], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 37 [paras[0], 2], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 37 [paras[0], 2], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 37 [paras[0], 2], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 37 [paras[0], 2], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 37 [paras[0], 2], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 37 [paras[0], 2], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 37 [paras[0], 2], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 37 [paras[0], 2], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 37 [paras[0], 2], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 37 [paras[0], 2], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 37 [paras[0], 2], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 37 [paras[0], 2], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 37 [paras[0], 2], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 37 [paras[0], 2], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 37 [paras[0], 2], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 37 [paras[0], 2], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 37 [paras[0], 2], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 37 [paras[0], 2], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 37 [paras[0], 2], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 37 [paras[0], 2], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 37 [paras[0], 2], range 49 [document, 1, document, 2] 
+PASS Point 37 [paras[0], 2], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 37 [paras[0], 2], range 51 [paras[3], 1, comment, 8] 
+PASS Point 37 [paras[0], 2], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 37 [paras[0], 2], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 37 [paras[0], 2], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 37 [paras[0], 2], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 37 [paras[0], 2], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 37 [paras[0], 2], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 37 [paras[0], 2], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 37 [paras[0], 2], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 37 [paras[0], 2], range 60 detached 
+PASS Point 38 [paras[1], 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 38 [paras[1], 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 38 [paras[1], 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 38 [paras[1], 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 38 [paras[1], 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 38 [paras[1], 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 38 [paras[1], 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 38 [paras[1], 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 38 [paras[1], 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 38 [paras[1], 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 38 [paras[1], 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 38 [paras[1], 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 38 [paras[1], 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 38 [paras[1], 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 38 [paras[1], 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 38 [paras[1], 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 38 [paras[1], 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 38 [paras[1], 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 38 [paras[1], 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 38 [paras[1], 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 38 [paras[1], 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 38 [paras[1], 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 38 [paras[1], 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 38 [paras[1], 0], range 23 [document, 0, document, 1] 
+PASS Point 38 [paras[1], 0], range 24 [document, 0, document, 2] 
+PASS Point 38 [paras[1], 0], range 25 [comment, 2, comment, 3] 
+PASS Point 38 [paras[1], 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 38 [paras[1], 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 38 [paras[1], 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 38 [paras[1], 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 38 [paras[1], 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 38 [paras[1], 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 38 [paras[1], 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 38 [paras[1], 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 38 [paras[1], 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 38 [paras[1], 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 38 [paras[1], 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 38 [paras[1], 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 38 [paras[1], 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 38 [paras[1], 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 38 [paras[1], 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 38 [paras[1], 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 38 [paras[1], 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 38 [paras[1], 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 38 [paras[1], 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 38 [paras[1], 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 38 [paras[1], 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 38 [paras[1], 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 38 [paras[1], 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 38 [paras[1], 0], range 49 [document, 1, document, 2] 
+PASS Point 38 [paras[1], 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 38 [paras[1], 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 38 [paras[1], 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 38 [paras[1], 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 38 [paras[1], 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 38 [paras[1], 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 38 [paras[1], 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 38 [paras[1], 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 38 [paras[1], 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 38 [paras[1], 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 38 [paras[1], 0], range 60 detached 
+PASS Point 39 [paras[1], 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 39 [paras[1], 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 39 [paras[1], 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 39 [paras[1], 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 39 [paras[1], 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 39 [paras[1], 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 39 [paras[1], 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 39 [paras[1], 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 39 [paras[1], 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 39 [paras[1], 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 39 [paras[1], 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 39 [paras[1], 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 39 [paras[1], 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 39 [paras[1], 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 39 [paras[1], 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 39 [paras[1], 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 39 [paras[1], 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 39 [paras[1], 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 39 [paras[1], 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 39 [paras[1], 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 39 [paras[1], 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 39 [paras[1], 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 39 [paras[1], 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 39 [paras[1], 1], range 23 [document, 0, document, 1] 
+PASS Point 39 [paras[1], 1], range 24 [document, 0, document, 2] 
+PASS Point 39 [paras[1], 1], range 25 [comment, 2, comment, 3] 
+PASS Point 39 [paras[1], 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 39 [paras[1], 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 39 [paras[1], 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 39 [paras[1], 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 39 [paras[1], 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 39 [paras[1], 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 39 [paras[1], 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 39 [paras[1], 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 39 [paras[1], 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 39 [paras[1], 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 39 [paras[1], 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 39 [paras[1], 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 39 [paras[1], 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 39 [paras[1], 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 39 [paras[1], 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 39 [paras[1], 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 39 [paras[1], 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 39 [paras[1], 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 39 [paras[1], 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 39 [paras[1], 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 39 [paras[1], 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 39 [paras[1], 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 39 [paras[1], 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 39 [paras[1], 1], range 49 [document, 1, document, 2] 
+PASS Point 39 [paras[1], 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 39 [paras[1], 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 39 [paras[1], 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 39 [paras[1], 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 39 [paras[1], 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 39 [paras[1], 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 39 [paras[1], 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 39 [paras[1], 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 39 [paras[1], 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 39 [paras[1], 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 39 [paras[1], 1], range 60 detached 
+PASS Point 40 [paras[1], 2], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 40 [paras[1], 2], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 40 [paras[1], 2], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 40 [paras[1], 2], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 40 [paras[1], 2], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 40 [paras[1], 2], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 40 [paras[1], 2], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 40 [paras[1], 2], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 40 [paras[1], 2], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 40 [paras[1], 2], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 40 [paras[1], 2], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 40 [paras[1], 2], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 40 [paras[1], 2], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 40 [paras[1], 2], range 13 [document.head, 1, document.head, 1] 
+PASS Point 40 [paras[1], 2], range 14 [document.body, 4, document.body, 5] 
+PASS Point 40 [paras[1], 2], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 40 [paras[1], 2], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 40 [paras[1], 2], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 40 [paras[1], 2], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 40 [paras[1], 2], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 40 [paras[1], 2], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 40 [paras[1], 2], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 40 [paras[1], 2], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 40 [paras[1], 2], range 23 [document, 0, document, 1] 
+PASS Point 40 [paras[1], 2], range 24 [document, 0, document, 2] 
+PASS Point 40 [paras[1], 2], range 25 [comment, 2, comment, 3] 
+PASS Point 40 [paras[1], 2], range 26 [testDiv, 0, comment, 5] 
+PASS Point 40 [paras[1], 2], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 40 [paras[1], 2], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 40 [paras[1], 2], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 40 [paras[1], 2], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 40 [paras[1], 2], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 40 [paras[1], 2], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 40 [paras[1], 2], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 40 [paras[1], 2], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 40 [paras[1], 2], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 40 [paras[1], 2], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 40 [paras[1], 2], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 40 [paras[1], 2], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 40 [paras[1], 2], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 40 [paras[1], 2], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 40 [paras[1], 2], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 40 [paras[1], 2], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 40 [paras[1], 2], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 40 [paras[1], 2], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 40 [paras[1], 2], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 40 [paras[1], 2], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 40 [paras[1], 2], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 40 [paras[1], 2], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 40 [paras[1], 2], range 49 [document, 1, document, 2] 
+PASS Point 40 [paras[1], 2], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 40 [paras[1], 2], range 51 [paras[3], 1, comment, 8] 
+PASS Point 40 [paras[1], 2], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 40 [paras[1], 2], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 40 [paras[1], 2], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 40 [paras[1], 2], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 40 [paras[1], 2], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 40 [paras[1], 2], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 40 [paras[1], 2], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 40 [paras[1], 2], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 40 [paras[1], 2], range 60 detached 
+PASS Point 41 [detachedPara1, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 41 [detachedPara1, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 41 [detachedPara1, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 41 [detachedPara1, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 41 [detachedPara1, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 41 [detachedPara1, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 41 [detachedPara1, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 41 [detachedPara1, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 41 [detachedPara1, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 41 [detachedPara1, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 41 [detachedPara1, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 41 [detachedPara1, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 41 [detachedPara1, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 41 [detachedPara1, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 41 [detachedPara1, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 41 [detachedPara1, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 41 [detachedPara1, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 41 [detachedPara1, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 41 [detachedPara1, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 41 [detachedPara1, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 41 [detachedPara1, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 41 [detachedPara1, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 41 [detachedPara1, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 41 [detachedPara1, 0], range 23 [document, 0, document, 1] 
+PASS Point 41 [detachedPara1, 0], range 24 [document, 0, document, 2] 
+PASS Point 41 [detachedPara1, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 41 [detachedPara1, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 41 [detachedPara1, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 41 [detachedPara1, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 41 [detachedPara1, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 41 [detachedPara1, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 41 [detachedPara1, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 41 [detachedPara1, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 41 [detachedPara1, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 41 [detachedPara1, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 41 [detachedPara1, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 41 [detachedPara1, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 41 [detachedPara1, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 41 [detachedPara1, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 41 [detachedPara1, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 41 [detachedPara1, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 41 [detachedPara1, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 41 [detachedPara1, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 41 [detachedPara1, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 41 [detachedPara1, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 41 [detachedPara1, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 41 [detachedPara1, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 41 [detachedPara1, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 41 [detachedPara1, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 41 [detachedPara1, 0], range 49 [document, 1, document, 2] 
+PASS Point 41 [detachedPara1, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 41 [detachedPara1, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 41 [detachedPara1, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 41 [detachedPara1, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 41 [detachedPara1, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 41 [detachedPara1, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 41 [detachedPara1, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 41 [detachedPara1, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 41 [detachedPara1, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 41 [detachedPara1, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 41 [detachedPara1, 0], range 60 detached 
+PASS Point 42 [detachedPara1, 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 42 [detachedPara1, 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 42 [detachedPara1, 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 42 [detachedPara1, 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 42 [detachedPara1, 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 42 [detachedPara1, 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 42 [detachedPara1, 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 42 [detachedPara1, 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 42 [detachedPara1, 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 42 [detachedPara1, 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 42 [detachedPara1, 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 42 [detachedPara1, 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 42 [detachedPara1, 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 42 [detachedPara1, 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 42 [detachedPara1, 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 42 [detachedPara1, 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 42 [detachedPara1, 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 42 [detachedPara1, 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 42 [detachedPara1, 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 42 [detachedPara1, 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 42 [detachedPara1, 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 42 [detachedPara1, 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 42 [detachedPara1, 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 42 [detachedPara1, 1], range 23 [document, 0, document, 1] 
+PASS Point 42 [detachedPara1, 1], range 24 [document, 0, document, 2] 
+PASS Point 42 [detachedPara1, 1], range 25 [comment, 2, comment, 3] 
+PASS Point 42 [detachedPara1, 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 42 [detachedPara1, 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 42 [detachedPara1, 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 42 [detachedPara1, 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 42 [detachedPara1, 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 42 [detachedPara1, 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 42 [detachedPara1, 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 42 [detachedPara1, 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 42 [detachedPara1, 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 42 [detachedPara1, 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 42 [detachedPara1, 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 42 [detachedPara1, 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 42 [detachedPara1, 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 42 [detachedPara1, 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 42 [detachedPara1, 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 42 [detachedPara1, 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 42 [detachedPara1, 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 42 [detachedPara1, 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 42 [detachedPara1, 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 42 [detachedPara1, 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 42 [detachedPara1, 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 42 [detachedPara1, 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 42 [detachedPara1, 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 42 [detachedPara1, 1], range 49 [document, 1, document, 2] 
+PASS Point 42 [detachedPara1, 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 42 [detachedPara1, 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 42 [detachedPara1, 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 42 [detachedPara1, 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 42 [detachedPara1, 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 42 [detachedPara1, 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 42 [detachedPara1, 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 42 [detachedPara1, 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 42 [detachedPara1, 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 42 [detachedPara1, 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 42 [detachedPara1, 1], range 60 detached 
+PASS Point 43 [testDiv, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 43 [testDiv, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 43 [testDiv, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 43 [testDiv, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 43 [testDiv, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 43 [testDiv, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 43 [testDiv, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 43 [testDiv, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 43 [testDiv, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 43 [testDiv, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 43 [testDiv, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 43 [testDiv, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 43 [testDiv, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 43 [testDiv, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 43 [testDiv, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 43 [testDiv, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 43 [testDiv, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 43 [testDiv, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 43 [testDiv, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 43 [testDiv, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 43 [testDiv, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 43 [testDiv, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 43 [testDiv, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 43 [testDiv, 0], range 23 [document, 0, document, 1] 
+PASS Point 43 [testDiv, 0], range 24 [document, 0, document, 2] 
+PASS Point 43 [testDiv, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 43 [testDiv, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 43 [testDiv, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 43 [testDiv, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 43 [testDiv, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 43 [testDiv, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 43 [testDiv, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 43 [testDiv, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 43 [testDiv, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 43 [testDiv, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 43 [testDiv, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 43 [testDiv, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 43 [testDiv, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 43 [testDiv, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 43 [testDiv, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 43 [testDiv, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 43 [testDiv, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 43 [testDiv, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 43 [testDiv, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 43 [testDiv, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 43 [testDiv, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 43 [testDiv, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 43 [testDiv, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 43 [testDiv, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 43 [testDiv, 0], range 49 [document, 1, document, 2] 
+PASS Point 43 [testDiv, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 43 [testDiv, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 43 [testDiv, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 43 [testDiv, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 43 [testDiv, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 43 [testDiv, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 43 [testDiv, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 43 [testDiv, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 43 [testDiv, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 43 [testDiv, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 43 [testDiv, 0], range 60 detached 
+PASS Point 44 [testDiv, 3], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 44 [testDiv, 3], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 44 [testDiv, 3], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 44 [testDiv, 3], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 44 [testDiv, 3], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 44 [testDiv, 3], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 44 [testDiv, 3], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 44 [testDiv, 3], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 44 [testDiv, 3], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 44 [testDiv, 3], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 44 [testDiv, 3], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 44 [testDiv, 3], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 44 [testDiv, 3], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 44 [testDiv, 3], range 13 [document.head, 1, document.head, 1] 
+PASS Point 44 [testDiv, 3], range 14 [document.body, 4, document.body, 5] 
+PASS Point 44 [testDiv, 3], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 44 [testDiv, 3], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 44 [testDiv, 3], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 44 [testDiv, 3], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 44 [testDiv, 3], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 44 [testDiv, 3], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 44 [testDiv, 3], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 44 [testDiv, 3], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 44 [testDiv, 3], range 23 [document, 0, document, 1] 
+PASS Point 44 [testDiv, 3], range 24 [document, 0, document, 2] 
+PASS Point 44 [testDiv, 3], range 25 [comment, 2, comment, 3] 
+PASS Point 44 [testDiv, 3], range 26 [testDiv, 0, comment, 5] 
+PASS Point 44 [testDiv, 3], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 44 [testDiv, 3], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 44 [testDiv, 3], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 44 [testDiv, 3], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 44 [testDiv, 3], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 44 [testDiv, 3], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 44 [testDiv, 3], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 44 [testDiv, 3], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 44 [testDiv, 3], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 44 [testDiv, 3], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 44 [testDiv, 3], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 44 [testDiv, 3], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 44 [testDiv, 3], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 44 [testDiv, 3], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 44 [testDiv, 3], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 44 [testDiv, 3], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 44 [testDiv, 3], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 44 [testDiv, 3], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 44 [testDiv, 3], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 44 [testDiv, 3], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 44 [testDiv, 3], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 44 [testDiv, 3], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 44 [testDiv, 3], range 49 [document, 1, document, 2] 
+PASS Point 44 [testDiv, 3], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 44 [testDiv, 3], range 51 [paras[3], 1, comment, 8] 
+PASS Point 44 [testDiv, 3], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 44 [testDiv, 3], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 44 [testDiv, 3], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 44 [testDiv, 3], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 44 [testDiv, 3], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 44 [testDiv, 3], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 44 [testDiv, 3], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 44 [testDiv, 3], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 44 [testDiv, 3], range 60 detached 
+PASS Point 45 [document, -1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 45 [document, -1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 45 [document, -1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 45 [document, -1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 45 [document, -1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 45 [document, -1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 45 [document, -1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 45 [document, -1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 45 [document, -1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 45 [document, -1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 45 [document, -1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 45 [document, -1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 45 [document, -1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 45 [document, -1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 45 [document, -1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 45 [document, -1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 45 [document, -1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 45 [document, -1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 45 [document, -1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 45 [document, -1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 45 [document, -1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 45 [document, -1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 45 [document, -1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 45 [document, -1], range 23 [document, 0, document, 1] 
+PASS Point 45 [document, -1], range 24 [document, 0, document, 2] 
+PASS Point 45 [document, -1], range 25 [comment, 2, comment, 3] 
+PASS Point 45 [document, -1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 45 [document, -1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 45 [document, -1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 45 [document, -1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 45 [document, -1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 45 [document, -1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 45 [document, -1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 45 [document, -1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 45 [document, -1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 45 [document, -1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 45 [document, -1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 45 [document, -1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 45 [document, -1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 45 [document, -1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 45 [document, -1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 45 [document, -1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 45 [document, -1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 45 [document, -1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 45 [document, -1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 45 [document, -1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 45 [document, -1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 45 [document, -1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 45 [document, -1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 45 [document, -1], range 49 [document, 1, document, 2] 
+PASS Point 45 [document, -1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 45 [document, -1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 45 [document, -1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 45 [document, -1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 45 [document, -1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 45 [document, -1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 45 [document, -1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 45 [document, -1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 45 [document, -1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 45 [document, -1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 45 [document, -1], range 60 detached 
+PASS Point 46 [document, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 46 [document, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 46 [document, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 46 [document, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 46 [document, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 46 [document, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 46 [document, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 46 [document, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 46 [document, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 46 [document, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 46 [document, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 46 [document, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 46 [document, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 46 [document, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 46 [document, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 46 [document, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 46 [document, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 46 [document, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 46 [document, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 46 [document, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 46 [document, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 46 [document, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 46 [document, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 46 [document, 0], range 23 [document, 0, document, 1] 
+PASS Point 46 [document, 0], range 24 [document, 0, document, 2] 
+PASS Point 46 [document, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 46 [document, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 46 [document, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 46 [document, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 46 [document, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 46 [document, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 46 [document, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 46 [document, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 46 [document, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 46 [document, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 46 [document, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 46 [document, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 46 [document, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 46 [document, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 46 [document, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 46 [document, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 46 [document, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 46 [document, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 46 [document, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 46 [document, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 46 [document, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 46 [document, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 46 [document, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 46 [document, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 46 [document, 0], range 49 [document, 1, document, 2] 
+PASS Point 46 [document, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 46 [document, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 46 [document, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 46 [document, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 46 [document, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 46 [document, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 46 [document, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 46 [document, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 46 [document, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 46 [document, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 46 [document, 0], range 60 detached 
+PASS Point 47 [document, 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 47 [document, 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 47 [document, 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 47 [document, 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 47 [document, 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 47 [document, 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 47 [document, 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 47 [document, 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 47 [document, 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 47 [document, 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 47 [document, 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 47 [document, 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 47 [document, 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 47 [document, 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 47 [document, 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 47 [document, 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 47 [document, 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 47 [document, 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 47 [document, 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 47 [document, 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 47 [document, 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 47 [document, 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 47 [document, 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 47 [document, 1], range 23 [document, 0, document, 1] 
+PASS Point 47 [document, 1], range 24 [document, 0, document, 2] 
+PASS Point 47 [document, 1], range 25 [comment, 2, comment, 3] 
+PASS Point 47 [document, 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 47 [document, 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 47 [document, 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 47 [document, 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 47 [document, 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 47 [document, 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 47 [document, 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 47 [document, 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 47 [document, 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 47 [document, 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 47 [document, 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 47 [document, 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 47 [document, 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 47 [document, 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 47 [document, 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 47 [document, 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 47 [document, 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 47 [document, 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 47 [document, 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 47 [document, 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 47 [document, 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 47 [document, 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 47 [document, 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 47 [document, 1], range 49 [document, 1, document, 2] 
+PASS Point 47 [document, 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 47 [document, 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 47 [document, 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 47 [document, 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 47 [document, 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 47 [document, 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 47 [document, 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 47 [document, 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 47 [document, 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 47 [document, 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 47 [document, 1], range 60 detached 
+PASS Point 48 [document, 2], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 48 [document, 2], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 48 [document, 2], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 48 [document, 2], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 48 [document, 2], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 48 [document, 2], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 48 [document, 2], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 48 [document, 2], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 48 [document, 2], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 48 [document, 2], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 48 [document, 2], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 48 [document, 2], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 48 [document, 2], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 48 [document, 2], range 13 [document.head, 1, document.head, 1] 
+PASS Point 48 [document, 2], range 14 [document.body, 4, document.body, 5] 
+PASS Point 48 [document, 2], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 48 [document, 2], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 48 [document, 2], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 48 [document, 2], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 48 [document, 2], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 48 [document, 2], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 48 [document, 2], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 48 [document, 2], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 48 [document, 2], range 23 [document, 0, document, 1] 
+PASS Point 48 [document, 2], range 24 [document, 0, document, 2] 
+PASS Point 48 [document, 2], range 25 [comment, 2, comment, 3] 
+PASS Point 48 [document, 2], range 26 [testDiv, 0, comment, 5] 
+PASS Point 48 [document, 2], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 48 [document, 2], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 48 [document, 2], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 48 [document, 2], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 48 [document, 2], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 48 [document, 2], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 48 [document, 2], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 48 [document, 2], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 48 [document, 2], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 48 [document, 2], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 48 [document, 2], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 48 [document, 2], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 48 [document, 2], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 48 [document, 2], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 48 [document, 2], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 48 [document, 2], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 48 [document, 2], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 48 [document, 2], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 48 [document, 2], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 48 [document, 2], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 48 [document, 2], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 48 [document, 2], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 48 [document, 2], range 49 [document, 1, document, 2] 
+PASS Point 48 [document, 2], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 48 [document, 2], range 51 [paras[3], 1, comment, 8] 
+PASS Point 48 [document, 2], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 48 [document, 2], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 48 [document, 2], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 48 [document, 2], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 48 [document, 2], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 48 [document, 2], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 48 [document, 2], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 48 [document, 2], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 48 [document, 2], range 60 detached 
+PASS Point 49 [document, 3], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 49 [document, 3], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 49 [document, 3], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 49 [document, 3], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 49 [document, 3], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 49 [document, 3], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 49 [document, 3], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 49 [document, 3], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 49 [document, 3], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 49 [document, 3], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 49 [document, 3], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 49 [document, 3], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 49 [document, 3], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 49 [document, 3], range 13 [document.head, 1, document.head, 1] 
+PASS Point 49 [document, 3], range 14 [document.body, 4, document.body, 5] 
+PASS Point 49 [document, 3], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 49 [document, 3], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 49 [document, 3], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 49 [document, 3], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 49 [document, 3], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 49 [document, 3], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 49 [document, 3], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 49 [document, 3], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 49 [document, 3], range 23 [document, 0, document, 1] 
+PASS Point 49 [document, 3], range 24 [document, 0, document, 2] 
+PASS Point 49 [document, 3], range 25 [comment, 2, comment, 3] 
+PASS Point 49 [document, 3], range 26 [testDiv, 0, comment, 5] 
+PASS Point 49 [document, 3], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 49 [document, 3], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 49 [document, 3], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 49 [document, 3], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 49 [document, 3], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 49 [document, 3], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 49 [document, 3], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 49 [document, 3], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 49 [document, 3], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 49 [document, 3], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 49 [document, 3], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 49 [document, 3], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 49 [document, 3], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 49 [document, 3], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 49 [document, 3], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 49 [document, 3], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 49 [document, 3], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 49 [document, 3], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 49 [document, 3], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 49 [document, 3], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 49 [document, 3], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 49 [document, 3], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 49 [document, 3], range 49 [document, 1, document, 2] 
+PASS Point 49 [document, 3], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 49 [document, 3], range 51 [paras[3], 1, comment, 8] 
+PASS Point 49 [document, 3], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 49 [document, 3], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 49 [document, 3], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 49 [document, 3], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 49 [document, 3], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 49 [document, 3], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 49 [document, 3], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 49 [document, 3], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 49 [document, 3], range 60 detached 
+PASS Point 50 [comment, -1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 50 [comment, -1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 50 [comment, -1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 50 [comment, -1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 50 [comment, -1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 50 [comment, -1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 50 [comment, -1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 50 [comment, -1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 50 [comment, -1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 50 [comment, -1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 50 [comment, -1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 50 [comment, -1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 50 [comment, -1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 50 [comment, -1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 50 [comment, -1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 50 [comment, -1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 50 [comment, -1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 50 [comment, -1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 50 [comment, -1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 50 [comment, -1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 50 [comment, -1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 50 [comment, -1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 50 [comment, -1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 50 [comment, -1], range 23 [document, 0, document, 1] 
+PASS Point 50 [comment, -1], range 24 [document, 0, document, 2] 
+PASS Point 50 [comment, -1], range 25 [comment, 2, comment, 3] 
+PASS Point 50 [comment, -1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 50 [comment, -1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 50 [comment, -1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 50 [comment, -1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 50 [comment, -1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 50 [comment, -1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 50 [comment, -1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 50 [comment, -1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 50 [comment, -1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 50 [comment, -1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 50 [comment, -1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 50 [comment, -1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 50 [comment, -1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 50 [comment, -1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 50 [comment, -1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 50 [comment, -1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 50 [comment, -1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 50 [comment, -1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 50 [comment, -1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 50 [comment, -1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 50 [comment, -1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 50 [comment, -1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 50 [comment, -1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 50 [comment, -1], range 49 [document, 1, document, 2] 
+PASS Point 50 [comment, -1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 50 [comment, -1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 50 [comment, -1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 50 [comment, -1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 50 [comment, -1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 50 [comment, -1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 50 [comment, -1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 50 [comment, -1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 50 [comment, -1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 50 [comment, -1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 50 [comment, -1], range 60 detached 
+PASS Point 51 [comment, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 51 [comment, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 51 [comment, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 51 [comment, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 51 [comment, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 51 [comment, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 51 [comment, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 51 [comment, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 51 [comment, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 51 [comment, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 51 [comment, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 51 [comment, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 51 [comment, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 51 [comment, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 51 [comment, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 51 [comment, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 51 [comment, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 51 [comment, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 51 [comment, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 51 [comment, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 51 [comment, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 51 [comment, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 51 [comment, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 51 [comment, 0], range 23 [document, 0, document, 1] 
+PASS Point 51 [comment, 0], range 24 [document, 0, document, 2] 
+PASS Point 51 [comment, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 51 [comment, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 51 [comment, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 51 [comment, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 51 [comment, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 51 [comment, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 51 [comment, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 51 [comment, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 51 [comment, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 51 [comment, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 51 [comment, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 51 [comment, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 51 [comment, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 51 [comment, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 51 [comment, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 51 [comment, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 51 [comment, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 51 [comment, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 51 [comment, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 51 [comment, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 51 [comment, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 51 [comment, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 51 [comment, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 51 [comment, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 51 [comment, 0], range 49 [document, 1, document, 2] 
+PASS Point 51 [comment, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 51 [comment, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 51 [comment, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 51 [comment, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 51 [comment, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 51 [comment, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 51 [comment, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 51 [comment, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 51 [comment, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 51 [comment, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 51 [comment, 0], range 60 detached 
+PASS Point 52 [comment, 4], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 52 [comment, 4], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 52 [comment, 4], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 52 [comment, 4], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 52 [comment, 4], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 52 [comment, 4], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 52 [comment, 4], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 52 [comment, 4], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 52 [comment, 4], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 52 [comment, 4], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 52 [comment, 4], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 52 [comment, 4], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 52 [comment, 4], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 52 [comment, 4], range 13 [document.head, 1, document.head, 1] 
+PASS Point 52 [comment, 4], range 14 [document.body, 4, document.body, 5] 
+PASS Point 52 [comment, 4], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 52 [comment, 4], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 52 [comment, 4], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 52 [comment, 4], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 52 [comment, 4], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 52 [comment, 4], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 52 [comment, 4], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 52 [comment, 4], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 52 [comment, 4], range 23 [document, 0, document, 1] 
+PASS Point 52 [comment, 4], range 24 [document, 0, document, 2] 
+PASS Point 52 [comment, 4], range 25 [comment, 2, comment, 3] 
+PASS Point 52 [comment, 4], range 26 [testDiv, 0, comment, 5] 
+PASS Point 52 [comment, 4], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 52 [comment, 4], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 52 [comment, 4], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 52 [comment, 4], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 52 [comment, 4], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 52 [comment, 4], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 52 [comment, 4], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 52 [comment, 4], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 52 [comment, 4], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 52 [comment, 4], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 52 [comment, 4], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 52 [comment, 4], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 52 [comment, 4], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 52 [comment, 4], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 52 [comment, 4], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 52 [comment, 4], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 52 [comment, 4], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 52 [comment, 4], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 52 [comment, 4], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 52 [comment, 4], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 52 [comment, 4], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 52 [comment, 4], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 52 [comment, 4], range 49 [document, 1, document, 2] 
+PASS Point 52 [comment, 4], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 52 [comment, 4], range 51 [paras[3], 1, comment, 8] 
+PASS Point 52 [comment, 4], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 52 [comment, 4], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 52 [comment, 4], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 52 [comment, 4], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 52 [comment, 4], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 52 [comment, 4], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 52 [comment, 4], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 52 [comment, 4], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 52 [comment, 4], range 60 detached 
+PASS Point 53 [comment, 96], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 53 [comment, 96], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 53 [comment, 96], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 53 [comment, 96], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 53 [comment, 96], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 53 [comment, 96], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 53 [comment, 96], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 53 [comment, 96], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 53 [comment, 96], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 53 [comment, 96], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 53 [comment, 96], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 53 [comment, 96], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 53 [comment, 96], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 53 [comment, 96], range 13 [document.head, 1, document.head, 1] 
+PASS Point 53 [comment, 96], range 14 [document.body, 4, document.body, 5] 
+PASS Point 53 [comment, 96], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 53 [comment, 96], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 53 [comment, 96], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 53 [comment, 96], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 53 [comment, 96], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 53 [comment, 96], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 53 [comment, 96], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 53 [comment, 96], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 53 [comment, 96], range 23 [document, 0, document, 1] 
+PASS Point 53 [comment, 96], range 24 [document, 0, document, 2] 
+PASS Point 53 [comment, 96], range 25 [comment, 2, comment, 3] 
+PASS Point 53 [comment, 96], range 26 [testDiv, 0, comment, 5] 
+PASS Point 53 [comment, 96], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 53 [comment, 96], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 53 [comment, 96], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 53 [comment, 96], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 53 [comment, 96], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 53 [comment, 96], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 53 [comment, 96], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 53 [comment, 96], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 53 [comment, 96], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 53 [comment, 96], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 53 [comment, 96], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 53 [comment, 96], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 53 [comment, 96], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 53 [comment, 96], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 53 [comment, 96], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 53 [comment, 96], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 53 [comment, 96], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 53 [comment, 96], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 53 [comment, 96], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 53 [comment, 96], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 53 [comment, 96], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 53 [comment, 96], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 53 [comment, 96], range 49 [document, 1, document, 2] 
+PASS Point 53 [comment, 96], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 53 [comment, 96], range 51 [paras[3], 1, comment, 8] 
+PASS Point 53 [comment, 96], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 53 [comment, 96], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 53 [comment, 96], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 53 [comment, 96], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 53 [comment, 96], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 53 [comment, 96], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 53 [comment, 96], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 53 [comment, 96], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 53 [comment, 96], range 60 detached 
+PASS Point 54 [foreignDoc, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 54 [foreignDoc, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 54 [foreignDoc, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 54 [foreignDoc, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 54 [foreignDoc, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 54 [foreignDoc, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 54 [foreignDoc, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 54 [foreignDoc, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 54 [foreignDoc, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 54 [foreignDoc, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 54 [foreignDoc, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 54 [foreignDoc, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 54 [foreignDoc, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 54 [foreignDoc, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 54 [foreignDoc, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 54 [foreignDoc, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 54 [foreignDoc, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 54 [foreignDoc, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 54 [foreignDoc, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 54 [foreignDoc, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 54 [foreignDoc, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 54 [foreignDoc, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 54 [foreignDoc, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 54 [foreignDoc, 0], range 23 [document, 0, document, 1] 
+PASS Point 54 [foreignDoc, 0], range 24 [document, 0, document, 2] 
+PASS Point 54 [foreignDoc, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 54 [foreignDoc, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 54 [foreignDoc, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 54 [foreignDoc, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 54 [foreignDoc, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 54 [foreignDoc, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 54 [foreignDoc, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 54 [foreignDoc, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 54 [foreignDoc, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 54 [foreignDoc, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 54 [foreignDoc, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 54 [foreignDoc, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 54 [foreignDoc, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 54 [foreignDoc, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 54 [foreignDoc, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 54 [foreignDoc, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 54 [foreignDoc, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 54 [foreignDoc, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 54 [foreignDoc, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 54 [foreignDoc, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 54 [foreignDoc, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 54 [foreignDoc, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 54 [foreignDoc, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 54 [foreignDoc, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 54 [foreignDoc, 0], range 49 [document, 1, document, 2] 
+PASS Point 54 [foreignDoc, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 54 [foreignDoc, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 54 [foreignDoc, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 54 [foreignDoc, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 54 [foreignDoc, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 54 [foreignDoc, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 54 [foreignDoc, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 54 [foreignDoc, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 54 [foreignDoc, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 54 [foreignDoc, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 54 [foreignDoc, 0], range 60 detached 
+PASS Point 55 [foreignDoc, 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 55 [foreignDoc, 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 55 [foreignDoc, 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 55 [foreignDoc, 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 55 [foreignDoc, 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 55 [foreignDoc, 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 55 [foreignDoc, 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 55 [foreignDoc, 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 55 [foreignDoc, 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 55 [foreignDoc, 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 55 [foreignDoc, 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 55 [foreignDoc, 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 55 [foreignDoc, 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 55 [foreignDoc, 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 55 [foreignDoc, 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 55 [foreignDoc, 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 55 [foreignDoc, 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 55 [foreignDoc, 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 55 [foreignDoc, 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 55 [foreignDoc, 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 55 [foreignDoc, 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 55 [foreignDoc, 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 55 [foreignDoc, 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 55 [foreignDoc, 1], range 23 [document, 0, document, 1] 
+PASS Point 55 [foreignDoc, 1], range 24 [document, 0, document, 2] 
+PASS Point 55 [foreignDoc, 1], range 25 [comment, 2, comment, 3] 
+PASS Point 55 [foreignDoc, 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 55 [foreignDoc, 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 55 [foreignDoc, 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 55 [foreignDoc, 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 55 [foreignDoc, 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 55 [foreignDoc, 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 55 [foreignDoc, 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 55 [foreignDoc, 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 55 [foreignDoc, 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 55 [foreignDoc, 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 55 [foreignDoc, 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 55 [foreignDoc, 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 55 [foreignDoc, 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 55 [foreignDoc, 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 55 [foreignDoc, 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 55 [foreignDoc, 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 55 [foreignDoc, 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 55 [foreignDoc, 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 55 [foreignDoc, 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 55 [foreignDoc, 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 55 [foreignDoc, 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 55 [foreignDoc, 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 55 [foreignDoc, 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 55 [foreignDoc, 1], range 49 [document, 1, document, 2] 
+PASS Point 55 [foreignDoc, 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 55 [foreignDoc, 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 55 [foreignDoc, 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 55 [foreignDoc, 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 55 [foreignDoc, 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 55 [foreignDoc, 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 55 [foreignDoc, 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 55 [foreignDoc, 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 55 [foreignDoc, 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 55 [foreignDoc, 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 55 [foreignDoc, 1], range 60 detached 
+PASS Point 56 [foreignComment, 2], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 56 [foreignComment, 2], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 56 [foreignComment, 2], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 56 [foreignComment, 2], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 56 [foreignComment, 2], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 56 [foreignComment, 2], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 56 [foreignComment, 2], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 56 [foreignComment, 2], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 56 [foreignComment, 2], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 56 [foreignComment, 2], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 56 [foreignComment, 2], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 56 [foreignComment, 2], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 56 [foreignComment, 2], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 56 [foreignComment, 2], range 13 [document.head, 1, document.head, 1] 
+PASS Point 56 [foreignComment, 2], range 14 [document.body, 4, document.body, 5] 
+PASS Point 56 [foreignComment, 2], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 56 [foreignComment, 2], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 56 [foreignComment, 2], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 56 [foreignComment, 2], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 56 [foreignComment, 2], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 56 [foreignComment, 2], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 56 [foreignComment, 2], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 56 [foreignComment, 2], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 56 [foreignComment, 2], range 23 [document, 0, document, 1] 
+PASS Point 56 [foreignComment, 2], range 24 [document, 0, document, 2] 
+PASS Point 56 [foreignComment, 2], range 25 [comment, 2, comment, 3] 
+PASS Point 56 [foreignComment, 2], range 26 [testDiv, 0, comment, 5] 
+PASS Point 56 [foreignComment, 2], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 56 [foreignComment, 2], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 56 [foreignComment, 2], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 56 [foreignComment, 2], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 56 [foreignComment, 2], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 56 [foreignComment, 2], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 56 [foreignComment, 2], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 56 [foreignComment, 2], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 56 [foreignComment, 2], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 56 [foreignComment, 2], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 56 [foreignComment, 2], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 56 [foreignComment, 2], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 56 [foreignComment, 2], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 56 [foreignComment, 2], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 56 [foreignComment, 2], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 56 [foreignComment, 2], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 56 [foreignComment, 2], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 56 [foreignComment, 2], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 56 [foreignComment, 2], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 56 [foreignComment, 2], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 56 [foreignComment, 2], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 56 [foreignComment, 2], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 56 [foreignComment, 2], range 49 [document, 1, document, 2] 
+PASS Point 56 [foreignComment, 2], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 56 [foreignComment, 2], range 51 [paras[3], 1, comment, 8] 
+PASS Point 56 [foreignComment, 2], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 56 [foreignComment, 2], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 56 [foreignComment, 2], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 56 [foreignComment, 2], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 56 [foreignComment, 2], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 56 [foreignComment, 2], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 56 [foreignComment, 2], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 56 [foreignComment, 2], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 56 [foreignComment, 2], range 60 detached 
+PASS Point 57 [foreignTextNode, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 57 [foreignTextNode, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 57 [foreignTextNode, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 57 [foreignTextNode, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 57 [foreignTextNode, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 57 [foreignTextNode, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 57 [foreignTextNode, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 57 [foreignTextNode, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 57 [foreignTextNode, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 57 [foreignTextNode, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 57 [foreignTextNode, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 57 [foreignTextNode, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 57 [foreignTextNode, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 57 [foreignTextNode, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 57 [foreignTextNode, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 57 [foreignTextNode, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 57 [foreignTextNode, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 57 [foreignTextNode, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 57 [foreignTextNode, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 57 [foreignTextNode, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 57 [foreignTextNode, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 57 [foreignTextNode, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 57 [foreignTextNode, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 57 [foreignTextNode, 0], range 23 [document, 0, document, 1] 
+PASS Point 57 [foreignTextNode, 0], range 24 [document, 0, document, 2] 
+PASS Point 57 [foreignTextNode, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 57 [foreignTextNode, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 57 [foreignTextNode, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 57 [foreignTextNode, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 57 [foreignTextNode, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 57 [foreignTextNode, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 57 [foreignTextNode, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 57 [foreignTextNode, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 57 [foreignTextNode, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 57 [foreignTextNode, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 57 [foreignTextNode, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 57 [foreignTextNode, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 57 [foreignTextNode, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 57 [foreignTextNode, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 57 [foreignTextNode, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 57 [foreignTextNode, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 57 [foreignTextNode, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 57 [foreignTextNode, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 57 [foreignTextNode, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 57 [foreignTextNode, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 57 [foreignTextNode, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 57 [foreignTextNode, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 57 [foreignTextNode, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 57 [foreignTextNode, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 57 [foreignTextNode, 0], range 49 [document, 1, document, 2] 
+PASS Point 57 [foreignTextNode, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 57 [foreignTextNode, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 57 [foreignTextNode, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 57 [foreignTextNode, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 57 [foreignTextNode, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 57 [foreignTextNode, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 57 [foreignTextNode, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 57 [foreignTextNode, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 57 [foreignTextNode, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 57 [foreignTextNode, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 57 [foreignTextNode, 0], range 60 detached 
+PASS Point 58 [foreignTextNode, 36], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 58 [foreignTextNode, 36], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 58 [foreignTextNode, 36], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 58 [foreignTextNode, 36], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 58 [foreignTextNode, 36], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 58 [foreignTextNode, 36], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 58 [foreignTextNode, 36], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 58 [foreignTextNode, 36], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 58 [foreignTextNode, 36], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 58 [foreignTextNode, 36], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 58 [foreignTextNode, 36], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 58 [foreignTextNode, 36], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 58 [foreignTextNode, 36], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 58 [foreignTextNode, 36], range 13 [document.head, 1, document.head, 1] 
+PASS Point 58 [foreignTextNode, 36], range 14 [document.body, 4, document.body, 5] 
+PASS Point 58 [foreignTextNode, 36], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 58 [foreignTextNode, 36], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 58 [foreignTextNode, 36], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 58 [foreignTextNode, 36], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 58 [foreignTextNode, 36], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 58 [foreignTextNode, 36], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 58 [foreignTextNode, 36], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 58 [foreignTextNode, 36], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 58 [foreignTextNode, 36], range 23 [document, 0, document, 1] 
+PASS Point 58 [foreignTextNode, 36], range 24 [document, 0, document, 2] 
+PASS Point 58 [foreignTextNode, 36], range 25 [comment, 2, comment, 3] 
+PASS Point 58 [foreignTextNode, 36], range 26 [testDiv, 0, comment, 5] 
+PASS Point 58 [foreignTextNode, 36], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 58 [foreignTextNode, 36], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 58 [foreignTextNode, 36], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 58 [foreignTextNode, 36], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 58 [foreignTextNode, 36], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 58 [foreignTextNode, 36], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 58 [foreignTextNode, 36], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 58 [foreignTextNode, 36], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 58 [foreignTextNode, 36], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 58 [foreignTextNode, 36], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 58 [foreignTextNode, 36], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 58 [foreignTextNode, 36], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 58 [foreignTextNode, 36], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 58 [foreignTextNode, 36], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 58 [foreignTextNode, 36], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 58 [foreignTextNode, 36], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 58 [foreignTextNode, 36], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 58 [foreignTextNode, 36], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 58 [foreignTextNode, 36], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 58 [foreignTextNode, 36], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 58 [foreignTextNode, 36], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 58 [foreignTextNode, 36], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 58 [foreignTextNode, 36], range 49 [document, 1, document, 2] 
+PASS Point 58 [foreignTextNode, 36], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 58 [foreignTextNode, 36], range 51 [paras[3], 1, comment, 8] 
+PASS Point 58 [foreignTextNode, 36], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 58 [foreignTextNode, 36], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 58 [foreignTextNode, 36], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 58 [foreignTextNode, 36], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 58 [foreignTextNode, 36], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 58 [foreignTextNode, 36], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 58 [foreignTextNode, 36], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 58 [foreignTextNode, 36], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 58 [foreignTextNode, 36], range 60 detached 
+PASS Point 59 [xmlDoc, -1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 59 [xmlDoc, -1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 59 [xmlDoc, -1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 59 [xmlDoc, -1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 59 [xmlDoc, -1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 59 [xmlDoc, -1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 59 [xmlDoc, -1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 59 [xmlDoc, -1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 59 [xmlDoc, -1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 59 [xmlDoc, -1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 59 [xmlDoc, -1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 59 [xmlDoc, -1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 59 [xmlDoc, -1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 59 [xmlDoc, -1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 59 [xmlDoc, -1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 59 [xmlDoc, -1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 59 [xmlDoc, -1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 59 [xmlDoc, -1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 59 [xmlDoc, -1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 59 [xmlDoc, -1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 59 [xmlDoc, -1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 59 [xmlDoc, -1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 59 [xmlDoc, -1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 59 [xmlDoc, -1], range 23 [document, 0, document, 1] 
+PASS Point 59 [xmlDoc, -1], range 24 [document, 0, document, 2] 
+PASS Point 59 [xmlDoc, -1], range 25 [comment, 2, comment, 3] 
+PASS Point 59 [xmlDoc, -1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 59 [xmlDoc, -1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 59 [xmlDoc, -1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 59 [xmlDoc, -1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 59 [xmlDoc, -1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 59 [xmlDoc, -1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 59 [xmlDoc, -1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 59 [xmlDoc, -1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 59 [xmlDoc, -1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 59 [xmlDoc, -1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 59 [xmlDoc, -1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 59 [xmlDoc, -1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 59 [xmlDoc, -1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 59 [xmlDoc, -1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 59 [xmlDoc, -1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 59 [xmlDoc, -1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 59 [xmlDoc, -1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 59 [xmlDoc, -1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 59 [xmlDoc, -1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 59 [xmlDoc, -1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 59 [xmlDoc, -1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 59 [xmlDoc, -1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 59 [xmlDoc, -1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 59 [xmlDoc, -1], range 49 [document, 1, document, 2] 
+PASS Point 59 [xmlDoc, -1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 59 [xmlDoc, -1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 59 [xmlDoc, -1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 59 [xmlDoc, -1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 59 [xmlDoc, -1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 59 [xmlDoc, -1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 59 [xmlDoc, -1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 59 [xmlDoc, -1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 59 [xmlDoc, -1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 59 [xmlDoc, -1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 59 [xmlDoc, -1], range 60 detached 
+PASS Point 60 [xmlDoc, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 60 [xmlDoc, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 60 [xmlDoc, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 60 [xmlDoc, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 60 [xmlDoc, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 60 [xmlDoc, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 60 [xmlDoc, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 60 [xmlDoc, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 60 [xmlDoc, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 60 [xmlDoc, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 60 [xmlDoc, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 60 [xmlDoc, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 60 [xmlDoc, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 60 [xmlDoc, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 60 [xmlDoc, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 60 [xmlDoc, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 60 [xmlDoc, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 60 [xmlDoc, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 60 [xmlDoc, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 60 [xmlDoc, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 60 [xmlDoc, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 60 [xmlDoc, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 60 [xmlDoc, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 60 [xmlDoc, 0], range 23 [document, 0, document, 1] 
+PASS Point 60 [xmlDoc, 0], range 24 [document, 0, document, 2] 
+PASS Point 60 [xmlDoc, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 60 [xmlDoc, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 60 [xmlDoc, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 60 [xmlDoc, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 60 [xmlDoc, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 60 [xmlDoc, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 60 [xmlDoc, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 60 [xmlDoc, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 60 [xmlDoc, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 60 [xmlDoc, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 60 [xmlDoc, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 60 [xmlDoc, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 60 [xmlDoc, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 60 [xmlDoc, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 60 [xmlDoc, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 60 [xmlDoc, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 60 [xmlDoc, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 60 [xmlDoc, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 60 [xmlDoc, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 60 [xmlDoc, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 60 [xmlDoc, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 60 [xmlDoc, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 60 [xmlDoc, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 60 [xmlDoc, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 60 [xmlDoc, 0], range 49 [document, 1, document, 2] 
+PASS Point 60 [xmlDoc, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 60 [xmlDoc, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 60 [xmlDoc, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 60 [xmlDoc, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 60 [xmlDoc, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 60 [xmlDoc, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 60 [xmlDoc, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 60 [xmlDoc, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 60 [xmlDoc, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 60 [xmlDoc, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 60 [xmlDoc, 0], range 60 detached 
+PASS Point 61 [xmlDoc, 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 61 [xmlDoc, 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 61 [xmlDoc, 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 61 [xmlDoc, 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 61 [xmlDoc, 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 61 [xmlDoc, 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 61 [xmlDoc, 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 61 [xmlDoc, 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 61 [xmlDoc, 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 61 [xmlDoc, 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 61 [xmlDoc, 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 61 [xmlDoc, 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 61 [xmlDoc, 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 61 [xmlDoc, 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 61 [xmlDoc, 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 61 [xmlDoc, 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 61 [xmlDoc, 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 61 [xmlDoc, 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 61 [xmlDoc, 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 61 [xmlDoc, 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 61 [xmlDoc, 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 61 [xmlDoc, 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 61 [xmlDoc, 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 61 [xmlDoc, 1], range 23 [document, 0, document, 1] 
+PASS Point 61 [xmlDoc, 1], range 24 [document, 0, document, 2] 
+PASS Point 61 [xmlDoc, 1], range 25 [comment, 2, comment, 3] 
+PASS Point 61 [xmlDoc, 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 61 [xmlDoc, 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 61 [xmlDoc, 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 61 [xmlDoc, 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 61 [xmlDoc, 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 61 [xmlDoc, 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 61 [xmlDoc, 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 61 [xmlDoc, 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 61 [xmlDoc, 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 61 [xmlDoc, 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 61 [xmlDoc, 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 61 [xmlDoc, 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 61 [xmlDoc, 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 61 [xmlDoc, 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 61 [xmlDoc, 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 61 [xmlDoc, 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 61 [xmlDoc, 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 61 [xmlDoc, 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 61 [xmlDoc, 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 61 [xmlDoc, 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 61 [xmlDoc, 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 61 [xmlDoc, 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 61 [xmlDoc, 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 61 [xmlDoc, 1], range 49 [document, 1, document, 2] 
+PASS Point 61 [xmlDoc, 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 61 [xmlDoc, 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 61 [xmlDoc, 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 61 [xmlDoc, 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 61 [xmlDoc, 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 61 [xmlDoc, 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 61 [xmlDoc, 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 61 [xmlDoc, 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 61 [xmlDoc, 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 61 [xmlDoc, 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 61 [xmlDoc, 1], range 60 detached 
+PASS Point 62 [xmlDoc, 5], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 62 [xmlDoc, 5], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 62 [xmlDoc, 5], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 62 [xmlDoc, 5], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 62 [xmlDoc, 5], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 62 [xmlDoc, 5], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 62 [xmlDoc, 5], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 62 [xmlDoc, 5], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 62 [xmlDoc, 5], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 62 [xmlDoc, 5], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 62 [xmlDoc, 5], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 62 [xmlDoc, 5], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 62 [xmlDoc, 5], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 62 [xmlDoc, 5], range 13 [document.head, 1, document.head, 1] 
+PASS Point 62 [xmlDoc, 5], range 14 [document.body, 4, document.body, 5] 
+PASS Point 62 [xmlDoc, 5], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 62 [xmlDoc, 5], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 62 [xmlDoc, 5], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 62 [xmlDoc, 5], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 62 [xmlDoc, 5], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 62 [xmlDoc, 5], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 62 [xmlDoc, 5], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 62 [xmlDoc, 5], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 62 [xmlDoc, 5], range 23 [document, 0, document, 1] 
+PASS Point 62 [xmlDoc, 5], range 24 [document, 0, document, 2] 
+PASS Point 62 [xmlDoc, 5], range 25 [comment, 2, comment, 3] 
+PASS Point 62 [xmlDoc, 5], range 26 [testDiv, 0, comment, 5] 
+PASS Point 62 [xmlDoc, 5], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 62 [xmlDoc, 5], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 62 [xmlDoc, 5], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 62 [xmlDoc, 5], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 62 [xmlDoc, 5], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 62 [xmlDoc, 5], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 62 [xmlDoc, 5], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 62 [xmlDoc, 5], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 62 [xmlDoc, 5], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 62 [xmlDoc, 5], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 62 [xmlDoc, 5], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 62 [xmlDoc, 5], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 62 [xmlDoc, 5], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 62 [xmlDoc, 5], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 62 [xmlDoc, 5], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 62 [xmlDoc, 5], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 62 [xmlDoc, 5], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 62 [xmlDoc, 5], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 62 [xmlDoc, 5], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 62 [xmlDoc, 5], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 62 [xmlDoc, 5], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 62 [xmlDoc, 5], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 62 [xmlDoc, 5], range 49 [document, 1, document, 2] 
+PASS Point 62 [xmlDoc, 5], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 62 [xmlDoc, 5], range 51 [paras[3], 1, comment, 8] 
+PASS Point 62 [xmlDoc, 5], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 62 [xmlDoc, 5], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 62 [xmlDoc, 5], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 62 [xmlDoc, 5], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 62 [xmlDoc, 5], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 62 [xmlDoc, 5], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 62 [xmlDoc, 5], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 62 [xmlDoc, 5], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 62 [xmlDoc, 5], range 60 detached 
+PASS Point 63 [xmlComment, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 63 [xmlComment, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 63 [xmlComment, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 63 [xmlComment, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 63 [xmlComment, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 63 [xmlComment, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 63 [xmlComment, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 63 [xmlComment, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 63 [xmlComment, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 63 [xmlComment, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 63 [xmlComment, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 63 [xmlComment, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 63 [xmlComment, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 63 [xmlComment, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 63 [xmlComment, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 63 [xmlComment, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 63 [xmlComment, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 63 [xmlComment, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 63 [xmlComment, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 63 [xmlComment, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 63 [xmlComment, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 63 [xmlComment, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 63 [xmlComment, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 63 [xmlComment, 0], range 23 [document, 0, document, 1] 
+PASS Point 63 [xmlComment, 0], range 24 [document, 0, document, 2] 
+PASS Point 63 [xmlComment, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 63 [xmlComment, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 63 [xmlComment, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 63 [xmlComment, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 63 [xmlComment, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 63 [xmlComment, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 63 [xmlComment, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 63 [xmlComment, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 63 [xmlComment, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 63 [xmlComment, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 63 [xmlComment, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 63 [xmlComment, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 63 [xmlComment, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 63 [xmlComment, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 63 [xmlComment, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 63 [xmlComment, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 63 [xmlComment, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 63 [xmlComment, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 63 [xmlComment, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 63 [xmlComment, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 63 [xmlComment, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 63 [xmlComment, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 63 [xmlComment, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 63 [xmlComment, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 63 [xmlComment, 0], range 49 [document, 1, document, 2] 
+PASS Point 63 [xmlComment, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 63 [xmlComment, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 63 [xmlComment, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 63 [xmlComment, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 63 [xmlComment, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 63 [xmlComment, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 63 [xmlComment, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 63 [xmlComment, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 63 [xmlComment, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 63 [xmlComment, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 63 [xmlComment, 0], range 60 detached 
+PASS Point 64 [xmlComment, 4], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 64 [xmlComment, 4], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 64 [xmlComment, 4], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 64 [xmlComment, 4], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 64 [xmlComment, 4], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 64 [xmlComment, 4], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 64 [xmlComment, 4], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 64 [xmlComment, 4], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 64 [xmlComment, 4], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 64 [xmlComment, 4], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 64 [xmlComment, 4], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 64 [xmlComment, 4], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 64 [xmlComment, 4], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 64 [xmlComment, 4], range 13 [document.head, 1, document.head, 1] 
+PASS Point 64 [xmlComment, 4], range 14 [document.body, 4, document.body, 5] 
+PASS Point 64 [xmlComment, 4], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 64 [xmlComment, 4], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 64 [xmlComment, 4], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 64 [xmlComment, 4], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 64 [xmlComment, 4], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 64 [xmlComment, 4], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 64 [xmlComment, 4], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 64 [xmlComment, 4], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 64 [xmlComment, 4], range 23 [document, 0, document, 1] 
+PASS Point 64 [xmlComment, 4], range 24 [document, 0, document, 2] 
+PASS Point 64 [xmlComment, 4], range 25 [comment, 2, comment, 3] 
+PASS Point 64 [xmlComment, 4], range 26 [testDiv, 0, comment, 5] 
+PASS Point 64 [xmlComment, 4], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 64 [xmlComment, 4], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 64 [xmlComment, 4], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 64 [xmlComment, 4], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 64 [xmlComment, 4], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 64 [xmlComment, 4], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 64 [xmlComment, 4], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 64 [xmlComment, 4], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 64 [xmlComment, 4], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 64 [xmlComment, 4], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 64 [xmlComment, 4], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 64 [xmlComment, 4], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 64 [xmlComment, 4], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 64 [xmlComment, 4], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 64 [xmlComment, 4], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 64 [xmlComment, 4], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 64 [xmlComment, 4], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 64 [xmlComment, 4], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 64 [xmlComment, 4], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 64 [xmlComment, 4], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 64 [xmlComment, 4], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 64 [xmlComment, 4], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 64 [xmlComment, 4], range 49 [document, 1, document, 2] 
+PASS Point 64 [xmlComment, 4], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 64 [xmlComment, 4], range 51 [paras[3], 1, comment, 8] 
+PASS Point 64 [xmlComment, 4], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 64 [xmlComment, 4], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 64 [xmlComment, 4], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 64 [xmlComment, 4], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 64 [xmlComment, 4], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 64 [xmlComment, 4], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 64 [xmlComment, 4], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 64 [xmlComment, 4], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 64 [xmlComment, 4], range 60 detached 
+PASS Point 65 [processingInstruction, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 65 [processingInstruction, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 65 [processingInstruction, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 65 [processingInstruction, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 65 [processingInstruction, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 65 [processingInstruction, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 65 [processingInstruction, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 65 [processingInstruction, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 65 [processingInstruction, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 65 [processingInstruction, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 65 [processingInstruction, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 65 [processingInstruction, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 65 [processingInstruction, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 65 [processingInstruction, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 65 [processingInstruction, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 65 [processingInstruction, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 65 [processingInstruction, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 65 [processingInstruction, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 65 [processingInstruction, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 65 [processingInstruction, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 65 [processingInstruction, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 65 [processingInstruction, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 65 [processingInstruction, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 65 [processingInstruction, 0], range 23 [document, 0, document, 1] 
+PASS Point 65 [processingInstruction, 0], range 24 [document, 0, document, 2] 
+PASS Point 65 [processingInstruction, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 65 [processingInstruction, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 65 [processingInstruction, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 65 [processingInstruction, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 65 [processingInstruction, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 65 [processingInstruction, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 65 [processingInstruction, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 65 [processingInstruction, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 65 [processingInstruction, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 65 [processingInstruction, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 65 [processingInstruction, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 65 [processingInstruction, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 65 [processingInstruction, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 65 [processingInstruction, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 65 [processingInstruction, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 65 [processingInstruction, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 65 [processingInstruction, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 65 [processingInstruction, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 65 [processingInstruction, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 65 [processingInstruction, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 65 [processingInstruction, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 65 [processingInstruction, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 65 [processingInstruction, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 65 [processingInstruction, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 65 [processingInstruction, 0], range 49 [document, 1, document, 2] 
+PASS Point 65 [processingInstruction, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 65 [processingInstruction, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 65 [processingInstruction, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 65 [processingInstruction, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 65 [processingInstruction, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 65 [processingInstruction, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 65 [processingInstruction, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 65 [processingInstruction, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 65 [processingInstruction, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 65 [processingInstruction, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 65 [processingInstruction, 0], range 60 detached 
+PASS Point 66 [processingInstruction, 5], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 66 [processingInstruction, 5], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 66 [processingInstruction, 5], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 66 [processingInstruction, 5], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 66 [processingInstruction, 5], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 66 [processingInstruction, 5], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 66 [processingInstruction, 5], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 66 [processingInstruction, 5], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 66 [processingInstruction, 5], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 66 [processingInstruction, 5], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 66 [processingInstruction, 5], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 66 [processingInstruction, 5], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 66 [processingInstruction, 5], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 66 [processingInstruction, 5], range 13 [document.head, 1, document.head, 1] 
+PASS Point 66 [processingInstruction, 5], range 14 [document.body, 4, document.body, 5] 
+PASS Point 66 [processingInstruction, 5], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 66 [processingInstruction, 5], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 66 [processingInstruction, 5], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 66 [processingInstruction, 5], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 66 [processingInstruction, 5], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 66 [processingInstruction, 5], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 66 [processingInstruction, 5], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 66 [processingInstruction, 5], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 66 [processingInstruction, 5], range 23 [document, 0, document, 1] 
+PASS Point 66 [processingInstruction, 5], range 24 [document, 0, document, 2] 
+PASS Point 66 [processingInstruction, 5], range 25 [comment, 2, comment, 3] 
+PASS Point 66 [processingInstruction, 5], range 26 [testDiv, 0, comment, 5] 
+PASS Point 66 [processingInstruction, 5], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 66 [processingInstruction, 5], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 66 [processingInstruction, 5], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 66 [processingInstruction, 5], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 66 [processingInstruction, 5], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 66 [processingInstruction, 5], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 66 [processingInstruction, 5], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 66 [processingInstruction, 5], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 66 [processingInstruction, 5], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 66 [processingInstruction, 5], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 66 [processingInstruction, 5], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 66 [processingInstruction, 5], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 66 [processingInstruction, 5], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 66 [processingInstruction, 5], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 66 [processingInstruction, 5], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 66 [processingInstruction, 5], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 66 [processingInstruction, 5], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 66 [processingInstruction, 5], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 66 [processingInstruction, 5], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 66 [processingInstruction, 5], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 66 [processingInstruction, 5], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 66 [processingInstruction, 5], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 66 [processingInstruction, 5], range 49 [document, 1, document, 2] 
+PASS Point 66 [processingInstruction, 5], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 66 [processingInstruction, 5], range 51 [paras[3], 1, comment, 8] 
+PASS Point 66 [processingInstruction, 5], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 66 [processingInstruction, 5], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 66 [processingInstruction, 5], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 66 [processingInstruction, 5], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 66 [processingInstruction, 5], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 66 [processingInstruction, 5], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 66 [processingInstruction, 5], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 66 [processingInstruction, 5], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 66 [processingInstruction, 5], range 60 detached 
+PASS Point 67 [processingInstruction, 9], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 67 [processingInstruction, 9], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 67 [processingInstruction, 9], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 67 [processingInstruction, 9], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 67 [processingInstruction, 9], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 67 [processingInstruction, 9], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 67 [processingInstruction, 9], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 67 [processingInstruction, 9], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 67 [processingInstruction, 9], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 67 [processingInstruction, 9], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 67 [processingInstruction, 9], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 67 [processingInstruction, 9], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 67 [processingInstruction, 9], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 67 [processingInstruction, 9], range 13 [document.head, 1, document.head, 1] 
+PASS Point 67 [processingInstruction, 9], range 14 [document.body, 4, document.body, 5] 
+PASS Point 67 [processingInstruction, 9], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 67 [processingInstruction, 9], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 67 [processingInstruction, 9], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 67 [processingInstruction, 9], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 67 [processingInstruction, 9], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 67 [processingInstruction, 9], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 67 [processingInstruction, 9], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 67 [processingInstruction, 9], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 67 [processingInstruction, 9], range 23 [document, 0, document, 1] 
+PASS Point 67 [processingInstruction, 9], range 24 [document, 0, document, 2] 
+PASS Point 67 [processingInstruction, 9], range 25 [comment, 2, comment, 3] 
+PASS Point 67 [processingInstruction, 9], range 26 [testDiv, 0, comment, 5] 
+PASS Point 67 [processingInstruction, 9], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 67 [processingInstruction, 9], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 67 [processingInstruction, 9], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 67 [processingInstruction, 9], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 67 [processingInstruction, 9], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 67 [processingInstruction, 9], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 67 [processingInstruction, 9], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 67 [processingInstruction, 9], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 67 [processingInstruction, 9], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 67 [processingInstruction, 9], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 67 [processingInstruction, 9], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 67 [processingInstruction, 9], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 67 [processingInstruction, 9], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 67 [processingInstruction, 9], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 67 [processingInstruction, 9], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 67 [processingInstruction, 9], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 67 [processingInstruction, 9], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 67 [processingInstruction, 9], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 67 [processingInstruction, 9], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 67 [processingInstruction, 9], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 67 [processingInstruction, 9], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 67 [processingInstruction, 9], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 67 [processingInstruction, 9], range 49 [document, 1, document, 2] 
+PASS Point 67 [processingInstruction, 9], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 67 [processingInstruction, 9], range 51 [paras[3], 1, comment, 8] 
+PASS Point 67 [processingInstruction, 9], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 67 [processingInstruction, 9], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 67 [processingInstruction, 9], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 67 [processingInstruction, 9], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 67 [processingInstruction, 9], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 67 [processingInstruction, 9], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 67 [processingInstruction, 9], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 67 [processingInstruction, 9], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 67 [processingInstruction, 9], range 60 detached 
+PASS Point 68 [detachedTextNode, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 68 [detachedTextNode, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 68 [detachedTextNode, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 68 [detachedTextNode, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 68 [detachedTextNode, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 68 [detachedTextNode, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 68 [detachedTextNode, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 68 [detachedTextNode, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 68 [detachedTextNode, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 68 [detachedTextNode, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 68 [detachedTextNode, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 68 [detachedTextNode, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 68 [detachedTextNode, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 68 [detachedTextNode, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 68 [detachedTextNode, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 68 [detachedTextNode, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 68 [detachedTextNode, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 68 [detachedTextNode, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 68 [detachedTextNode, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 68 [detachedTextNode, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 68 [detachedTextNode, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 68 [detachedTextNode, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 68 [detachedTextNode, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 68 [detachedTextNode, 0], range 23 [document, 0, document, 1] 
+PASS Point 68 [detachedTextNode, 0], range 24 [document, 0, document, 2] 
+PASS Point 68 [detachedTextNode, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 68 [detachedTextNode, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 68 [detachedTextNode, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 68 [detachedTextNode, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 68 [detachedTextNode, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 68 [detachedTextNode, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 68 [detachedTextNode, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 68 [detachedTextNode, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 68 [detachedTextNode, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 68 [detachedTextNode, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 68 [detachedTextNode, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 68 [detachedTextNode, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 68 [detachedTextNode, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 68 [detachedTextNode, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 68 [detachedTextNode, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 68 [detachedTextNode, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 68 [detachedTextNode, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 68 [detachedTextNode, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 68 [detachedTextNode, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 68 [detachedTextNode, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 68 [detachedTextNode, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 68 [detachedTextNode, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 68 [detachedTextNode, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 68 [detachedTextNode, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 68 [detachedTextNode, 0], range 49 [document, 1, document, 2] 
+PASS Point 68 [detachedTextNode, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 68 [detachedTextNode, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 68 [detachedTextNode, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 68 [detachedTextNode, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 68 [detachedTextNode, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 68 [detachedTextNode, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 68 [detachedTextNode, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 68 [detachedTextNode, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 68 [detachedTextNode, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 68 [detachedTextNode, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 68 [detachedTextNode, 0], range 60 detached 
+PASS Point 69 [detachedTextNode, 8], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 69 [detachedTextNode, 8], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 69 [detachedTextNode, 8], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 69 [detachedTextNode, 8], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 69 [detachedTextNode, 8], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 69 [detachedTextNode, 8], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 69 [detachedTextNode, 8], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 69 [detachedTextNode, 8], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 69 [detachedTextNode, 8], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 69 [detachedTextNode, 8], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 69 [detachedTextNode, 8], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 69 [detachedTextNode, 8], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 69 [detachedTextNode, 8], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 69 [detachedTextNode, 8], range 13 [document.head, 1, document.head, 1] 
+PASS Point 69 [detachedTextNode, 8], range 14 [document.body, 4, document.body, 5] 
+PASS Point 69 [detachedTextNode, 8], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 69 [detachedTextNode, 8], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 69 [detachedTextNode, 8], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 69 [detachedTextNode, 8], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 69 [detachedTextNode, 8], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 69 [detachedTextNode, 8], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 69 [detachedTextNode, 8], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 69 [detachedTextNode, 8], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 69 [detachedTextNode, 8], range 23 [document, 0, document, 1] 
+PASS Point 69 [detachedTextNode, 8], range 24 [document, 0, document, 2] 
+PASS Point 69 [detachedTextNode, 8], range 25 [comment, 2, comment, 3] 
+PASS Point 69 [detachedTextNode, 8], range 26 [testDiv, 0, comment, 5] 
+PASS Point 69 [detachedTextNode, 8], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 69 [detachedTextNode, 8], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 69 [detachedTextNode, 8], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 69 [detachedTextNode, 8], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 69 [detachedTextNode, 8], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 69 [detachedTextNode, 8], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 69 [detachedTextNode, 8], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 69 [detachedTextNode, 8], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 69 [detachedTextNode, 8], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 69 [detachedTextNode, 8], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 69 [detachedTextNode, 8], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 69 [detachedTextNode, 8], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 69 [detachedTextNode, 8], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 69 [detachedTextNode, 8], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 69 [detachedTextNode, 8], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 69 [detachedTextNode, 8], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 69 [detachedTextNode, 8], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 69 [detachedTextNode, 8], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 69 [detachedTextNode, 8], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 69 [detachedTextNode, 8], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 69 [detachedTextNode, 8], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 69 [detachedTextNode, 8], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 69 [detachedTextNode, 8], range 49 [document, 1, document, 2] 
+PASS Point 69 [detachedTextNode, 8], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 69 [detachedTextNode, 8], range 51 [paras[3], 1, comment, 8] 
+PASS Point 69 [detachedTextNode, 8], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 69 [detachedTextNode, 8], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 69 [detachedTextNode, 8], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 69 [detachedTextNode, 8], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 69 [detachedTextNode, 8], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 69 [detachedTextNode, 8], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 69 [detachedTextNode, 8], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 69 [detachedTextNode, 8], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 69 [detachedTextNode, 8], range 60 detached 
+PASS Point 70 [detachedForeignTextNode, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 70 [detachedForeignTextNode, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 70 [detachedForeignTextNode, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 70 [detachedForeignTextNode, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 70 [detachedForeignTextNode, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 70 [detachedForeignTextNode, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 70 [detachedForeignTextNode, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 70 [detachedForeignTextNode, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 70 [detachedForeignTextNode, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 70 [detachedForeignTextNode, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 70 [detachedForeignTextNode, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 70 [detachedForeignTextNode, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 70 [detachedForeignTextNode, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 70 [detachedForeignTextNode, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 70 [detachedForeignTextNode, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 70 [detachedForeignTextNode, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 70 [detachedForeignTextNode, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 70 [detachedForeignTextNode, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 70 [detachedForeignTextNode, 0], range 23 [document, 0, document, 1] 
+PASS Point 70 [detachedForeignTextNode, 0], range 24 [document, 0, document, 2] 
+PASS Point 70 [detachedForeignTextNode, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 70 [detachedForeignTextNode, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 70 [detachedForeignTextNode, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 70 [detachedForeignTextNode, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 70 [detachedForeignTextNode, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 70 [detachedForeignTextNode, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 70 [detachedForeignTextNode, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 70 [detachedForeignTextNode, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 70 [detachedForeignTextNode, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 70 [detachedForeignTextNode, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 70 [detachedForeignTextNode, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 70 [detachedForeignTextNode, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 70 [detachedForeignTextNode, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 70 [detachedForeignTextNode, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 70 [detachedForeignTextNode, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 70 [detachedForeignTextNode, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 70 [detachedForeignTextNode, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 70 [detachedForeignTextNode, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 49 [document, 1, document, 2] 
+PASS Point 70 [detachedForeignTextNode, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 70 [detachedForeignTextNode, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 70 [detachedForeignTextNode, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 70 [detachedForeignTextNode, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 70 [detachedForeignTextNode, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 70 [detachedForeignTextNode, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 70 [detachedForeignTextNode, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 70 [detachedForeignTextNode, 0], range 60 detached 
+PASS Point 71 [detachedForeignTextNode, 8], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 71 [detachedForeignTextNode, 8], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 71 [detachedForeignTextNode, 8], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 71 [detachedForeignTextNode, 8], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 71 [detachedForeignTextNode, 8], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 71 [detachedForeignTextNode, 8], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 71 [detachedForeignTextNode, 8], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 71 [detachedForeignTextNode, 8], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 71 [detachedForeignTextNode, 8], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 71 [detachedForeignTextNode, 8], range 13 [document.head, 1, document.head, 1] 
+PASS Point 71 [detachedForeignTextNode, 8], range 14 [document.body, 4, document.body, 5] 
+PASS Point 71 [detachedForeignTextNode, 8], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 71 [detachedForeignTextNode, 8], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 71 [detachedForeignTextNode, 8], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 71 [detachedForeignTextNode, 8], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 71 [detachedForeignTextNode, 8], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 71 [detachedForeignTextNode, 8], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 71 [detachedForeignTextNode, 8], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 71 [detachedForeignTextNode, 8], range 23 [document, 0, document, 1] 
+PASS Point 71 [detachedForeignTextNode, 8], range 24 [document, 0, document, 2] 
+PASS Point 71 [detachedForeignTextNode, 8], range 25 [comment, 2, comment, 3] 
+PASS Point 71 [detachedForeignTextNode, 8], range 26 [testDiv, 0, comment, 5] 
+PASS Point 71 [detachedForeignTextNode, 8], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 71 [detachedForeignTextNode, 8], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 71 [detachedForeignTextNode, 8], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 71 [detachedForeignTextNode, 8], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 71 [detachedForeignTextNode, 8], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 71 [detachedForeignTextNode, 8], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 71 [detachedForeignTextNode, 8], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 71 [detachedForeignTextNode, 8], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 71 [detachedForeignTextNode, 8], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 71 [detachedForeignTextNode, 8], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 71 [detachedForeignTextNode, 8], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 71 [detachedForeignTextNode, 8], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 71 [detachedForeignTextNode, 8], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 71 [detachedForeignTextNode, 8], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 71 [detachedForeignTextNode, 8], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 71 [detachedForeignTextNode, 8], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 49 [document, 1, document, 2] 
+PASS Point 71 [detachedForeignTextNode, 8], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 71 [detachedForeignTextNode, 8], range 51 [paras[3], 1, comment, 8] 
+PASS Point 71 [detachedForeignTextNode, 8], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 71 [detachedForeignTextNode, 8], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 71 [detachedForeignTextNode, 8], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 71 [detachedForeignTextNode, 8], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 71 [detachedForeignTextNode, 8], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 71 [detachedForeignTextNode, 8], range 60 detached 
+PASS Point 72 [detachedXmlTextNode, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 72 [detachedXmlTextNode, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 72 [detachedXmlTextNode, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 72 [detachedXmlTextNode, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 72 [detachedXmlTextNode, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 72 [detachedXmlTextNode, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 72 [detachedXmlTextNode, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 72 [detachedXmlTextNode, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 72 [detachedXmlTextNode, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 72 [detachedXmlTextNode, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 72 [detachedXmlTextNode, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 72 [detachedXmlTextNode, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 72 [detachedXmlTextNode, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 72 [detachedXmlTextNode, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 72 [detachedXmlTextNode, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 72 [detachedXmlTextNode, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 72 [detachedXmlTextNode, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 72 [detachedXmlTextNode, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 72 [detachedXmlTextNode, 0], range 23 [document, 0, document, 1] 
+PASS Point 72 [detachedXmlTextNode, 0], range 24 [document, 0, document, 2] 
+PASS Point 72 [detachedXmlTextNode, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 72 [detachedXmlTextNode, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 72 [detachedXmlTextNode, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 72 [detachedXmlTextNode, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 72 [detachedXmlTextNode, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 72 [detachedXmlTextNode, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 72 [detachedXmlTextNode, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 72 [detachedXmlTextNode, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 72 [detachedXmlTextNode, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 72 [detachedXmlTextNode, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 72 [detachedXmlTextNode, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 72 [detachedXmlTextNode, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 72 [detachedXmlTextNode, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 72 [detachedXmlTextNode, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 72 [detachedXmlTextNode, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 72 [detachedXmlTextNode, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 72 [detachedXmlTextNode, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 72 [detachedXmlTextNode, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 49 [document, 1, document, 2] 
+PASS Point 72 [detachedXmlTextNode, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 72 [detachedXmlTextNode, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 72 [detachedXmlTextNode, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 72 [detachedXmlTextNode, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 72 [detachedXmlTextNode, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 72 [detachedXmlTextNode, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 72 [detachedXmlTextNode, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 72 [detachedXmlTextNode, 0], range 60 detached 
+PASS Point 73 [detachedXmlTextNode, 8], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 73 [detachedXmlTextNode, 8], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 73 [detachedXmlTextNode, 8], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 73 [detachedXmlTextNode, 8], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 73 [detachedXmlTextNode, 8], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 73 [detachedXmlTextNode, 8], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 73 [detachedXmlTextNode, 8], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 73 [detachedXmlTextNode, 8], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 73 [detachedXmlTextNode, 8], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 73 [detachedXmlTextNode, 8], range 13 [document.head, 1, document.head, 1] 
+PASS Point 73 [detachedXmlTextNode, 8], range 14 [document.body, 4, document.body, 5] 
+PASS Point 73 [detachedXmlTextNode, 8], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 73 [detachedXmlTextNode, 8], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 73 [detachedXmlTextNode, 8], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 73 [detachedXmlTextNode, 8], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 73 [detachedXmlTextNode, 8], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 73 [detachedXmlTextNode, 8], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 73 [detachedXmlTextNode, 8], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 73 [detachedXmlTextNode, 8], range 23 [document, 0, document, 1] 
+PASS Point 73 [detachedXmlTextNode, 8], range 24 [document, 0, document, 2] 
+PASS Point 73 [detachedXmlTextNode, 8], range 25 [comment, 2, comment, 3] 
+PASS Point 73 [detachedXmlTextNode, 8], range 26 [testDiv, 0, comment, 5] 
+PASS Point 73 [detachedXmlTextNode, 8], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 73 [detachedXmlTextNode, 8], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 73 [detachedXmlTextNode, 8], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 73 [detachedXmlTextNode, 8], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 73 [detachedXmlTextNode, 8], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 73 [detachedXmlTextNode, 8], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 73 [detachedXmlTextNode, 8], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 73 [detachedXmlTextNode, 8], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 73 [detachedXmlTextNode, 8], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 73 [detachedXmlTextNode, 8], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 73 [detachedXmlTextNode, 8], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 73 [detachedXmlTextNode, 8], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 73 [detachedXmlTextNode, 8], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 73 [detachedXmlTextNode, 8], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 73 [detachedXmlTextNode, 8], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 73 [detachedXmlTextNode, 8], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 49 [document, 1, document, 2] 
+PASS Point 73 [detachedXmlTextNode, 8], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 73 [detachedXmlTextNode, 8], range 51 [paras[3], 1, comment, 8] 
+PASS Point 73 [detachedXmlTextNode, 8], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 73 [detachedXmlTextNode, 8], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 73 [detachedXmlTextNode, 8], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 73 [detachedXmlTextNode, 8], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 73 [detachedXmlTextNode, 8], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 73 [detachedXmlTextNode, 8], range 60 detached 
+PASS Point 74 [detachedProcessingInstruction, 12], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 13 [document.head, 1, document.head, 1] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 14 [document.body, 4, document.body, 5] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 23 [document, 0, document, 1] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 24 [document, 0, document, 2] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 25 [comment, 2, comment, 3] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 26 [testDiv, 0, comment, 5] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 49 [document, 1, document, 2] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 51 [paras[3], 1, comment, 8] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 74 [detachedProcessingInstruction, 12], range 60 detached 
+PASS Point 75 [detachedComment, 3], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 75 [detachedComment, 3], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 75 [detachedComment, 3], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 75 [detachedComment, 3], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 75 [detachedComment, 3], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 75 [detachedComment, 3], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 75 [detachedComment, 3], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 75 [detachedComment, 3], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 75 [detachedComment, 3], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 75 [detachedComment, 3], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 75 [detachedComment, 3], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 75 [detachedComment, 3], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 75 [detachedComment, 3], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 75 [detachedComment, 3], range 13 [document.head, 1, document.head, 1] 
+PASS Point 75 [detachedComment, 3], range 14 [document.body, 4, document.body, 5] 
+PASS Point 75 [detachedComment, 3], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 75 [detachedComment, 3], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 75 [detachedComment, 3], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 75 [detachedComment, 3], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 75 [detachedComment, 3], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 75 [detachedComment, 3], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 75 [detachedComment, 3], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 75 [detachedComment, 3], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 75 [detachedComment, 3], range 23 [document, 0, document, 1] 
+PASS Point 75 [detachedComment, 3], range 24 [document, 0, document, 2] 
+PASS Point 75 [detachedComment, 3], range 25 [comment, 2, comment, 3] 
+PASS Point 75 [detachedComment, 3], range 26 [testDiv, 0, comment, 5] 
+PASS Point 75 [detachedComment, 3], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 75 [detachedComment, 3], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 75 [detachedComment, 3], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 75 [detachedComment, 3], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 75 [detachedComment, 3], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 75 [detachedComment, 3], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 75 [detachedComment, 3], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 75 [detachedComment, 3], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 75 [detachedComment, 3], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 75 [detachedComment, 3], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 75 [detachedComment, 3], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 75 [detachedComment, 3], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 75 [detachedComment, 3], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 75 [detachedComment, 3], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 75 [detachedComment, 3], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 75 [detachedComment, 3], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 75 [detachedComment, 3], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 75 [detachedComment, 3], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 75 [detachedComment, 3], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 75 [detachedComment, 3], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 75 [detachedComment, 3], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 75 [detachedComment, 3], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 75 [detachedComment, 3], range 49 [document, 1, document, 2] 
+PASS Point 75 [detachedComment, 3], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 75 [detachedComment, 3], range 51 [paras[3], 1, comment, 8] 
+PASS Point 75 [detachedComment, 3], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 75 [detachedComment, 3], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 75 [detachedComment, 3], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 75 [detachedComment, 3], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 75 [detachedComment, 3], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 75 [detachedComment, 3], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 75 [detachedComment, 3], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 75 [detachedComment, 3], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 75 [detachedComment, 3], range 60 detached 
+PASS Point 76 [detachedComment, 5], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 76 [detachedComment, 5], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 76 [detachedComment, 5], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 76 [detachedComment, 5], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 76 [detachedComment, 5], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 76 [detachedComment, 5], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 76 [detachedComment, 5], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 76 [detachedComment, 5], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 76 [detachedComment, 5], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 76 [detachedComment, 5], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 76 [detachedComment, 5], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 76 [detachedComment, 5], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 76 [detachedComment, 5], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 76 [detachedComment, 5], range 13 [document.head, 1, document.head, 1] 
+PASS Point 76 [detachedComment, 5], range 14 [document.body, 4, document.body, 5] 
+PASS Point 76 [detachedComment, 5], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 76 [detachedComment, 5], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 76 [detachedComment, 5], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 76 [detachedComment, 5], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 76 [detachedComment, 5], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 76 [detachedComment, 5], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 76 [detachedComment, 5], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 76 [detachedComment, 5], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 76 [detachedComment, 5], range 23 [document, 0, document, 1] 
+PASS Point 76 [detachedComment, 5], range 24 [document, 0, document, 2] 
+PASS Point 76 [detachedComment, 5], range 25 [comment, 2, comment, 3] 
+PASS Point 76 [detachedComment, 5], range 26 [testDiv, 0, comment, 5] 
+PASS Point 76 [detachedComment, 5], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 76 [detachedComment, 5], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 76 [detachedComment, 5], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 76 [detachedComment, 5], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 76 [detachedComment, 5], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 76 [detachedComment, 5], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 76 [detachedComment, 5], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 76 [detachedComment, 5], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 76 [detachedComment, 5], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 76 [detachedComment, 5], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 76 [detachedComment, 5], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 76 [detachedComment, 5], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 76 [detachedComment, 5], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 76 [detachedComment, 5], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 76 [detachedComment, 5], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 76 [detachedComment, 5], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 76 [detachedComment, 5], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 76 [detachedComment, 5], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 76 [detachedComment, 5], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 76 [detachedComment, 5], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 76 [detachedComment, 5], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 76 [detachedComment, 5], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 76 [detachedComment, 5], range 49 [document, 1, document, 2] 
+PASS Point 76 [detachedComment, 5], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 76 [detachedComment, 5], range 51 [paras[3], 1, comment, 8] 
+PASS Point 76 [detachedComment, 5], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 76 [detachedComment, 5], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 76 [detachedComment, 5], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 76 [detachedComment, 5], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 76 [detachedComment, 5], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 76 [detachedComment, 5], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 76 [detachedComment, 5], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 76 [detachedComment, 5], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 76 [detachedComment, 5], range 60 detached 
+PASS Point 77 [detachedForeignComment, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 77 [detachedForeignComment, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 77 [detachedForeignComment, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 77 [detachedForeignComment, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 77 [detachedForeignComment, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 77 [detachedForeignComment, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 77 [detachedForeignComment, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 77 [detachedForeignComment, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 77 [detachedForeignComment, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 77 [detachedForeignComment, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 77 [detachedForeignComment, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 77 [detachedForeignComment, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 77 [detachedForeignComment, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 77 [detachedForeignComment, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 77 [detachedForeignComment, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 77 [detachedForeignComment, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 77 [detachedForeignComment, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 77 [detachedForeignComment, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 77 [detachedForeignComment, 0], range 23 [document, 0, document, 1] 
+PASS Point 77 [detachedForeignComment, 0], range 24 [document, 0, document, 2] 
+PASS Point 77 [detachedForeignComment, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 77 [detachedForeignComment, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 77 [detachedForeignComment, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 77 [detachedForeignComment, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 77 [detachedForeignComment, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 77 [detachedForeignComment, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 77 [detachedForeignComment, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 77 [detachedForeignComment, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 77 [detachedForeignComment, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 77 [detachedForeignComment, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 77 [detachedForeignComment, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 77 [detachedForeignComment, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 77 [detachedForeignComment, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 77 [detachedForeignComment, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 77 [detachedForeignComment, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 77 [detachedForeignComment, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 77 [detachedForeignComment, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 77 [detachedForeignComment, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 77 [detachedForeignComment, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 49 [document, 1, document, 2] 
+PASS Point 77 [detachedForeignComment, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 77 [detachedForeignComment, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 77 [detachedForeignComment, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 77 [detachedForeignComment, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 77 [detachedForeignComment, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 77 [detachedForeignComment, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 77 [detachedForeignComment, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 77 [detachedForeignComment, 0], range 60 detached 
+PASS Point 78 [detachedForeignComment, 4], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 78 [detachedForeignComment, 4], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 78 [detachedForeignComment, 4], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 78 [detachedForeignComment, 4], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 78 [detachedForeignComment, 4], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 78 [detachedForeignComment, 4], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 78 [detachedForeignComment, 4], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 78 [detachedForeignComment, 4], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 78 [detachedForeignComment, 4], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 78 [detachedForeignComment, 4], range 13 [document.head, 1, document.head, 1] 
+PASS Point 78 [detachedForeignComment, 4], range 14 [document.body, 4, document.body, 5] 
+PASS Point 78 [detachedForeignComment, 4], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 78 [detachedForeignComment, 4], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 78 [detachedForeignComment, 4], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 78 [detachedForeignComment, 4], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 78 [detachedForeignComment, 4], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 78 [detachedForeignComment, 4], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 78 [detachedForeignComment, 4], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 78 [detachedForeignComment, 4], range 23 [document, 0, document, 1] 
+PASS Point 78 [detachedForeignComment, 4], range 24 [document, 0, document, 2] 
+PASS Point 78 [detachedForeignComment, 4], range 25 [comment, 2, comment, 3] 
+PASS Point 78 [detachedForeignComment, 4], range 26 [testDiv, 0, comment, 5] 
+PASS Point 78 [detachedForeignComment, 4], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 78 [detachedForeignComment, 4], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 78 [detachedForeignComment, 4], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 78 [detachedForeignComment, 4], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 78 [detachedForeignComment, 4], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 78 [detachedForeignComment, 4], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 78 [detachedForeignComment, 4], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 78 [detachedForeignComment, 4], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 78 [detachedForeignComment, 4], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 78 [detachedForeignComment, 4], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 78 [detachedForeignComment, 4], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 78 [detachedForeignComment, 4], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 78 [detachedForeignComment, 4], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 78 [detachedForeignComment, 4], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 78 [detachedForeignComment, 4], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 78 [detachedForeignComment, 4], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 78 [detachedForeignComment, 4], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 49 [document, 1, document, 2] 
+PASS Point 78 [detachedForeignComment, 4], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 78 [detachedForeignComment, 4], range 51 [paras[3], 1, comment, 8] 
+PASS Point 78 [detachedForeignComment, 4], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 78 [detachedForeignComment, 4], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 78 [detachedForeignComment, 4], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 78 [detachedForeignComment, 4], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 78 [detachedForeignComment, 4], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 78 [detachedForeignComment, 4], range 60 detached 
+PASS Point 79 [detachedXmlComment, 2], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 79 [detachedXmlComment, 2], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 79 [detachedXmlComment, 2], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 79 [detachedXmlComment, 2], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 79 [detachedXmlComment, 2], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 79 [detachedXmlComment, 2], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 79 [detachedXmlComment, 2], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 79 [detachedXmlComment, 2], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 79 [detachedXmlComment, 2], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 79 [detachedXmlComment, 2], range 13 [document.head, 1, document.head, 1] 
+PASS Point 79 [detachedXmlComment, 2], range 14 [document.body, 4, document.body, 5] 
+PASS Point 79 [detachedXmlComment, 2], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 79 [detachedXmlComment, 2], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 79 [detachedXmlComment, 2], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 79 [detachedXmlComment, 2], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 79 [detachedXmlComment, 2], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 79 [detachedXmlComment, 2], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 79 [detachedXmlComment, 2], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 79 [detachedXmlComment, 2], range 23 [document, 0, document, 1] 
+PASS Point 79 [detachedXmlComment, 2], range 24 [document, 0, document, 2] 
+PASS Point 79 [detachedXmlComment, 2], range 25 [comment, 2, comment, 3] 
+PASS Point 79 [detachedXmlComment, 2], range 26 [testDiv, 0, comment, 5] 
+PASS Point 79 [detachedXmlComment, 2], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 79 [detachedXmlComment, 2], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 79 [detachedXmlComment, 2], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 79 [detachedXmlComment, 2], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 79 [detachedXmlComment, 2], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 79 [detachedXmlComment, 2], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 79 [detachedXmlComment, 2], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 79 [detachedXmlComment, 2], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 79 [detachedXmlComment, 2], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 79 [detachedXmlComment, 2], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 79 [detachedXmlComment, 2], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 79 [detachedXmlComment, 2], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 79 [detachedXmlComment, 2], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 79 [detachedXmlComment, 2], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 79 [detachedXmlComment, 2], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 79 [detachedXmlComment, 2], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 79 [detachedXmlComment, 2], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 49 [document, 1, document, 2] 
+PASS Point 79 [detachedXmlComment, 2], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 79 [detachedXmlComment, 2], range 51 [paras[3], 1, comment, 8] 
+PASS Point 79 [detachedXmlComment, 2], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 79 [detachedXmlComment, 2], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 79 [detachedXmlComment, 2], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 79 [detachedXmlComment, 2], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 79 [detachedXmlComment, 2], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 79 [detachedXmlComment, 2], range 60 detached 
+PASS Point 80 [docfrag, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 80 [docfrag, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 80 [docfrag, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 80 [docfrag, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 80 [docfrag, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 80 [docfrag, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 80 [docfrag, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 80 [docfrag, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 80 [docfrag, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 80 [docfrag, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 80 [docfrag, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 80 [docfrag, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 80 [docfrag, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 80 [docfrag, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 80 [docfrag, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 80 [docfrag, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 80 [docfrag, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 80 [docfrag, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 80 [docfrag, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 80 [docfrag, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 80 [docfrag, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 80 [docfrag, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 80 [docfrag, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 80 [docfrag, 0], range 23 [document, 0, document, 1] 
+PASS Point 80 [docfrag, 0], range 24 [document, 0, document, 2] 
+PASS Point 80 [docfrag, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 80 [docfrag, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 80 [docfrag, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 80 [docfrag, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 80 [docfrag, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 80 [docfrag, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 80 [docfrag, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 80 [docfrag, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 80 [docfrag, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 80 [docfrag, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 80 [docfrag, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 80 [docfrag, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 80 [docfrag, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 80 [docfrag, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 80 [docfrag, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 80 [docfrag, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 80 [docfrag, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 80 [docfrag, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 80 [docfrag, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 80 [docfrag, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 80 [docfrag, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 80 [docfrag, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 80 [docfrag, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 80 [docfrag, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 80 [docfrag, 0], range 49 [document, 1, document, 2] 
+PASS Point 80 [docfrag, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 80 [docfrag, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 80 [docfrag, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 80 [docfrag, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 80 [docfrag, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 80 [docfrag, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 80 [docfrag, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 80 [docfrag, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 80 [docfrag, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 80 [docfrag, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 80 [docfrag, 0], range 60 detached 
+PASS Point 81 [foreignDocfrag, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 81 [foreignDocfrag, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 81 [foreignDocfrag, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 81 [foreignDocfrag, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 81 [foreignDocfrag, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 81 [foreignDocfrag, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 81 [foreignDocfrag, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 81 [foreignDocfrag, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 81 [foreignDocfrag, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 81 [foreignDocfrag, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 81 [foreignDocfrag, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 81 [foreignDocfrag, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 81 [foreignDocfrag, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 81 [foreignDocfrag, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 81 [foreignDocfrag, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 81 [foreignDocfrag, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 81 [foreignDocfrag, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 81 [foreignDocfrag, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 81 [foreignDocfrag, 0], range 23 [document, 0, document, 1] 
+PASS Point 81 [foreignDocfrag, 0], range 24 [document, 0, document, 2] 
+PASS Point 81 [foreignDocfrag, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 81 [foreignDocfrag, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 81 [foreignDocfrag, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 81 [foreignDocfrag, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 81 [foreignDocfrag, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 81 [foreignDocfrag, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 81 [foreignDocfrag, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 81 [foreignDocfrag, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 81 [foreignDocfrag, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 81 [foreignDocfrag, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 81 [foreignDocfrag, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 81 [foreignDocfrag, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 81 [foreignDocfrag, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 81 [foreignDocfrag, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 81 [foreignDocfrag, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 81 [foreignDocfrag, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 81 [foreignDocfrag, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 81 [foreignDocfrag, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 81 [foreignDocfrag, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 49 [document, 1, document, 2] 
+PASS Point 81 [foreignDocfrag, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 81 [foreignDocfrag, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 81 [foreignDocfrag, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 81 [foreignDocfrag, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 81 [foreignDocfrag, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 81 [foreignDocfrag, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 81 [foreignDocfrag, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 81 [foreignDocfrag, 0], range 60 detached 
+PASS Point 82 [xmlDocfrag, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 82 [xmlDocfrag, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 82 [xmlDocfrag, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 82 [xmlDocfrag, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 82 [xmlDocfrag, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 82 [xmlDocfrag, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 82 [xmlDocfrag, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 82 [xmlDocfrag, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 82 [xmlDocfrag, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 82 [xmlDocfrag, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 82 [xmlDocfrag, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 82 [xmlDocfrag, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 82 [xmlDocfrag, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 82 [xmlDocfrag, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 82 [xmlDocfrag, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 82 [xmlDocfrag, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 82 [xmlDocfrag, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 82 [xmlDocfrag, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 82 [xmlDocfrag, 0], range 23 [document, 0, document, 1] 
+PASS Point 82 [xmlDocfrag, 0], range 24 [document, 0, document, 2] 
+PASS Point 82 [xmlDocfrag, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 82 [xmlDocfrag, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 82 [xmlDocfrag, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 82 [xmlDocfrag, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 82 [xmlDocfrag, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 82 [xmlDocfrag, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 82 [xmlDocfrag, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 82 [xmlDocfrag, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 82 [xmlDocfrag, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 82 [xmlDocfrag, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 82 [xmlDocfrag, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 82 [xmlDocfrag, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 82 [xmlDocfrag, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 82 [xmlDocfrag, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 82 [xmlDocfrag, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 82 [xmlDocfrag, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 82 [xmlDocfrag, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 82 [xmlDocfrag, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 82 [xmlDocfrag, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 49 [document, 1, document, 2] 
+PASS Point 82 [xmlDocfrag, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 82 [xmlDocfrag, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 82 [xmlDocfrag, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 82 [xmlDocfrag, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 82 [xmlDocfrag, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 82 [xmlDocfrag, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 82 [xmlDocfrag, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 82 [xmlDocfrag, 0], range 60 detached 
+PASS Point 83 [doctype, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 83 [doctype, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 83 [doctype, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 83 [doctype, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 83 [doctype, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 83 [doctype, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 83 [doctype, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 83 [doctype, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 83 [doctype, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 83 [doctype, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 83 [doctype, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 83 [doctype, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 83 [doctype, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 83 [doctype, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 83 [doctype, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 83 [doctype, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 83 [doctype, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 83 [doctype, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 83 [doctype, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 83 [doctype, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 83 [doctype, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 83 [doctype, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 83 [doctype, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 83 [doctype, 0], range 23 [document, 0, document, 1] 
+PASS Point 83 [doctype, 0], range 24 [document, 0, document, 2] 
+PASS Point 83 [doctype, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 83 [doctype, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 83 [doctype, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 83 [doctype, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 83 [doctype, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 83 [doctype, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 83 [doctype, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 83 [doctype, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 83 [doctype, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 83 [doctype, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 83 [doctype, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 83 [doctype, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 83 [doctype, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 83 [doctype, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 83 [doctype, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 83 [doctype, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 83 [doctype, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 83 [doctype, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 83 [doctype, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 83 [doctype, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 83 [doctype, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 83 [doctype, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 83 [doctype, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 83 [doctype, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 83 [doctype, 0], range 49 [document, 1, document, 2] 
+PASS Point 83 [doctype, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 83 [doctype, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 83 [doctype, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 83 [doctype, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 83 [doctype, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 83 [doctype, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 83 [doctype, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 83 [doctype, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 83 [doctype, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 83 [doctype, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 83 [doctype, 0], range 60 detached 
+PASS Point 84 [doctype, -17], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 84 [doctype, -17], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 84 [doctype, -17], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 84 [doctype, -17], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 84 [doctype, -17], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 84 [doctype, -17], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 84 [doctype, -17], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 84 [doctype, -17], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 84 [doctype, -17], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 84 [doctype, -17], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 84 [doctype, -17], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 84 [doctype, -17], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 84 [doctype, -17], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 84 [doctype, -17], range 13 [document.head, 1, document.head, 1] 
+PASS Point 84 [doctype, -17], range 14 [document.body, 4, document.body, 5] 
+PASS Point 84 [doctype, -17], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 84 [doctype, -17], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 84 [doctype, -17], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 84 [doctype, -17], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 84 [doctype, -17], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 84 [doctype, -17], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 84 [doctype, -17], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 84 [doctype, -17], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 84 [doctype, -17], range 23 [document, 0, document, 1] 
+PASS Point 84 [doctype, -17], range 24 [document, 0, document, 2] 
+PASS Point 84 [doctype, -17], range 25 [comment, 2, comment, 3] 
+PASS Point 84 [doctype, -17], range 26 [testDiv, 0, comment, 5] 
+PASS Point 84 [doctype, -17], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 84 [doctype, -17], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 84 [doctype, -17], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 84 [doctype, -17], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 84 [doctype, -17], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 84 [doctype, -17], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 84 [doctype, -17], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 84 [doctype, -17], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 84 [doctype, -17], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 84 [doctype, -17], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 84 [doctype, -17], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 84 [doctype, -17], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 84 [doctype, -17], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 84 [doctype, -17], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 84 [doctype, -17], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 84 [doctype, -17], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 84 [doctype, -17], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 84 [doctype, -17], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 84 [doctype, -17], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 84 [doctype, -17], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 84 [doctype, -17], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 84 [doctype, -17], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 84 [doctype, -17], range 49 [document, 1, document, 2] 
+PASS Point 84 [doctype, -17], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 84 [doctype, -17], range 51 [paras[3], 1, comment, 8] 
+PASS Point 84 [doctype, -17], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 84 [doctype, -17], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 84 [doctype, -17], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 84 [doctype, -17], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 84 [doctype, -17], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 84 [doctype, -17], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 84 [doctype, -17], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 84 [doctype, -17], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 84 [doctype, -17], range 60 detached 
+PASS Point 85 [doctype, 1], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 85 [doctype, 1], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 85 [doctype, 1], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 85 [doctype, 1], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 85 [doctype, 1], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 85 [doctype, 1], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 85 [doctype, 1], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 85 [doctype, 1], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 85 [doctype, 1], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 85 [doctype, 1], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 85 [doctype, 1], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 85 [doctype, 1], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 85 [doctype, 1], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 85 [doctype, 1], range 13 [document.head, 1, document.head, 1] 
+PASS Point 85 [doctype, 1], range 14 [document.body, 4, document.body, 5] 
+PASS Point 85 [doctype, 1], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 85 [doctype, 1], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 85 [doctype, 1], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 85 [doctype, 1], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 85 [doctype, 1], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 85 [doctype, 1], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 85 [doctype, 1], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 85 [doctype, 1], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 85 [doctype, 1], range 23 [document, 0, document, 1] 
+PASS Point 85 [doctype, 1], range 24 [document, 0, document, 2] 
+PASS Point 85 [doctype, 1], range 25 [comment, 2, comment, 3] 
+PASS Point 85 [doctype, 1], range 26 [testDiv, 0, comment, 5] 
+PASS Point 85 [doctype, 1], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 85 [doctype, 1], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 85 [doctype, 1], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 85 [doctype, 1], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 85 [doctype, 1], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 85 [doctype, 1], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 85 [doctype, 1], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 85 [doctype, 1], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 85 [doctype, 1], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 85 [doctype, 1], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 85 [doctype, 1], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 85 [doctype, 1], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 85 [doctype, 1], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 85 [doctype, 1], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 85 [doctype, 1], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 85 [doctype, 1], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 85 [doctype, 1], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 85 [doctype, 1], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 85 [doctype, 1], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 85 [doctype, 1], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 85 [doctype, 1], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 85 [doctype, 1], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 85 [doctype, 1], range 49 [document, 1, document, 2] 
+PASS Point 85 [doctype, 1], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 85 [doctype, 1], range 51 [paras[3], 1, comment, 8] 
+PASS Point 85 [doctype, 1], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 85 [doctype, 1], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 85 [doctype, 1], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 85 [doctype, 1], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 85 [doctype, 1], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 85 [doctype, 1], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 85 [doctype, 1], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 85 [doctype, 1], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 85 [doctype, 1], range 60 detached 
+PASS Point 86 [foreignDoctype, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 86 [foreignDoctype, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 86 [foreignDoctype, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 86 [foreignDoctype, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 86 [foreignDoctype, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 86 [foreignDoctype, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 86 [foreignDoctype, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 86 [foreignDoctype, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 86 [foreignDoctype, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 86 [foreignDoctype, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 86 [foreignDoctype, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 86 [foreignDoctype, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 86 [foreignDoctype, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 86 [foreignDoctype, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 86 [foreignDoctype, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 86 [foreignDoctype, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 86 [foreignDoctype, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 86 [foreignDoctype, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 86 [foreignDoctype, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 86 [foreignDoctype, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 86 [foreignDoctype, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 86 [foreignDoctype, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 86 [foreignDoctype, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 86 [foreignDoctype, 0], range 23 [document, 0, document, 1] 
+PASS Point 86 [foreignDoctype, 0], range 24 [document, 0, document, 2] 
+PASS Point 86 [foreignDoctype, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 86 [foreignDoctype, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 86 [foreignDoctype, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 86 [foreignDoctype, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 86 [foreignDoctype, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 86 [foreignDoctype, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 86 [foreignDoctype, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 86 [foreignDoctype, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 86 [foreignDoctype, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 86 [foreignDoctype, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 86 [foreignDoctype, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 86 [foreignDoctype, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 86 [foreignDoctype, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 86 [foreignDoctype, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 86 [foreignDoctype, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 86 [foreignDoctype, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 86 [foreignDoctype, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 86 [foreignDoctype, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 86 [foreignDoctype, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 86 [foreignDoctype, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 86 [foreignDoctype, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 86 [foreignDoctype, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 86 [foreignDoctype, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 86 [foreignDoctype, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 86 [foreignDoctype, 0], range 49 [document, 1, document, 2] 
+PASS Point 86 [foreignDoctype, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 86 [foreignDoctype, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 86 [foreignDoctype, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 86 [foreignDoctype, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 86 [foreignDoctype, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 86 [foreignDoctype, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 86 [foreignDoctype, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 86 [foreignDoctype, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 86 [foreignDoctype, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 86 [foreignDoctype, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 86 [foreignDoctype, 0], range 60 detached 
+PASS Point 87 [xmlDoctype, 0], range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Point 87 [xmlDoctype, 0], range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Point 87 [xmlDoctype, 0], range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Point 87 [xmlDoctype, 0], range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Point 87 [xmlDoctype, 0], range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 87 [xmlDoctype, 0], range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Point 87 [xmlDoctype, 0], range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Point 87 [xmlDoctype, 0], range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Point 87 [xmlDoctype, 0], range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Point 87 [xmlDoctype, 0], range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Point 87 [xmlDoctype, 0], range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Point 87 [xmlDoctype, 0], range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Point 87 [xmlDoctype, 0], range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Point 87 [xmlDoctype, 0], range 13 [document.head, 1, document.head, 1] 
+PASS Point 87 [xmlDoctype, 0], range 14 [document.body, 4, document.body, 5] 
+PASS Point 87 [xmlDoctype, 0], range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Point 87 [xmlDoctype, 0], range 16 [paras[0], 0, paras[0], 1] 
+PASS Point 87 [xmlDoctype, 0], range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Point 87 [xmlDoctype, 0], range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Point 87 [xmlDoctype, 0], range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Point 87 [xmlDoctype, 0], range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Point 87 [xmlDoctype, 0], range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Point 87 [xmlDoctype, 0], range 22 [testDiv, 2, paras[4], 1] 
+PASS Point 87 [xmlDoctype, 0], range 23 [document, 0, document, 1] 
+PASS Point 87 [xmlDoctype, 0], range 24 [document, 0, document, 2] 
+PASS Point 87 [xmlDoctype, 0], range 25 [comment, 2, comment, 3] 
+PASS Point 87 [xmlDoctype, 0], range 26 [testDiv, 0, comment, 5] 
+PASS Point 87 [xmlDoctype, 0], range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Point 87 [xmlDoctype, 0], range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Point 87 [xmlDoctype, 0], range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Point 87 [xmlDoctype, 0], range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Point 87 [xmlDoctype, 0], range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Point 87 [xmlDoctype, 0], range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Point 87 [xmlDoctype, 0], range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Point 87 [xmlDoctype, 0], range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Point 87 [xmlDoctype, 0], range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Point 87 [xmlDoctype, 0], range 36 [docfrag, 0, docfrag, 0] 
+PASS Point 87 [xmlDoctype, 0], range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS Point 87 [xmlDoctype, 0], range 38 [paras[1].firstChild, 0, paras[1].firstChild, 1] 
+PASS Point 87 [xmlDoctype, 0], range 39 [paras[1].firstChild, 2, paras[1].firstChild, 8] 
+PASS Point 87 [xmlDoctype, 0], range 40 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 1] 
+PASS Point 87 [xmlDoctype, 0], range 41 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 1] 
+PASS Point 87 [xmlDoctype, 0], range 42 [foreignDoc.head, 1, foreignDoc.head, 1] 
+PASS Point 87 [xmlDoctype, 0], range 43 [foreignDoc.body, 0, foreignDoc.body, 0] 
+PASS Point 87 [xmlDoctype, 0], range 44 [paras[0], 0, paras[0], 0] 
+PASS Point 87 [xmlDoctype, 0], range 45 [detachedPara1, 0, detachedPara1, 0] 
+PASS Point 87 [xmlDoctype, 0], range 46 [testDiv, 1, paras[2].firstChild, 5] 
+PASS Point 87 [xmlDoctype, 0], range 47 [document.documentElement, 1, document.body, 0] 
+PASS Point 87 [xmlDoctype, 0], range 48 [foreignDoc.documentElement, 1, foreignDoc.body, 0] 
+PASS Point 87 [xmlDoctype, 0], range 49 [document, 1, document, 2] 
+PASS Point 87 [xmlDoctype, 0], range 50 [paras[2].firstChild, 4, comment, 2] 
+PASS Point 87 [xmlDoctype, 0], range 51 [paras[3], 1, comment, 8] 
+PASS Point 87 [xmlDoctype, 0], range 52 [foreignDoc, 0, foreignDoc, 0] 
+PASS Point 87 [xmlDoctype, 0], range 53 [xmlDoc, 0, xmlDoc, 0] 
+PASS Point 87 [xmlDoctype, 0], range 54 [detachedForeignTextNode, 7, detachedForeignTextNode, 7] 
+PASS Point 87 [xmlDoctype, 0], range 55 [detachedXmlTextNode, 7, detachedXmlTextNode, 7] 
+PASS Point 87 [xmlDoctype, 0], range 56 [detachedComment, 5, detachedComment, 5] 
+PASS Point 87 [xmlDoctype, 0], range 57 [detachedForeignComment, 4, detachedForeignComment, 4] 
+PASS Point 87 [xmlDoctype, 0], range 58 [foreignDocfrag, 0, foreignDocfrag, 0] 
+PASS Point 87 [xmlDoctype, 0], range 59 [xmlDocfrag, 0, xmlDocfrag, 0] 
+PASS Point 87 [xmlDoctype, 0], range 60 detached 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeisPointInRangehtmlfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangeisPointInRangehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-isPointInRange.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-isPointInRange.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-isPointInRange.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-isPointInRange.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,83 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Range.isPointInRange() tests&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Aryeh Gregor&quot; href=ayg@aryeh.name&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;script src=../common.js&gt;&lt;/script&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+
+var testRangesCached = [];
+test(function() {
+  for (var j = 0; j &lt; testRanges.length; j++) {
+    test(function() {
+      testRangesCached[j] = rangeFromEndpoints(eval(testRanges[j]));
+    }, &quot;Set up for range &quot; + j + &quot; &quot; + testRanges[j]);
+  }
+  var detachedRange = document.createRange();
+  detachedRange.detach();
+  testRanges.push(&quot;detached&quot;);
+  testRangesCached.push(detachedRange);
+}, &quot;Setup&quot;);
+
+for (var i = 0; i &lt; testPoints.length; i++) {
+  var node = eval(testPoints[i])[0];
+  var offset = eval(testPoints[i])[1];
+
+  // isPointInRange is an unsigned long, so per WebIDL, we need to treat it
+  // as though it wrapped to an unsigned 32-bit integer.
+  var normalizedOffset = offset % Math.pow(2, 32);
+  if (normalizedOffset &lt; 0) {
+    normalizedOffset += Math.pow(2, 32);
+  }
+
+  for (var j = 0; j &lt; testRanges.length; j++) {
+    test(function() {
+      var range = testRangesCached[j].cloneRange();
+
+      // &quot;If node's root is different from the context object's root,
+      // return false and terminate these steps.&quot;
+      if (furthestAncestor(node) !== furthestAncestor(range.startContainer)) {
+        assert_false(range.isPointInRange(node, offset),
+          &quot;Must return false if node has a different root from the context object&quot;);
+        return;
+      }
+
+      // &quot;If node is a doctype, throw an &quot;InvalidNodeTypeError&quot; exception
+      // and terminate these steps.&quot;
+      if (node.nodeType == Node.DOCUMENT_TYPE_NODE) {
+        assert_throws(&quot;INVALID_NODE_TYPE_ERR&quot;, function() {
+          range.isPointInRange(node, offset);
+        }, &quot;Must throw InvalidNodeTypeError if node is a doctype&quot;);
+        return;
+      }
+
+      // &quot;If offset is greater than node's length, throw an
+      // &quot;IndexSizeError&quot; exception and terminate these steps.&quot;
+      if (normalizedOffset &gt; nodeLength(node)) {
+        assert_throws(&quot;INDEX_SIZE_ERR&quot;, function() {
+          range.isPointInRange(node, offset);
+        }, &quot;Must throw IndexSizeError if offset is greater than  length&quot;);
+        return;
+      }
+
+      // &quot;If (node, offset) is before start or after end, return false
+      // and terminate these steps.&quot;
+      if (getPosition(node, normalizedOffset, range.startContainer, range.startOffset) === &quot;before&quot;
+      || getPosition(node, normalizedOffset, range.endContainer, range.endOffset) === &quot;after&quot;) {
+        assert_false(range.isPointInRange(node, offset),
+          &quot;Must return false if point is before start or after end&quot;);
+        return;
+      }
+
+      // &quot;Return true.&quot;
+      assert_true(range.isPointInRange(node, offset),
+        &quot;Must return true if point is not before start, after end, or in different tree&quot;);
+    }, &quot;Point &quot; + i + &quot; &quot; + testPoints[i] + &quot;, range &quot; + j + &quot; &quot; + testRanges[j]);
+  }
+}
+
+testDiv.style.display = &quot;none&quot;;
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangemutationsexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangemutationsexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-mutations-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-mutations-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-mutations-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-mutations-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,5826 @@
</span><ins>+
+PASS paras[0].firstChild.splitText(376), with unselected range on paras[0].firstChild from 0 to 1 
+FAIL paras[0].firstChild.splitText(376), with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+PASS paras[0].firstChild.splitText(0), with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.splitText(0), with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.splitText(1), with unselected range collapsed at (paras[0].firstChild, 1) 
+FAIL paras[0].firstChild.splitText(1), with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.splitText(paras[0].firstChild.length), with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) 
+FAIL paras[0].firstChild.splitText(paras[0].firstChild.length), with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.splitText(1), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.splitText(1), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.splitText(2), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.splitText(2), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.splitText(3), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.splitText(3), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[1].firstChild.splitText(376), with unselected range on paras[1].firstChild from 0 to 1 
+FAIL paras[1].firstChild.splitText(376), with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.splitText(0), with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.splitText(0), with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.splitText(1), with unselected range collapsed at (paras[1].firstChild, 1) 
+FAIL paras[1].firstChild.splitText(1), with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.splitText(paras[1].firstChild.length), with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) 
+FAIL paras[1].firstChild.splitText(paras[1].firstChild.length), with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.splitText(1), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.splitText(1), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.splitText(2), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.splitText(2), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.splitText(3), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.splitText(3), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS foreignTextNode.splitText(376), with unselected range on foreignTextNode from 0 to 1 
+FAIL foreignTextNode.splitText(376), with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.splitText(0), with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.splitText(0), with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.splitText(1), with unselected range collapsed at (foreignTextNode, 1) 
+FAIL foreignTextNode.splitText(1), with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.splitText(foreignTextNode.length), with unselected range collapsed at (foreignTextNode, foreignTextNode.length) 
+FAIL foreignTextNode.splitText(foreignTextNode.length), with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.splitText(1), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.splitText(1), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.splitText(2), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.splitText(2), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.splitText(3), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.splitText(3), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.splitText(376), with unselected range on xmlTextNode from 0 to 1 
+FAIL xmlTextNode.splitText(376), with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.splitText(0), with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.splitText(0), with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.splitText(1), with unselected range collapsed at (xmlTextNode, 1) 
+FAIL xmlTextNode.splitText(1), with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.splitText(xmlTextNode.length), with unselected range collapsed at (xmlTextNode, xmlTextNode.length) 
+FAIL xmlTextNode.splitText(xmlTextNode.length), with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.splitText(1), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.splitText(1), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.splitText(2), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.splitText(2), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.splitText(3), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.splitText(3), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.splitText(376), with unselected range on detachedTextNode from 0 to 1 
+FAIL detachedTextNode.splitText(376), with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.splitText(0), with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.splitText(0), with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.splitText(1), with unselected range collapsed at (detachedTextNode, 1) 
+FAIL detachedTextNode.splitText(1), with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.splitText(detachedTextNode.length), with unselected range collapsed at (detachedTextNode, detachedTextNode.length) 
+FAIL detachedTextNode.splitText(detachedTextNode.length), with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.splitText(1), with unselected range on detachedTextNode from 1 to 3 assert_equals: Wrong end offset expected 1 but got 3
+FAIL detachedTextNode.splitText(1), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.splitText(2), with unselected range on detachedTextNode from 1 to 3 assert_equals: Wrong end offset expected 2 but got 3
+FAIL detachedTextNode.splitText(2), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.splitText(3), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.splitText(3), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.splitText(376), with unselected range on detachedForeignTextNode from 0 to 1 
+FAIL detachedForeignTextNode.splitText(376), with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.splitText(0), with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.splitText(0), with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.splitText(1), with unselected range collapsed at (detachedForeignTextNode, 1) 
+FAIL detachedForeignTextNode.splitText(1), with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.splitText(detachedForeignTextNode.length), with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) 
+FAIL detachedForeignTextNode.splitText(detachedForeignTextNode.length), with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.splitText(1), with unselected range on detachedForeignTextNode from 1 to 3 assert_equals: Wrong end offset expected 1 but got 3
+FAIL detachedForeignTextNode.splitText(1), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.splitText(2), with unselected range on detachedForeignTextNode from 1 to 3 assert_equals: Wrong end offset expected 2 but got 3
+FAIL detachedForeignTextNode.splitText(2), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.splitText(3), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.splitText(3), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.splitText(376), with unselected range on detachedXmlTextNode from 0 to 1 
+FAIL detachedXmlTextNode.splitText(376), with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.splitText(0), with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.splitText(0), with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.splitText(1), with unselected range collapsed at (detachedXmlTextNode, 1) 
+FAIL detachedXmlTextNode.splitText(1), with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.splitText(detachedXmlTextNode.length), with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) 
+FAIL detachedXmlTextNode.splitText(detachedXmlTextNode.length), with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.splitText(1), with unselected range on detachedXmlTextNode from 1 to 3 assert_equals: Wrong end offset expected 1 but got 3
+FAIL detachedXmlTextNode.splitText(1), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.splitText(2), with unselected range on detachedXmlTextNode from 1 to 3 assert_equals: Wrong end offset expected 2 but got 3
+FAIL detachedXmlTextNode.splitText(2), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.splitText(3), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.splitText(3), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS paras[0].firstChild.splitText(1), with unselected range collapsed at (paras[0], 0) 
+FAIL paras[0].firstChild.splitText(1), with selected range collapsed at (paras[0], 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL paras[0].firstChild.splitText(1), with unselected range on paras[0] from 0 to 1 assert_equals: Wrong end offset expected 2 but got 1
+FAIL paras[0].firstChild.splitText(1), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+FAIL paras[0].firstChild.splitText(1), with unselected range collapsed at (paras[0], 1) assert_equals: Wrong start offset expected 2 but got 1
+FAIL paras[0].firstChild.splitText(1), with selected range collapsed at (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL paras[0].firstChild.splitText(1), with unselected range from (paras[0].firstChild, 1) to (paras[0], 1) assert_equals: Wrong end offset expected 2 but got 1
+FAIL paras[0].firstChild.splitText(1), with selected range from (paras[0].firstChild, 1) to (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+FAIL paras[0].firstChild.splitText(2), with unselected range from (paras[0].firstChild, 1) to (paras[0], 1) assert_equals: Wrong end offset expected 2 but got 1
+FAIL paras[0].firstChild.splitText(2), with selected range from (paras[0].firstChild, 1) to (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+FAIL paras[0].firstChild.splitText(3), with unselected range from (paras[0].firstChild, 1) to (paras[0], 1) assert_equals: Wrong end offset expected 2 but got 1
+FAIL paras[0].firstChild.splitText(3), with selected range from (paras[0].firstChild, 1) to (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.splitText(1), with unselected range from (paras[0], 0) to (paras[0].firstChild, 3) 
+FAIL paras[0].firstChild.splitText(1), with selected range from (paras[0], 0) to (paras[0].firstChild, 3) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb&quot; but got object &quot;Äb̈&quot;
+PASS paras[0].firstChild.splitText(2), with unselected range from (paras[0], 0) to (paras[0].firstChild, 3) 
+FAIL paras[0].firstChild.splitText(2), with selected range from (paras[0], 0) to (paras[0].firstChild, 3) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb&quot; but got object &quot;Äb̈&quot;
+PASS paras[0].firstChild.splitText(3), with unselected range from (paras[0], 0) to (paras[0].firstChild, 3) 
+FAIL paras[0].firstChild.splitText(3), with selected range from (paras[0], 0) to (paras[0].firstChild, 3) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb&quot; but got object &quot;Äb̈&quot;
+PASS paras[0].firstChild.insertData(376, &quot;foo&quot;), with unselected range on paras[0].firstChild from 0 to 1 
+FAIL paras[0].firstChild.insertData(376, &quot;foo&quot;), with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+PASS paras[0].firstChild.insertData(0, &quot;foo&quot;), with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.insertData(0, &quot;foo&quot;), with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.insertData(1, &quot;foo&quot;), with unselected range collapsed at (paras[0].firstChild, 1) 
+FAIL paras[0].firstChild.insertData(1, &quot;foo&quot;), with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.insertData(paras[0].firstChild.length, &quot;foo&quot;), with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) 
+FAIL paras[0].firstChild.insertData(paras[0].firstChild.length, &quot;foo&quot;), with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.insertData(1, &quot;foo&quot;), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.insertData(1, &quot;foo&quot;), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.insertData(2, &quot;foo&quot;), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.insertData(2, &quot;foo&quot;), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.insertData(3, &quot;foo&quot;), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.insertData(3, &quot;foo&quot;), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.insertData(376, &quot;&quot;), with unselected range on paras[0].firstChild from 0 to 1 
+FAIL paras[0].firstChild.insertData(376, &quot;&quot;), with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+PASS paras[0].firstChild.insertData(0, &quot;&quot;), with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.insertData(0, &quot;&quot;), with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.insertData(1, &quot;&quot;), with unselected range collapsed at (paras[0].firstChild, 1) 
+FAIL paras[0].firstChild.insertData(1, &quot;&quot;), with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.insertData(paras[0].firstChild.length, &quot;&quot;), with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) 
+FAIL paras[0].firstChild.insertData(paras[0].firstChild.length, &quot;&quot;), with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.insertData(1, &quot;&quot;), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.insertData(1, &quot;&quot;), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.insertData(2, &quot;&quot;), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.insertData(2, &quot;&quot;), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.insertData(3, &quot;&quot;), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.insertData(3, &quot;&quot;), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[1].firstChild.insertData(376, &quot;foo&quot;), with unselected range on paras[1].firstChild from 0 to 1 
+FAIL paras[1].firstChild.insertData(376, &quot;foo&quot;), with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.insertData(0, &quot;foo&quot;), with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.insertData(0, &quot;foo&quot;), with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.insertData(1, &quot;foo&quot;), with unselected range collapsed at (paras[1].firstChild, 1) 
+FAIL paras[1].firstChild.insertData(1, &quot;foo&quot;), with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.insertData(paras[1].firstChild.length, &quot;foo&quot;), with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) 
+FAIL paras[1].firstChild.insertData(paras[1].firstChild.length, &quot;foo&quot;), with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.insertData(1, &quot;foo&quot;), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.insertData(1, &quot;foo&quot;), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.insertData(2, &quot;foo&quot;), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.insertData(2, &quot;foo&quot;), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.insertData(3, &quot;foo&quot;), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.insertData(3, &quot;foo&quot;), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.insertData(376, &quot;&quot;), with unselected range on paras[1].firstChild from 0 to 1 
+FAIL paras[1].firstChild.insertData(376, &quot;&quot;), with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.insertData(0, &quot;&quot;), with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.insertData(0, &quot;&quot;), with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.insertData(1, &quot;&quot;), with unselected range collapsed at (paras[1].firstChild, 1) 
+FAIL paras[1].firstChild.insertData(1, &quot;&quot;), with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.insertData(paras[1].firstChild.length, &quot;&quot;), with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) 
+FAIL paras[1].firstChild.insertData(paras[1].firstChild.length, &quot;&quot;), with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.insertData(1, &quot;&quot;), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.insertData(1, &quot;&quot;), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.insertData(2, &quot;&quot;), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.insertData(2, &quot;&quot;), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.insertData(3, &quot;&quot;), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.insertData(3, &quot;&quot;), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS foreignTextNode.insertData(376, &quot;foo&quot;), with unselected range on foreignTextNode from 0 to 1 
+FAIL foreignTextNode.insertData(376, &quot;foo&quot;), with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.insertData(0, &quot;foo&quot;), with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.insertData(0, &quot;foo&quot;), with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.insertData(1, &quot;foo&quot;), with unselected range collapsed at (foreignTextNode, 1) 
+FAIL foreignTextNode.insertData(1, &quot;foo&quot;), with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.insertData(foreignTextNode.length, &quot;foo&quot;), with unselected range collapsed at (foreignTextNode, foreignTextNode.length) 
+FAIL foreignTextNode.insertData(foreignTextNode.length, &quot;foo&quot;), with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.insertData(1, &quot;foo&quot;), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.insertData(1, &quot;foo&quot;), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.insertData(2, &quot;foo&quot;), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.insertData(2, &quot;foo&quot;), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.insertData(3, &quot;foo&quot;), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.insertData(3, &quot;foo&quot;), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.insertData(376, &quot;&quot;), with unselected range on foreignTextNode from 0 to 1 
+FAIL foreignTextNode.insertData(376, &quot;&quot;), with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.insertData(0, &quot;&quot;), with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.insertData(0, &quot;&quot;), with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.insertData(1, &quot;&quot;), with unselected range collapsed at (foreignTextNode, 1) 
+FAIL foreignTextNode.insertData(1, &quot;&quot;), with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.insertData(foreignTextNode.length, &quot;&quot;), with unselected range collapsed at (foreignTextNode, foreignTextNode.length) 
+FAIL foreignTextNode.insertData(foreignTextNode.length, &quot;&quot;), with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.insertData(1, &quot;&quot;), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.insertData(1, &quot;&quot;), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.insertData(2, &quot;&quot;), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.insertData(2, &quot;&quot;), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.insertData(3, &quot;&quot;), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.insertData(3, &quot;&quot;), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.insertData(376, &quot;foo&quot;), with unselected range on xmlTextNode from 0 to 1 
+FAIL xmlTextNode.insertData(376, &quot;foo&quot;), with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.insertData(0, &quot;foo&quot;), with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.insertData(0, &quot;foo&quot;), with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.insertData(1, &quot;foo&quot;), with unselected range collapsed at (xmlTextNode, 1) 
+FAIL xmlTextNode.insertData(1, &quot;foo&quot;), with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.insertData(xmlTextNode.length, &quot;foo&quot;), with unselected range collapsed at (xmlTextNode, xmlTextNode.length) 
+FAIL xmlTextNode.insertData(xmlTextNode.length, &quot;foo&quot;), with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.insertData(1, &quot;foo&quot;), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.insertData(1, &quot;foo&quot;), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.insertData(2, &quot;foo&quot;), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.insertData(2, &quot;foo&quot;), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.insertData(3, &quot;foo&quot;), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.insertData(3, &quot;foo&quot;), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.insertData(376, &quot;&quot;), with unselected range on xmlTextNode from 0 to 1 
+FAIL xmlTextNode.insertData(376, &quot;&quot;), with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.insertData(0, &quot;&quot;), with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.insertData(0, &quot;&quot;), with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.insertData(1, &quot;&quot;), with unselected range collapsed at (xmlTextNode, 1) 
+FAIL xmlTextNode.insertData(1, &quot;&quot;), with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.insertData(xmlTextNode.length, &quot;&quot;), with unselected range collapsed at (xmlTextNode, xmlTextNode.length) 
+FAIL xmlTextNode.insertData(xmlTextNode.length, &quot;&quot;), with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.insertData(1, &quot;&quot;), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.insertData(1, &quot;&quot;), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.insertData(2, &quot;&quot;), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.insertData(2, &quot;&quot;), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.insertData(3, &quot;&quot;), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.insertData(3, &quot;&quot;), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.insertData(376, &quot;foo&quot;), with unselected range on detachedTextNode from 0 to 1 
+FAIL detachedTextNode.insertData(376, &quot;foo&quot;), with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.insertData(0, &quot;foo&quot;), with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.insertData(0, &quot;foo&quot;), with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.insertData(1, &quot;foo&quot;), with unselected range collapsed at (detachedTextNode, 1) 
+FAIL detachedTextNode.insertData(1, &quot;foo&quot;), with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.insertData(detachedTextNode.length, &quot;foo&quot;), with unselected range collapsed at (detachedTextNode, detachedTextNode.length) 
+FAIL detachedTextNode.insertData(detachedTextNode.length, &quot;foo&quot;), with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.insertData(1, &quot;foo&quot;), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.insertData(1, &quot;foo&quot;), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.insertData(2, &quot;foo&quot;), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.insertData(2, &quot;foo&quot;), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.insertData(3, &quot;foo&quot;), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.insertData(3, &quot;foo&quot;), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.insertData(376, &quot;&quot;), with unselected range on detachedTextNode from 0 to 1 
+FAIL detachedTextNode.insertData(376, &quot;&quot;), with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.insertData(0, &quot;&quot;), with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.insertData(0, &quot;&quot;), with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.insertData(1, &quot;&quot;), with unselected range collapsed at (detachedTextNode, 1) 
+FAIL detachedTextNode.insertData(1, &quot;&quot;), with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.insertData(detachedTextNode.length, &quot;&quot;), with unselected range collapsed at (detachedTextNode, detachedTextNode.length) 
+FAIL detachedTextNode.insertData(detachedTextNode.length, &quot;&quot;), with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.insertData(1, &quot;&quot;), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.insertData(1, &quot;&quot;), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.insertData(2, &quot;&quot;), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.insertData(2, &quot;&quot;), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.insertData(3, &quot;&quot;), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.insertData(3, &quot;&quot;), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.insertData(376, &quot;foo&quot;), with unselected range on detachedForeignTextNode from 0 to 1 
+FAIL detachedForeignTextNode.insertData(376, &quot;foo&quot;), with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.insertData(0, &quot;foo&quot;), with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.insertData(0, &quot;foo&quot;), with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.insertData(1, &quot;foo&quot;), with unselected range collapsed at (detachedForeignTextNode, 1) 
+FAIL detachedForeignTextNode.insertData(1, &quot;foo&quot;), with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.insertData(detachedForeignTextNode.length, &quot;foo&quot;), with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) 
+FAIL detachedForeignTextNode.insertData(detachedForeignTextNode.length, &quot;foo&quot;), with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.insertData(1, &quot;foo&quot;), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.insertData(1, &quot;foo&quot;), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.insertData(2, &quot;foo&quot;), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.insertData(2, &quot;foo&quot;), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.insertData(3, &quot;foo&quot;), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.insertData(3, &quot;foo&quot;), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.insertData(376, &quot;&quot;), with unselected range on detachedForeignTextNode from 0 to 1 
+FAIL detachedForeignTextNode.insertData(376, &quot;&quot;), with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.insertData(0, &quot;&quot;), with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.insertData(0, &quot;&quot;), with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.insertData(1, &quot;&quot;), with unselected range collapsed at (detachedForeignTextNode, 1) 
+FAIL detachedForeignTextNode.insertData(1, &quot;&quot;), with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.insertData(detachedForeignTextNode.length, &quot;&quot;), with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) 
+FAIL detachedForeignTextNode.insertData(detachedForeignTextNode.length, &quot;&quot;), with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.insertData(1, &quot;&quot;), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.insertData(1, &quot;&quot;), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.insertData(2, &quot;&quot;), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.insertData(2, &quot;&quot;), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.insertData(3, &quot;&quot;), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.insertData(3, &quot;&quot;), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.insertData(376, &quot;foo&quot;), with unselected range on detachedXmlTextNode from 0 to 1 
+FAIL detachedXmlTextNode.insertData(376, &quot;foo&quot;), with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.insertData(0, &quot;foo&quot;), with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.insertData(0, &quot;foo&quot;), with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.insertData(1, &quot;foo&quot;), with unselected range collapsed at (detachedXmlTextNode, 1) 
+FAIL detachedXmlTextNode.insertData(1, &quot;foo&quot;), with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.insertData(detachedXmlTextNode.length, &quot;foo&quot;), with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) 
+FAIL detachedXmlTextNode.insertData(detachedXmlTextNode.length, &quot;foo&quot;), with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.insertData(1, &quot;foo&quot;), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.insertData(1, &quot;foo&quot;), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.insertData(2, &quot;foo&quot;), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.insertData(2, &quot;foo&quot;), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.insertData(3, &quot;foo&quot;), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.insertData(3, &quot;foo&quot;), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.insertData(376, &quot;&quot;), with unselected range on detachedXmlTextNode from 0 to 1 
+FAIL detachedXmlTextNode.insertData(376, &quot;&quot;), with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.insertData(0, &quot;&quot;), with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.insertData(0, &quot;&quot;), with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.insertData(1, &quot;&quot;), with unselected range collapsed at (detachedXmlTextNode, 1) 
+FAIL detachedXmlTextNode.insertData(1, &quot;&quot;), with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.insertData(detachedXmlTextNode.length, &quot;&quot;), with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) 
+FAIL detachedXmlTextNode.insertData(detachedXmlTextNode.length, &quot;&quot;), with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.insertData(1, &quot;&quot;), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.insertData(1, &quot;&quot;), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.insertData(2, &quot;&quot;), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.insertData(2, &quot;&quot;), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.insertData(3, &quot;&quot;), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.insertData(3, &quot;&quot;), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS comment.insertData(376, &quot;foo&quot;), with unselected range on comment from 0 to 1 
+FAIL comment.insertData(376, &quot;foo&quot;), with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.insertData(0, &quot;foo&quot;), with unselected range collapsed at (comment, 0) 
+FAIL comment.insertData(0, &quot;foo&quot;), with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.insertData(1, &quot;foo&quot;), with unselected range collapsed at (comment, 1) 
+FAIL comment.insertData(1, &quot;foo&quot;), with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.insertData(comment.length, &quot;foo&quot;), with unselected range collapsed at (comment, comment.length) 
+FAIL comment.insertData(comment.length, &quot;foo&quot;), with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.insertData(1, &quot;foo&quot;), with unselected range on comment from 1 to 3 
+FAIL comment.insertData(1, &quot;foo&quot;), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.insertData(2, &quot;foo&quot;), with unselected range on comment from 1 to 3 
+FAIL comment.insertData(2, &quot;foo&quot;), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.insertData(3, &quot;foo&quot;), with unselected range on comment from 1 to 3 
+FAIL comment.insertData(3, &quot;foo&quot;), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.insertData(376, &quot;&quot;), with unselected range on comment from 0 to 1 
+FAIL comment.insertData(376, &quot;&quot;), with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.insertData(0, &quot;&quot;), with unselected range collapsed at (comment, 0) 
+FAIL comment.insertData(0, &quot;&quot;), with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.insertData(1, &quot;&quot;), with unselected range collapsed at (comment, 1) 
+FAIL comment.insertData(1, &quot;&quot;), with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.insertData(comment.length, &quot;&quot;), with unselected range collapsed at (comment, comment.length) 
+FAIL comment.insertData(comment.length, &quot;&quot;), with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.insertData(1, &quot;&quot;), with unselected range on comment from 1 to 3 
+FAIL comment.insertData(1, &quot;&quot;), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.insertData(2, &quot;&quot;), with unselected range on comment from 1 to 3 
+FAIL comment.insertData(2, &quot;&quot;), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.insertData(3, &quot;&quot;), with unselected range on comment from 1 to 3 
+FAIL comment.insertData(3, &quot;&quot;), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS foreignComment.insertData(376, &quot;foo&quot;), with unselected range on foreignComment from 0 to 1 
+FAIL foreignComment.insertData(376, &quot;foo&quot;), with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.insertData(0, &quot;foo&quot;), with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.insertData(0, &quot;foo&quot;), with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.insertData(1, &quot;foo&quot;), with unselected range collapsed at (foreignComment, 1) 
+FAIL foreignComment.insertData(1, &quot;foo&quot;), with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.insertData(foreignComment.length, &quot;foo&quot;), with unselected range collapsed at (foreignComment, foreignComment.length) 
+FAIL foreignComment.insertData(foreignComment.length, &quot;foo&quot;), with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.insertData(1, &quot;foo&quot;), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.insertData(1, &quot;foo&quot;), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.insertData(2, &quot;foo&quot;), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.insertData(2, &quot;foo&quot;), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.insertData(3, &quot;foo&quot;), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.insertData(3, &quot;foo&quot;), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.insertData(376, &quot;&quot;), with unselected range on foreignComment from 0 to 1 
+FAIL foreignComment.insertData(376, &quot;&quot;), with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.insertData(0, &quot;&quot;), with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.insertData(0, &quot;&quot;), with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.insertData(1, &quot;&quot;), with unselected range collapsed at (foreignComment, 1) 
+FAIL foreignComment.insertData(1, &quot;&quot;), with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.insertData(foreignComment.length, &quot;&quot;), with unselected range collapsed at (foreignComment, foreignComment.length) 
+FAIL foreignComment.insertData(foreignComment.length, &quot;&quot;), with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.insertData(1, &quot;&quot;), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.insertData(1, &quot;&quot;), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.insertData(2, &quot;&quot;), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.insertData(2, &quot;&quot;), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.insertData(3, &quot;&quot;), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.insertData(3, &quot;&quot;), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.insertData(376, &quot;foo&quot;), with unselected range on xmlComment from 0 to 1 
+FAIL xmlComment.insertData(376, &quot;foo&quot;), with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.insertData(0, &quot;foo&quot;), with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.insertData(0, &quot;foo&quot;), with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.insertData(1, &quot;foo&quot;), with unselected range collapsed at (xmlComment, 1) 
+FAIL xmlComment.insertData(1, &quot;foo&quot;), with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.insertData(xmlComment.length, &quot;foo&quot;), with unselected range collapsed at (xmlComment, xmlComment.length) 
+FAIL xmlComment.insertData(xmlComment.length, &quot;foo&quot;), with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.insertData(1, &quot;foo&quot;), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.insertData(1, &quot;foo&quot;), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.insertData(2, &quot;foo&quot;), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.insertData(2, &quot;foo&quot;), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.insertData(3, &quot;foo&quot;), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.insertData(3, &quot;foo&quot;), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.insertData(376, &quot;&quot;), with unselected range on xmlComment from 0 to 1 
+FAIL xmlComment.insertData(376, &quot;&quot;), with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.insertData(0, &quot;&quot;), with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.insertData(0, &quot;&quot;), with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.insertData(1, &quot;&quot;), with unselected range collapsed at (xmlComment, 1) 
+FAIL xmlComment.insertData(1, &quot;&quot;), with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.insertData(xmlComment.length, &quot;&quot;), with unselected range collapsed at (xmlComment, xmlComment.length) 
+FAIL xmlComment.insertData(xmlComment.length, &quot;&quot;), with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.insertData(1, &quot;&quot;), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.insertData(1, &quot;&quot;), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.insertData(2, &quot;&quot;), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.insertData(2, &quot;&quot;), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.insertData(3, &quot;&quot;), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.insertData(3, &quot;&quot;), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.insertData(376, &quot;foo&quot;), with unselected range on detachedComment from 0 to 1 
+FAIL detachedComment.insertData(376, &quot;foo&quot;), with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.insertData(0, &quot;foo&quot;), with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.insertData(0, &quot;foo&quot;), with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.insertData(1, &quot;foo&quot;), with unselected range collapsed at (detachedComment, 1) 
+FAIL detachedComment.insertData(1, &quot;foo&quot;), with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.insertData(detachedComment.length, &quot;foo&quot;), with unselected range collapsed at (detachedComment, detachedComment.length) 
+FAIL detachedComment.insertData(detachedComment.length, &quot;foo&quot;), with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.insertData(1, &quot;foo&quot;), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.insertData(1, &quot;foo&quot;), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.insertData(2, &quot;foo&quot;), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.insertData(2, &quot;foo&quot;), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.insertData(3, &quot;foo&quot;), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.insertData(3, &quot;foo&quot;), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.insertData(376, &quot;&quot;), with unselected range on detachedComment from 0 to 1 
+FAIL detachedComment.insertData(376, &quot;&quot;), with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.insertData(0, &quot;&quot;), with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.insertData(0, &quot;&quot;), with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.insertData(1, &quot;&quot;), with unselected range collapsed at (detachedComment, 1) 
+FAIL detachedComment.insertData(1, &quot;&quot;), with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.insertData(detachedComment.length, &quot;&quot;), with unselected range collapsed at (detachedComment, detachedComment.length) 
+FAIL detachedComment.insertData(detachedComment.length, &quot;&quot;), with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.insertData(1, &quot;&quot;), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.insertData(1, &quot;&quot;), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.insertData(2, &quot;&quot;), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.insertData(2, &quot;&quot;), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.insertData(3, &quot;&quot;), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.insertData(3, &quot;&quot;), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.insertData(376, &quot;foo&quot;), with unselected range on detachedForeignComment from 0 to 1 
+FAIL detachedForeignComment.insertData(376, &quot;foo&quot;), with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.insertData(0, &quot;foo&quot;), with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.insertData(0, &quot;foo&quot;), with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.insertData(1, &quot;foo&quot;), with unselected range collapsed at (detachedForeignComment, 1) 
+FAIL detachedForeignComment.insertData(1, &quot;foo&quot;), with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.insertData(detachedForeignComment.length, &quot;foo&quot;), with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) 
+FAIL detachedForeignComment.insertData(detachedForeignComment.length, &quot;foo&quot;), with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.insertData(1, &quot;foo&quot;), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.insertData(1, &quot;foo&quot;), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.insertData(2, &quot;foo&quot;), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.insertData(2, &quot;foo&quot;), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.insertData(3, &quot;foo&quot;), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.insertData(3, &quot;foo&quot;), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.insertData(376, &quot;&quot;), with unselected range on detachedForeignComment from 0 to 1 
+FAIL detachedForeignComment.insertData(376, &quot;&quot;), with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.insertData(0, &quot;&quot;), with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.insertData(0, &quot;&quot;), with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.insertData(1, &quot;&quot;), with unselected range collapsed at (detachedForeignComment, 1) 
+FAIL detachedForeignComment.insertData(1, &quot;&quot;), with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.insertData(detachedForeignComment.length, &quot;&quot;), with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) 
+FAIL detachedForeignComment.insertData(detachedForeignComment.length, &quot;&quot;), with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.insertData(1, &quot;&quot;), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.insertData(1, &quot;&quot;), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.insertData(2, &quot;&quot;), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.insertData(2, &quot;&quot;), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.insertData(3, &quot;&quot;), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.insertData(3, &quot;&quot;), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.insertData(376, &quot;foo&quot;), with unselected range on detachedXmlComment from 0 to 1 
+FAIL detachedXmlComment.insertData(376, &quot;foo&quot;), with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.insertData(0, &quot;foo&quot;), with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.insertData(0, &quot;foo&quot;), with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.insertData(1, &quot;foo&quot;), with unselected range collapsed at (detachedXmlComment, 1) 
+FAIL detachedXmlComment.insertData(1, &quot;foo&quot;), with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.insertData(detachedXmlComment.length, &quot;foo&quot;), with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) 
+FAIL detachedXmlComment.insertData(detachedXmlComment.length, &quot;foo&quot;), with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.insertData(1, &quot;foo&quot;), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.insertData(1, &quot;foo&quot;), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.insertData(2, &quot;foo&quot;), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.insertData(2, &quot;foo&quot;), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.insertData(3, &quot;foo&quot;), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.insertData(3, &quot;foo&quot;), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.insertData(376, &quot;&quot;), with unselected range on detachedXmlComment from 0 to 1 
+FAIL detachedXmlComment.insertData(376, &quot;&quot;), with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.insertData(0, &quot;&quot;), with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.insertData(0, &quot;&quot;), with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.insertData(1, &quot;&quot;), with unselected range collapsed at (detachedXmlComment, 1) 
+FAIL detachedXmlComment.insertData(1, &quot;&quot;), with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.insertData(detachedXmlComment.length, &quot;&quot;), with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) 
+FAIL detachedXmlComment.insertData(detachedXmlComment.length, &quot;&quot;), with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.insertData(1, &quot;&quot;), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.insertData(1, &quot;&quot;), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.insertData(2, &quot;&quot;), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.insertData(2, &quot;&quot;), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.insertData(3, &quot;&quot;), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.insertData(3, &quot;&quot;), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS paras[0].firstChild.insertData(1, &quot;foo&quot;), with unselected range collapsed at (paras[0], 0) 
+FAIL paras[0].firstChild.insertData(1, &quot;foo&quot;), with selected range collapsed at (paras[0], 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.insertData(1, &quot;foo&quot;), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].firstChild.insertData(1, &quot;foo&quot;), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.insertData(1, &quot;foo&quot;), with unselected range collapsed at (paras[0], 1) 
+FAIL paras[0].firstChild.insertData(1, &quot;foo&quot;), with selected range collapsed at (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.insertData(1, &quot;foo&quot;), with unselected range from (paras[0].firstChild, 1) to (paras[0], 1) 
+FAIL paras[0].firstChild.insertData(1, &quot;foo&quot;), with selected range from (paras[0].firstChild, 1) to (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.insertData(2, &quot;foo&quot;), with unselected range from (paras[0].firstChild, 1) to (paras[0], 1) 
+FAIL paras[0].firstChild.insertData(2, &quot;foo&quot;), with selected range from (paras[0].firstChild, 1) to (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.insertData(3, &quot;foo&quot;), with unselected range from (paras[0].firstChild, 1) to (paras[0], 1) 
+FAIL paras[0].firstChild.insertData(3, &quot;foo&quot;), with selected range from (paras[0].firstChild, 1) to (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.insertData(1, &quot;foo&quot;), with unselected range from (paras[0], 0) to (paras[0].firstChild, 3) 
+FAIL paras[0].firstChild.insertData(1, &quot;foo&quot;), with selected range from (paras[0], 0) to (paras[0].firstChild, 3) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb&quot; but got object &quot;Äb̈&quot;
+PASS paras[0].firstChild.insertData(2, &quot;foo&quot;), with unselected range from (paras[0], 0) to (paras[0].firstChild, 3) 
+FAIL paras[0].firstChild.insertData(2, &quot;foo&quot;), with selected range from (paras[0], 0) to (paras[0].firstChild, 3) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb&quot; but got object &quot;Äb̈&quot;
+PASS paras[0].firstChild.insertData(3, &quot;foo&quot;), with unselected range from (paras[0], 0) to (paras[0].firstChild, 3) 
+FAIL paras[0].firstChild.insertData(3, &quot;foo&quot;), with selected range from (paras[0], 0) to (paras[0].firstChild, 3) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb&quot; but got object &quot;Äb̈&quot;
+PASS paras[0].firstChild.appendData(&quot;foo&quot;), with unselected range on paras[0].firstChild from 0 to 1 
+FAIL paras[0].firstChild.appendData(&quot;foo&quot;), with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+PASS paras[0].firstChild.appendData(&quot;foo&quot;), with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.appendData(&quot;foo&quot;), with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.appendData(&quot;foo&quot;), with unselected range collapsed at (paras[0].firstChild, 1) 
+FAIL paras[0].firstChild.appendData(&quot;foo&quot;), with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.appendData(&quot;foo&quot;), with unselected range on paras[0].firstChild from 0 to paras[0].firstChild.length 
+FAIL paras[0].firstChild.appendData(&quot;foo&quot;), with selected range on paras[0].firstChild from 0 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.appendData(&quot;foo&quot;), with unselected range on paras[0].firstChild from 1 to paras[0].firstChild.length 
+FAIL paras[0].firstChild.appendData(&quot;foo&quot;), with selected range on paras[0].firstChild from 1 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.appendData(&quot;foo&quot;), with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) 
+FAIL paras[0].firstChild.appendData(&quot;foo&quot;), with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.appendData(&quot;foo&quot;), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.appendData(&quot;foo&quot;), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.appendData(&quot;&quot;), with unselected range on paras[0].firstChild from 0 to 1 
+FAIL paras[0].firstChild.appendData(&quot;&quot;), with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+PASS paras[0].firstChild.appendData(&quot;&quot;), with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.appendData(&quot;&quot;), with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.appendData(&quot;&quot;), with unselected range collapsed at (paras[0].firstChild, 1) 
+FAIL paras[0].firstChild.appendData(&quot;&quot;), with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.appendData(&quot;&quot;), with unselected range on paras[0].firstChild from 0 to paras[0].firstChild.length 
+FAIL paras[0].firstChild.appendData(&quot;&quot;), with selected range on paras[0].firstChild from 0 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.appendData(&quot;&quot;), with unselected range on paras[0].firstChild from 1 to paras[0].firstChild.length 
+FAIL paras[0].firstChild.appendData(&quot;&quot;), with selected range on paras[0].firstChild from 1 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.appendData(&quot;&quot;), with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) 
+FAIL paras[0].firstChild.appendData(&quot;&quot;), with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.appendData(&quot;&quot;), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.appendData(&quot;&quot;), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[1].firstChild.appendData(&quot;foo&quot;), with unselected range on paras[1].firstChild from 0 to 1 
+FAIL paras[1].firstChild.appendData(&quot;foo&quot;), with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.appendData(&quot;foo&quot;), with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.appendData(&quot;foo&quot;), with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.appendData(&quot;foo&quot;), with unselected range collapsed at (paras[1].firstChild, 1) 
+FAIL paras[1].firstChild.appendData(&quot;foo&quot;), with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.appendData(&quot;foo&quot;), with unselected range on paras[1].firstChild from 0 to paras[1].firstChild.length 
+FAIL paras[1].firstChild.appendData(&quot;foo&quot;), with selected range on paras[1].firstChild from 0 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ijklmnop
+&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.appendData(&quot;foo&quot;), with unselected range on paras[1].firstChild from 1 to paras[1].firstChild.length 
+FAIL paras[1].firstChild.appendData(&quot;foo&quot;), with selected range on paras[1].firstChild from 1 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jklmnop
+&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.appendData(&quot;foo&quot;), with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) 
+FAIL paras[1].firstChild.appendData(&quot;foo&quot;), with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.appendData(&quot;foo&quot;), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.appendData(&quot;foo&quot;), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.appendData(&quot;&quot;), with unselected range on paras[1].firstChild from 0 to 1 
+FAIL paras[1].firstChild.appendData(&quot;&quot;), with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.appendData(&quot;&quot;), with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.appendData(&quot;&quot;), with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.appendData(&quot;&quot;), with unselected range collapsed at (paras[1].firstChild, 1) 
+FAIL paras[1].firstChild.appendData(&quot;&quot;), with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.appendData(&quot;&quot;), with unselected range on paras[1].firstChild from 0 to paras[1].firstChild.length 
+FAIL paras[1].firstChild.appendData(&quot;&quot;), with selected range on paras[1].firstChild from 0 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ijklmnop
+&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.appendData(&quot;&quot;), with unselected range on paras[1].firstChild from 1 to paras[1].firstChild.length 
+FAIL paras[1].firstChild.appendData(&quot;&quot;), with selected range on paras[1].firstChild from 1 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jklmnop
+&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.appendData(&quot;&quot;), with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) 
+FAIL paras[1].firstChild.appendData(&quot;&quot;), with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.appendData(&quot;&quot;), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.appendData(&quot;&quot;), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS foreignTextNode.appendData(&quot;foo&quot;), with unselected range on foreignTextNode from 0 to 1 
+FAIL foreignTextNode.appendData(&quot;foo&quot;), with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.appendData(&quot;foo&quot;), with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.appendData(&quot;foo&quot;), with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.appendData(&quot;foo&quot;), with unselected range collapsed at (foreignTextNode, 1) 
+FAIL foreignTextNode.appendData(&quot;foo&quot;), with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.appendData(&quot;foo&quot;), with unselected range on foreignTextNode from 0 to foreignTextNode.length 
+FAIL foreignTextNode.appendData(&quot;foo&quot;), with selected range on foreignTextNode from 0 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.appendData(&quot;foo&quot;), with unselected range on foreignTextNode from 1 to foreignTextNode.length 
+FAIL foreignTextNode.appendData(&quot;foo&quot;), with selected range on foreignTextNode from 1 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.appendData(&quot;foo&quot;), with unselected range collapsed at (foreignTextNode, foreignTextNode.length) 
+FAIL foreignTextNode.appendData(&quot;foo&quot;), with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.appendData(&quot;foo&quot;), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.appendData(&quot;foo&quot;), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.appendData(&quot;&quot;), with unselected range on foreignTextNode from 0 to 1 
+FAIL foreignTextNode.appendData(&quot;&quot;), with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.appendData(&quot;&quot;), with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.appendData(&quot;&quot;), with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.appendData(&quot;&quot;), with unselected range collapsed at (foreignTextNode, 1) 
+FAIL foreignTextNode.appendData(&quot;&quot;), with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.appendData(&quot;&quot;), with unselected range on foreignTextNode from 0 to foreignTextNode.length 
+FAIL foreignTextNode.appendData(&quot;&quot;), with selected range on foreignTextNode from 0 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.appendData(&quot;&quot;), with unselected range on foreignTextNode from 1 to foreignTextNode.length 
+FAIL foreignTextNode.appendData(&quot;&quot;), with selected range on foreignTextNode from 1 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.appendData(&quot;&quot;), with unselected range collapsed at (foreignTextNode, foreignTextNode.length) 
+FAIL foreignTextNode.appendData(&quot;&quot;), with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.appendData(&quot;&quot;), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.appendData(&quot;&quot;), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.appendData(&quot;foo&quot;), with unselected range on xmlTextNode from 0 to 1 
+FAIL xmlTextNode.appendData(&quot;foo&quot;), with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.appendData(&quot;foo&quot;), with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.appendData(&quot;foo&quot;), with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.appendData(&quot;foo&quot;), with unselected range collapsed at (xmlTextNode, 1) 
+FAIL xmlTextNode.appendData(&quot;foo&quot;), with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.appendData(&quot;foo&quot;), with unselected range on xmlTextNode from 0 to xmlTextNode.length 
+FAIL xmlTextNode.appendData(&quot;foo&quot;), with selected range on xmlTextNode from 0 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.appendData(&quot;foo&quot;), with unselected range on xmlTextNode from 1 to xmlTextNode.length 
+FAIL xmlTextNode.appendData(&quot;foo&quot;), with selected range on xmlTextNode from 1 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.appendData(&quot;foo&quot;), with unselected range collapsed at (xmlTextNode, xmlTextNode.length) 
+FAIL xmlTextNode.appendData(&quot;foo&quot;), with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.appendData(&quot;foo&quot;), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.appendData(&quot;foo&quot;), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.appendData(&quot;&quot;), with unselected range on xmlTextNode from 0 to 1 
+FAIL xmlTextNode.appendData(&quot;&quot;), with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.appendData(&quot;&quot;), with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.appendData(&quot;&quot;), with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.appendData(&quot;&quot;), with unselected range collapsed at (xmlTextNode, 1) 
+FAIL xmlTextNode.appendData(&quot;&quot;), with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.appendData(&quot;&quot;), with unselected range on xmlTextNode from 0 to xmlTextNode.length 
+FAIL xmlTextNode.appendData(&quot;&quot;), with selected range on xmlTextNode from 0 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.appendData(&quot;&quot;), with unselected range on xmlTextNode from 1 to xmlTextNode.length 
+FAIL xmlTextNode.appendData(&quot;&quot;), with selected range on xmlTextNode from 1 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.appendData(&quot;&quot;), with unselected range collapsed at (xmlTextNode, xmlTextNode.length) 
+FAIL xmlTextNode.appendData(&quot;&quot;), with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.appendData(&quot;&quot;), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.appendData(&quot;&quot;), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.appendData(&quot;foo&quot;), with unselected range on detachedTextNode from 0 to 1 
+FAIL detachedTextNode.appendData(&quot;foo&quot;), with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.appendData(&quot;foo&quot;), with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.appendData(&quot;foo&quot;), with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.appendData(&quot;foo&quot;), with unselected range collapsed at (detachedTextNode, 1) 
+FAIL detachedTextNode.appendData(&quot;foo&quot;), with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.appendData(&quot;foo&quot;), with unselected range on detachedTextNode from 0 to detachedTextNode.length 
+FAIL detachedTextNode.appendData(&quot;foo&quot;), with selected range on detachedTextNode from 0 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.appendData(&quot;foo&quot;), with unselected range on detachedTextNode from 1 to detachedTextNode.length 
+FAIL detachedTextNode.appendData(&quot;foo&quot;), with selected range on detachedTextNode from 1 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.appendData(&quot;foo&quot;), with unselected range collapsed at (detachedTextNode, detachedTextNode.length) 
+FAIL detachedTextNode.appendData(&quot;foo&quot;), with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.appendData(&quot;foo&quot;), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.appendData(&quot;foo&quot;), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.appendData(&quot;&quot;), with unselected range on detachedTextNode from 0 to 1 
+FAIL detachedTextNode.appendData(&quot;&quot;), with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.appendData(&quot;&quot;), with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.appendData(&quot;&quot;), with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.appendData(&quot;&quot;), with unselected range collapsed at (detachedTextNode, 1) 
+FAIL detachedTextNode.appendData(&quot;&quot;), with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.appendData(&quot;&quot;), with unselected range on detachedTextNode from 0 to detachedTextNode.length 
+FAIL detachedTextNode.appendData(&quot;&quot;), with selected range on detachedTextNode from 0 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.appendData(&quot;&quot;), with unselected range on detachedTextNode from 1 to detachedTextNode.length 
+FAIL detachedTextNode.appendData(&quot;&quot;), with selected range on detachedTextNode from 1 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.appendData(&quot;&quot;), with unselected range collapsed at (detachedTextNode, detachedTextNode.length) 
+FAIL detachedTextNode.appendData(&quot;&quot;), with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.appendData(&quot;&quot;), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.appendData(&quot;&quot;), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.appendData(&quot;foo&quot;), with unselected range on detachedForeignTextNode from 0 to 1 
+FAIL detachedForeignTextNode.appendData(&quot;foo&quot;), with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.appendData(&quot;foo&quot;), with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.appendData(&quot;foo&quot;), with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.appendData(&quot;foo&quot;), with unselected range collapsed at (detachedForeignTextNode, 1) 
+FAIL detachedForeignTextNode.appendData(&quot;foo&quot;), with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.appendData(&quot;foo&quot;), with unselected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length 
+FAIL detachedForeignTextNode.appendData(&quot;foo&quot;), with selected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.appendData(&quot;foo&quot;), with unselected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length 
+FAIL detachedForeignTextNode.appendData(&quot;foo&quot;), with selected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.appendData(&quot;foo&quot;), with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) 
+FAIL detachedForeignTextNode.appendData(&quot;foo&quot;), with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.appendData(&quot;foo&quot;), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.appendData(&quot;foo&quot;), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.appendData(&quot;&quot;), with unselected range on detachedForeignTextNode from 0 to 1 
+FAIL detachedForeignTextNode.appendData(&quot;&quot;), with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.appendData(&quot;&quot;), with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.appendData(&quot;&quot;), with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.appendData(&quot;&quot;), with unselected range collapsed at (detachedForeignTextNode, 1) 
+FAIL detachedForeignTextNode.appendData(&quot;&quot;), with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.appendData(&quot;&quot;), with unselected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length 
+FAIL detachedForeignTextNode.appendData(&quot;&quot;), with selected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.appendData(&quot;&quot;), with unselected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length 
+FAIL detachedForeignTextNode.appendData(&quot;&quot;), with selected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.appendData(&quot;&quot;), with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) 
+FAIL detachedForeignTextNode.appendData(&quot;&quot;), with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.appendData(&quot;&quot;), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.appendData(&quot;&quot;), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.appendData(&quot;foo&quot;), with unselected range on detachedXmlTextNode from 0 to 1 
+FAIL detachedXmlTextNode.appendData(&quot;foo&quot;), with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.appendData(&quot;foo&quot;), with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.appendData(&quot;foo&quot;), with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.appendData(&quot;foo&quot;), with unselected range collapsed at (detachedXmlTextNode, 1) 
+FAIL detachedXmlTextNode.appendData(&quot;foo&quot;), with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.appendData(&quot;foo&quot;), with unselected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length 
+FAIL detachedXmlTextNode.appendData(&quot;foo&quot;), with selected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.appendData(&quot;foo&quot;), with unselected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length 
+FAIL detachedXmlTextNode.appendData(&quot;foo&quot;), with selected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.appendData(&quot;foo&quot;), with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) 
+FAIL detachedXmlTextNode.appendData(&quot;foo&quot;), with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.appendData(&quot;foo&quot;), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.appendData(&quot;foo&quot;), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.appendData(&quot;&quot;), with unselected range on detachedXmlTextNode from 0 to 1 
+FAIL detachedXmlTextNode.appendData(&quot;&quot;), with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.appendData(&quot;&quot;), with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.appendData(&quot;&quot;), with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.appendData(&quot;&quot;), with unselected range collapsed at (detachedXmlTextNode, 1) 
+FAIL detachedXmlTextNode.appendData(&quot;&quot;), with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.appendData(&quot;&quot;), with unselected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length 
+FAIL detachedXmlTextNode.appendData(&quot;&quot;), with selected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.appendData(&quot;&quot;), with unselected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length 
+FAIL detachedXmlTextNode.appendData(&quot;&quot;), with selected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.appendData(&quot;&quot;), with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) 
+FAIL detachedXmlTextNode.appendData(&quot;&quot;), with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.appendData(&quot;&quot;), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.appendData(&quot;&quot;), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS comment.appendData(&quot;foo&quot;), with unselected range on comment from 0 to 1 
+FAIL comment.appendData(&quot;foo&quot;), with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.appendData(&quot;foo&quot;), with unselected range collapsed at (comment, 0) 
+FAIL comment.appendData(&quot;foo&quot;), with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.appendData(&quot;foo&quot;), with unselected range collapsed at (comment, 1) 
+FAIL comment.appendData(&quot;foo&quot;), with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.appendData(&quot;foo&quot;), with unselected range on comment from 0 to comment.length 
+FAIL comment.appendData(&quot;foo&quot;), with selected range on comment from 0 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.appendData(&quot;foo&quot;), with unselected range on comment from 1 to comment.length 
+FAIL comment.appendData(&quot;foo&quot;), with selected range on comment from 1 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.appendData(&quot;foo&quot;), with unselected range collapsed at (comment, comment.length) 
+FAIL comment.appendData(&quot;foo&quot;), with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.appendData(&quot;foo&quot;), with unselected range on comment from 1 to 3 
+FAIL comment.appendData(&quot;foo&quot;), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.appendData(&quot;&quot;), with unselected range on comment from 0 to 1 
+FAIL comment.appendData(&quot;&quot;), with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.appendData(&quot;&quot;), with unselected range collapsed at (comment, 0) 
+FAIL comment.appendData(&quot;&quot;), with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.appendData(&quot;&quot;), with unselected range collapsed at (comment, 1) 
+FAIL comment.appendData(&quot;&quot;), with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.appendData(&quot;&quot;), with unselected range on comment from 0 to comment.length 
+FAIL comment.appendData(&quot;&quot;), with selected range on comment from 0 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.appendData(&quot;&quot;), with unselected range on comment from 1 to comment.length 
+FAIL comment.appendData(&quot;&quot;), with selected range on comment from 1 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.appendData(&quot;&quot;), with unselected range collapsed at (comment, comment.length) 
+FAIL comment.appendData(&quot;&quot;), with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.appendData(&quot;&quot;), with unselected range on comment from 1 to 3 
+FAIL comment.appendData(&quot;&quot;), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS foreignComment.appendData(&quot;foo&quot;), with unselected range on foreignComment from 0 to 1 
+FAIL foreignComment.appendData(&quot;foo&quot;), with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.appendData(&quot;foo&quot;), with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.appendData(&quot;foo&quot;), with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.appendData(&quot;foo&quot;), with unselected range collapsed at (foreignComment, 1) 
+FAIL foreignComment.appendData(&quot;foo&quot;), with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.appendData(&quot;foo&quot;), with unselected range on foreignComment from 0 to foreignComment.length 
+FAIL foreignComment.appendData(&quot;foo&quot;), with selected range on foreignComment from 0 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.appendData(&quot;foo&quot;), with unselected range on foreignComment from 1 to foreignComment.length 
+FAIL foreignComment.appendData(&quot;foo&quot;), with selected range on foreignComment from 1 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.appendData(&quot;foo&quot;), with unselected range collapsed at (foreignComment, foreignComment.length) 
+FAIL foreignComment.appendData(&quot;foo&quot;), with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.appendData(&quot;foo&quot;), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.appendData(&quot;foo&quot;), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.appendData(&quot;&quot;), with unselected range on foreignComment from 0 to 1 
+FAIL foreignComment.appendData(&quot;&quot;), with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.appendData(&quot;&quot;), with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.appendData(&quot;&quot;), with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.appendData(&quot;&quot;), with unselected range collapsed at (foreignComment, 1) 
+FAIL foreignComment.appendData(&quot;&quot;), with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.appendData(&quot;&quot;), with unselected range on foreignComment from 0 to foreignComment.length 
+FAIL foreignComment.appendData(&quot;&quot;), with selected range on foreignComment from 0 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.appendData(&quot;&quot;), with unselected range on foreignComment from 1 to foreignComment.length 
+FAIL foreignComment.appendData(&quot;&quot;), with selected range on foreignComment from 1 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.appendData(&quot;&quot;), with unselected range collapsed at (foreignComment, foreignComment.length) 
+FAIL foreignComment.appendData(&quot;&quot;), with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.appendData(&quot;&quot;), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.appendData(&quot;&quot;), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.appendData(&quot;foo&quot;), with unselected range on xmlComment from 0 to 1 
+FAIL xmlComment.appendData(&quot;foo&quot;), with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.appendData(&quot;foo&quot;), with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.appendData(&quot;foo&quot;), with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.appendData(&quot;foo&quot;), with unselected range collapsed at (xmlComment, 1) 
+FAIL xmlComment.appendData(&quot;foo&quot;), with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.appendData(&quot;foo&quot;), with unselected range on xmlComment from 0 to xmlComment.length 
+FAIL xmlComment.appendData(&quot;foo&quot;), with selected range on xmlComment from 0 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.appendData(&quot;foo&quot;), with unselected range on xmlComment from 1 to xmlComment.length 
+FAIL xmlComment.appendData(&quot;foo&quot;), with selected range on xmlComment from 1 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.appendData(&quot;foo&quot;), with unselected range collapsed at (xmlComment, xmlComment.length) 
+FAIL xmlComment.appendData(&quot;foo&quot;), with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.appendData(&quot;foo&quot;), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.appendData(&quot;foo&quot;), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.appendData(&quot;&quot;), with unselected range on xmlComment from 0 to 1 
+FAIL xmlComment.appendData(&quot;&quot;), with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.appendData(&quot;&quot;), with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.appendData(&quot;&quot;), with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.appendData(&quot;&quot;), with unselected range collapsed at (xmlComment, 1) 
+FAIL xmlComment.appendData(&quot;&quot;), with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.appendData(&quot;&quot;), with unselected range on xmlComment from 0 to xmlComment.length 
+FAIL xmlComment.appendData(&quot;&quot;), with selected range on xmlComment from 0 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.appendData(&quot;&quot;), with unselected range on xmlComment from 1 to xmlComment.length 
+FAIL xmlComment.appendData(&quot;&quot;), with selected range on xmlComment from 1 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.appendData(&quot;&quot;), with unselected range collapsed at (xmlComment, xmlComment.length) 
+FAIL xmlComment.appendData(&quot;&quot;), with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.appendData(&quot;&quot;), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.appendData(&quot;&quot;), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.appendData(&quot;foo&quot;), with unselected range on detachedComment from 0 to 1 
+FAIL detachedComment.appendData(&quot;foo&quot;), with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.appendData(&quot;foo&quot;), with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.appendData(&quot;foo&quot;), with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.appendData(&quot;foo&quot;), with unselected range collapsed at (detachedComment, 1) 
+FAIL detachedComment.appendData(&quot;foo&quot;), with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.appendData(&quot;foo&quot;), with unselected range on detachedComment from 0 to detachedComment.length 
+FAIL detachedComment.appendData(&quot;foo&quot;), with selected range on detachedComment from 0 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.appendData(&quot;foo&quot;), with unselected range on detachedComment from 1 to detachedComment.length 
+FAIL detachedComment.appendData(&quot;foo&quot;), with selected range on detachedComment from 1 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.appendData(&quot;foo&quot;), with unselected range collapsed at (detachedComment, detachedComment.length) 
+FAIL detachedComment.appendData(&quot;foo&quot;), with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.appendData(&quot;foo&quot;), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.appendData(&quot;foo&quot;), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.appendData(&quot;&quot;), with unselected range on detachedComment from 0 to 1 
+FAIL detachedComment.appendData(&quot;&quot;), with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.appendData(&quot;&quot;), with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.appendData(&quot;&quot;), with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.appendData(&quot;&quot;), with unselected range collapsed at (detachedComment, 1) 
+FAIL detachedComment.appendData(&quot;&quot;), with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.appendData(&quot;&quot;), with unselected range on detachedComment from 0 to detachedComment.length 
+FAIL detachedComment.appendData(&quot;&quot;), with selected range on detachedComment from 0 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.appendData(&quot;&quot;), with unselected range on detachedComment from 1 to detachedComment.length 
+FAIL detachedComment.appendData(&quot;&quot;), with selected range on detachedComment from 1 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.appendData(&quot;&quot;), with unselected range collapsed at (detachedComment, detachedComment.length) 
+FAIL detachedComment.appendData(&quot;&quot;), with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.appendData(&quot;&quot;), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.appendData(&quot;&quot;), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.appendData(&quot;foo&quot;), with unselected range on detachedForeignComment from 0 to 1 
+FAIL detachedForeignComment.appendData(&quot;foo&quot;), with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.appendData(&quot;foo&quot;), with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.appendData(&quot;foo&quot;), with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.appendData(&quot;foo&quot;), with unselected range collapsed at (detachedForeignComment, 1) 
+FAIL detachedForeignComment.appendData(&quot;foo&quot;), with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.appendData(&quot;foo&quot;), with unselected range on detachedForeignComment from 0 to detachedForeignComment.length 
+FAIL detachedForeignComment.appendData(&quot;foo&quot;), with selected range on detachedForeignComment from 0 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.appendData(&quot;foo&quot;), with unselected range on detachedForeignComment from 1 to detachedForeignComment.length 
+FAIL detachedForeignComment.appendData(&quot;foo&quot;), with selected range on detachedForeignComment from 1 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.appendData(&quot;foo&quot;), with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) 
+FAIL detachedForeignComment.appendData(&quot;foo&quot;), with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.appendData(&quot;foo&quot;), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.appendData(&quot;foo&quot;), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.appendData(&quot;&quot;), with unselected range on detachedForeignComment from 0 to 1 
+FAIL detachedForeignComment.appendData(&quot;&quot;), with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.appendData(&quot;&quot;), with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.appendData(&quot;&quot;), with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.appendData(&quot;&quot;), with unselected range collapsed at (detachedForeignComment, 1) 
+FAIL detachedForeignComment.appendData(&quot;&quot;), with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.appendData(&quot;&quot;), with unselected range on detachedForeignComment from 0 to detachedForeignComment.length 
+FAIL detachedForeignComment.appendData(&quot;&quot;), with selected range on detachedForeignComment from 0 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.appendData(&quot;&quot;), with unselected range on detachedForeignComment from 1 to detachedForeignComment.length 
+FAIL detachedForeignComment.appendData(&quot;&quot;), with selected range on detachedForeignComment from 1 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.appendData(&quot;&quot;), with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) 
+FAIL detachedForeignComment.appendData(&quot;&quot;), with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.appendData(&quot;&quot;), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.appendData(&quot;&quot;), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.appendData(&quot;foo&quot;), with unselected range on detachedXmlComment from 0 to 1 
+FAIL detachedXmlComment.appendData(&quot;foo&quot;), with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.appendData(&quot;foo&quot;), with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.appendData(&quot;foo&quot;), with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.appendData(&quot;foo&quot;), with unselected range collapsed at (detachedXmlComment, 1) 
+FAIL detachedXmlComment.appendData(&quot;foo&quot;), with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.appendData(&quot;foo&quot;), with unselected range on detachedXmlComment from 0 to detachedXmlComment.length 
+FAIL detachedXmlComment.appendData(&quot;foo&quot;), with selected range on detachedXmlComment from 0 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.appendData(&quot;foo&quot;), with unselected range on detachedXmlComment from 1 to detachedXmlComment.length 
+FAIL detachedXmlComment.appendData(&quot;foo&quot;), with selected range on detachedXmlComment from 1 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.appendData(&quot;foo&quot;), with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) 
+FAIL detachedXmlComment.appendData(&quot;foo&quot;), with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.appendData(&quot;foo&quot;), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.appendData(&quot;foo&quot;), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.appendData(&quot;&quot;), with unselected range on detachedXmlComment from 0 to 1 
+FAIL detachedXmlComment.appendData(&quot;&quot;), with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.appendData(&quot;&quot;), with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.appendData(&quot;&quot;), with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.appendData(&quot;&quot;), with unselected range collapsed at (detachedXmlComment, 1) 
+FAIL detachedXmlComment.appendData(&quot;&quot;), with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.appendData(&quot;&quot;), with unselected range on detachedXmlComment from 0 to detachedXmlComment.length 
+FAIL detachedXmlComment.appendData(&quot;&quot;), with selected range on detachedXmlComment from 0 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.appendData(&quot;&quot;), with unselected range on detachedXmlComment from 1 to detachedXmlComment.length 
+FAIL detachedXmlComment.appendData(&quot;&quot;), with selected range on detachedXmlComment from 1 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.appendData(&quot;&quot;), with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) 
+FAIL detachedXmlComment.appendData(&quot;&quot;), with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.appendData(&quot;&quot;), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.appendData(&quot;&quot;), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS paras[0].firstChild.appendData(&quot;&quot;), with unselected range collapsed at (paras[0], 0) 
+FAIL paras[0].firstChild.appendData(&quot;&quot;), with selected range collapsed at (paras[0], 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.appendData(&quot;&quot;), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].firstChild.appendData(&quot;&quot;), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.appendData(&quot;&quot;), with unselected range collapsed at (paras[0], 1) 
+FAIL paras[0].firstChild.appendData(&quot;&quot;), with selected range collapsed at (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.appendData(&quot;&quot;), with unselected range from (paras[0].firstChild, 1) to (paras[0], 1) 
+FAIL paras[0].firstChild.appendData(&quot;&quot;), with selected range from (paras[0].firstChild, 1) to (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.appendData(&quot;&quot;), with unselected range from (paras[0], 0) to (paras[0].firstChild, 3) 
+FAIL paras[0].firstChild.appendData(&quot;&quot;), with selected range from (paras[0], 0) to (paras[0].firstChild, 3) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb&quot; but got object &quot;Äb̈&quot;
+PASS paras[0].firstChild.appendData(&quot;foo&quot;), with unselected range collapsed at (paras[0], 0) 
+FAIL paras[0].firstChild.appendData(&quot;foo&quot;), with selected range collapsed at (paras[0], 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.appendData(&quot;foo&quot;), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].firstChild.appendData(&quot;foo&quot;), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.appendData(&quot;foo&quot;), with unselected range collapsed at (paras[0], 1) 
+FAIL paras[0].firstChild.appendData(&quot;foo&quot;), with selected range collapsed at (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.appendData(&quot;foo&quot;), with unselected range from (paras[0].firstChild, 1) to (paras[0], 1) 
+FAIL paras[0].firstChild.appendData(&quot;foo&quot;), with selected range from (paras[0].firstChild, 1) to (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.appendData(&quot;foo&quot;), with unselected range from (paras[0], 0) to (paras[0].firstChild, 3) 
+FAIL paras[0].firstChild.appendData(&quot;foo&quot;), with selected range from (paras[0], 0) to (paras[0].firstChild, 3) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb&quot; but got object &quot;Äb̈&quot;
+PASS paras[0].firstChild.deleteData(376, 2), with unselected range on paras[0].firstChild from 0 to 1 
+FAIL paras[0].firstChild.deleteData(376, 2), with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+PASS paras[0].firstChild.deleteData(0, 2), with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.deleteData(0, 2), with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.deleteData(1, 2), with unselected range collapsed at (paras[0].firstChild, 1) 
+FAIL paras[0].firstChild.deleteData(1, 2), with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.deleteData(paras[0].firstChild.length, 2), with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) 
+FAIL paras[0].firstChild.deleteData(paras[0].firstChild.length, 2), with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.deleteData(1, 2), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.deleteData(1, 2), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.deleteData(2, 2), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.deleteData(2, 2), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.deleteData(3, 2), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.deleteData(3, 2), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.deleteData(376, 0), with unselected range on paras[0].firstChild from 0 to 1 
+FAIL paras[0].firstChild.deleteData(376, 0), with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+PASS paras[0].firstChild.deleteData(0, 0), with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.deleteData(0, 0), with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.deleteData(1, 0), with unselected range collapsed at (paras[0].firstChild, 1) 
+FAIL paras[0].firstChild.deleteData(1, 0), with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.deleteData(paras[0].firstChild.length, 0), with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) 
+FAIL paras[0].firstChild.deleteData(paras[0].firstChild.length, 0), with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.deleteData(1, 0), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.deleteData(1, 0), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.deleteData(2, 0), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.deleteData(2, 0), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.deleteData(3, 0), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.deleteData(3, 0), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.deleteData(376, 631), with unselected range on paras[0].firstChild from 0 to 1 
+FAIL paras[0].firstChild.deleteData(376, 631), with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+PASS paras[0].firstChild.deleteData(0, 631), with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.deleteData(0, 631), with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.deleteData(1, 631), with unselected range collapsed at (paras[0].firstChild, 1) 
+FAIL paras[0].firstChild.deleteData(1, 631), with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.deleteData(paras[0].firstChild.length, 631), with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) 
+FAIL paras[0].firstChild.deleteData(paras[0].firstChild.length, 631), with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.deleteData(1, 631), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.deleteData(1, 631), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.deleteData(2, 631), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.deleteData(2, 631), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.deleteData(3, 631), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.deleteData(3, 631), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[1].firstChild.deleteData(376, 2), with unselected range on paras[1].firstChild from 0 to 1 
+FAIL paras[1].firstChild.deleteData(376, 2), with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.deleteData(0, 2), with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.deleteData(0, 2), with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.deleteData(1, 2), with unselected range collapsed at (paras[1].firstChild, 1) 
+FAIL paras[1].firstChild.deleteData(1, 2), with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.deleteData(paras[1].firstChild.length, 2), with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) 
+FAIL paras[1].firstChild.deleteData(paras[1].firstChild.length, 2), with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.deleteData(1, 2), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.deleteData(1, 2), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.deleteData(2, 2), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.deleteData(2, 2), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.deleteData(3, 2), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.deleteData(3, 2), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.deleteData(376, 0), with unselected range on paras[1].firstChild from 0 to 1 
+FAIL paras[1].firstChild.deleteData(376, 0), with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.deleteData(0, 0), with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.deleteData(0, 0), with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.deleteData(1, 0), with unselected range collapsed at (paras[1].firstChild, 1) 
+FAIL paras[1].firstChild.deleteData(1, 0), with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.deleteData(paras[1].firstChild.length, 0), with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) 
+FAIL paras[1].firstChild.deleteData(paras[1].firstChild.length, 0), with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.deleteData(1, 0), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.deleteData(1, 0), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.deleteData(2, 0), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.deleteData(2, 0), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.deleteData(3, 0), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.deleteData(3, 0), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.deleteData(376, 631), with unselected range on paras[1].firstChild from 0 to 1 
+FAIL paras[1].firstChild.deleteData(376, 631), with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.deleteData(0, 631), with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.deleteData(0, 631), with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.deleteData(1, 631), with unselected range collapsed at (paras[1].firstChild, 1) 
+FAIL paras[1].firstChild.deleteData(1, 631), with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.deleteData(paras[1].firstChild.length, 631), with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) 
+FAIL paras[1].firstChild.deleteData(paras[1].firstChild.length, 631), with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.deleteData(1, 631), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.deleteData(1, 631), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.deleteData(2, 631), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.deleteData(2, 631), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.deleteData(3, 631), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.deleteData(3, 631), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS foreignTextNode.deleteData(376, 2), with unselected range on foreignTextNode from 0 to 1 
+FAIL foreignTextNode.deleteData(376, 2), with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.deleteData(0, 2), with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.deleteData(0, 2), with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.deleteData(1, 2), with unselected range collapsed at (foreignTextNode, 1) 
+FAIL foreignTextNode.deleteData(1, 2), with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.deleteData(foreignTextNode.length, 2), with unselected range collapsed at (foreignTextNode, foreignTextNode.length) 
+FAIL foreignTextNode.deleteData(foreignTextNode.length, 2), with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.deleteData(1, 2), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.deleteData(1, 2), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.deleteData(2, 2), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.deleteData(2, 2), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.deleteData(3, 2), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.deleteData(3, 2), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.deleteData(376, 0), with unselected range on foreignTextNode from 0 to 1 
+FAIL foreignTextNode.deleteData(376, 0), with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.deleteData(0, 0), with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.deleteData(0, 0), with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.deleteData(1, 0), with unselected range collapsed at (foreignTextNode, 1) 
+FAIL foreignTextNode.deleteData(1, 0), with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.deleteData(foreignTextNode.length, 0), with unselected range collapsed at (foreignTextNode, foreignTextNode.length) 
+FAIL foreignTextNode.deleteData(foreignTextNode.length, 0), with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.deleteData(1, 0), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.deleteData(1, 0), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.deleteData(2, 0), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.deleteData(2, 0), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.deleteData(3, 0), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.deleteData(3, 0), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.deleteData(376, 631), with unselected range on foreignTextNode from 0 to 1 
+FAIL foreignTextNode.deleteData(376, 631), with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.deleteData(0, 631), with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.deleteData(0, 631), with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.deleteData(1, 631), with unselected range collapsed at (foreignTextNode, 1) 
+FAIL foreignTextNode.deleteData(1, 631), with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.deleteData(foreignTextNode.length, 631), with unselected range collapsed at (foreignTextNode, foreignTextNode.length) 
+FAIL foreignTextNode.deleteData(foreignTextNode.length, 631), with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.deleteData(1, 631), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.deleteData(1, 631), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.deleteData(2, 631), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.deleteData(2, 631), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.deleteData(3, 631), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.deleteData(3, 631), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.deleteData(376, 2), with unselected range on xmlTextNode from 0 to 1 
+FAIL xmlTextNode.deleteData(376, 2), with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.deleteData(0, 2), with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.deleteData(0, 2), with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.deleteData(1, 2), with unselected range collapsed at (xmlTextNode, 1) 
+FAIL xmlTextNode.deleteData(1, 2), with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.deleteData(xmlTextNode.length, 2), with unselected range collapsed at (xmlTextNode, xmlTextNode.length) 
+FAIL xmlTextNode.deleteData(xmlTextNode.length, 2), with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.deleteData(1, 2), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.deleteData(1, 2), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.deleteData(2, 2), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.deleteData(2, 2), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.deleteData(3, 2), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.deleteData(3, 2), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.deleteData(376, 0), with unselected range on xmlTextNode from 0 to 1 
+FAIL xmlTextNode.deleteData(376, 0), with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.deleteData(0, 0), with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.deleteData(0, 0), with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.deleteData(1, 0), with unselected range collapsed at (xmlTextNode, 1) 
+FAIL xmlTextNode.deleteData(1, 0), with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.deleteData(xmlTextNode.length, 0), with unselected range collapsed at (xmlTextNode, xmlTextNode.length) 
+FAIL xmlTextNode.deleteData(xmlTextNode.length, 0), with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.deleteData(1, 0), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.deleteData(1, 0), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.deleteData(2, 0), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.deleteData(2, 0), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.deleteData(3, 0), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.deleteData(3, 0), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.deleteData(376, 631), with unselected range on xmlTextNode from 0 to 1 
+FAIL xmlTextNode.deleteData(376, 631), with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.deleteData(0, 631), with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.deleteData(0, 631), with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.deleteData(1, 631), with unselected range collapsed at (xmlTextNode, 1) 
+FAIL xmlTextNode.deleteData(1, 631), with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.deleteData(xmlTextNode.length, 631), with unselected range collapsed at (xmlTextNode, xmlTextNode.length) 
+FAIL xmlTextNode.deleteData(xmlTextNode.length, 631), with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.deleteData(1, 631), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.deleteData(1, 631), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.deleteData(2, 631), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.deleteData(2, 631), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.deleteData(3, 631), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.deleteData(3, 631), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.deleteData(376, 2), with unselected range on detachedTextNode from 0 to 1 
+FAIL detachedTextNode.deleteData(376, 2), with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.deleteData(0, 2), with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.deleteData(0, 2), with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.deleteData(1, 2), with unselected range collapsed at (detachedTextNode, 1) 
+FAIL detachedTextNode.deleteData(1, 2), with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.deleteData(detachedTextNode.length, 2), with unselected range collapsed at (detachedTextNode, detachedTextNode.length) 
+FAIL detachedTextNode.deleteData(detachedTextNode.length, 2), with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.deleteData(1, 2), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.deleteData(1, 2), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.deleteData(2, 2), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.deleteData(2, 2), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.deleteData(3, 2), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.deleteData(3, 2), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.deleteData(376, 0), with unselected range on detachedTextNode from 0 to 1 
+FAIL detachedTextNode.deleteData(376, 0), with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.deleteData(0, 0), with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.deleteData(0, 0), with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.deleteData(1, 0), with unselected range collapsed at (detachedTextNode, 1) 
+FAIL detachedTextNode.deleteData(1, 0), with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.deleteData(detachedTextNode.length, 0), with unselected range collapsed at (detachedTextNode, detachedTextNode.length) 
+FAIL detachedTextNode.deleteData(detachedTextNode.length, 0), with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.deleteData(1, 0), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.deleteData(1, 0), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.deleteData(2, 0), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.deleteData(2, 0), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.deleteData(3, 0), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.deleteData(3, 0), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.deleteData(376, 631), with unselected range on detachedTextNode from 0 to 1 
+FAIL detachedTextNode.deleteData(376, 631), with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.deleteData(0, 631), with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.deleteData(0, 631), with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.deleteData(1, 631), with unselected range collapsed at (detachedTextNode, 1) 
+FAIL detachedTextNode.deleteData(1, 631), with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.deleteData(detachedTextNode.length, 631), with unselected range collapsed at (detachedTextNode, detachedTextNode.length) 
+FAIL detachedTextNode.deleteData(detachedTextNode.length, 631), with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.deleteData(1, 631), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.deleteData(1, 631), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.deleteData(2, 631), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.deleteData(2, 631), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.deleteData(3, 631), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.deleteData(3, 631), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.deleteData(376, 2), with unselected range on detachedForeignTextNode from 0 to 1 
+FAIL detachedForeignTextNode.deleteData(376, 2), with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.deleteData(0, 2), with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.deleteData(0, 2), with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.deleteData(1, 2), with unselected range collapsed at (detachedForeignTextNode, 1) 
+FAIL detachedForeignTextNode.deleteData(1, 2), with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.deleteData(detachedForeignTextNode.length, 2), with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) 
+FAIL detachedForeignTextNode.deleteData(detachedForeignTextNode.length, 2), with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.deleteData(1, 2), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.deleteData(1, 2), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.deleteData(2, 2), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.deleteData(2, 2), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.deleteData(3, 2), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.deleteData(3, 2), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.deleteData(376, 0), with unselected range on detachedForeignTextNode from 0 to 1 
+FAIL detachedForeignTextNode.deleteData(376, 0), with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.deleteData(0, 0), with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.deleteData(0, 0), with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.deleteData(1, 0), with unselected range collapsed at (detachedForeignTextNode, 1) 
+FAIL detachedForeignTextNode.deleteData(1, 0), with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.deleteData(detachedForeignTextNode.length, 0), with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) 
+FAIL detachedForeignTextNode.deleteData(detachedForeignTextNode.length, 0), with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.deleteData(1, 0), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.deleteData(1, 0), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.deleteData(2, 0), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.deleteData(2, 0), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.deleteData(3, 0), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.deleteData(3, 0), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.deleteData(376, 631), with unselected range on detachedForeignTextNode from 0 to 1 
+FAIL detachedForeignTextNode.deleteData(376, 631), with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.deleteData(0, 631), with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.deleteData(0, 631), with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.deleteData(1, 631), with unselected range collapsed at (detachedForeignTextNode, 1) 
+FAIL detachedForeignTextNode.deleteData(1, 631), with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.deleteData(detachedForeignTextNode.length, 631), with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) 
+FAIL detachedForeignTextNode.deleteData(detachedForeignTextNode.length, 631), with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.deleteData(1, 631), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.deleteData(1, 631), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.deleteData(2, 631), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.deleteData(2, 631), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.deleteData(3, 631), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.deleteData(3, 631), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.deleteData(376, 2), with unselected range on detachedXmlTextNode from 0 to 1 
+FAIL detachedXmlTextNode.deleteData(376, 2), with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.deleteData(0, 2), with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.deleteData(0, 2), with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.deleteData(1, 2), with unselected range collapsed at (detachedXmlTextNode, 1) 
+FAIL detachedXmlTextNode.deleteData(1, 2), with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.deleteData(detachedXmlTextNode.length, 2), with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) 
+FAIL detachedXmlTextNode.deleteData(detachedXmlTextNode.length, 2), with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.deleteData(1, 2), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.deleteData(1, 2), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.deleteData(2, 2), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.deleteData(2, 2), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.deleteData(3, 2), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.deleteData(3, 2), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.deleteData(376, 0), with unselected range on detachedXmlTextNode from 0 to 1 
+FAIL detachedXmlTextNode.deleteData(376, 0), with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.deleteData(0, 0), with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.deleteData(0, 0), with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.deleteData(1, 0), with unselected range collapsed at (detachedXmlTextNode, 1) 
+FAIL detachedXmlTextNode.deleteData(1, 0), with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.deleteData(detachedXmlTextNode.length, 0), with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) 
+FAIL detachedXmlTextNode.deleteData(detachedXmlTextNode.length, 0), with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.deleteData(1, 0), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.deleteData(1, 0), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.deleteData(2, 0), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.deleteData(2, 0), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.deleteData(3, 0), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.deleteData(3, 0), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.deleteData(376, 631), with unselected range on detachedXmlTextNode from 0 to 1 
+FAIL detachedXmlTextNode.deleteData(376, 631), with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.deleteData(0, 631), with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.deleteData(0, 631), with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.deleteData(1, 631), with unselected range collapsed at (detachedXmlTextNode, 1) 
+FAIL detachedXmlTextNode.deleteData(1, 631), with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.deleteData(detachedXmlTextNode.length, 631), with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) 
+FAIL detachedXmlTextNode.deleteData(detachedXmlTextNode.length, 631), with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.deleteData(1, 631), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.deleteData(1, 631), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.deleteData(2, 631), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.deleteData(2, 631), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.deleteData(3, 631), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.deleteData(3, 631), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS comment.deleteData(376, 2), with unselected range on comment from 0 to 1 
+FAIL comment.deleteData(376, 2), with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.deleteData(0, 2), with unselected range collapsed at (comment, 0) 
+FAIL comment.deleteData(0, 2), with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.deleteData(1, 2), with unselected range collapsed at (comment, 1) 
+FAIL comment.deleteData(1, 2), with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.deleteData(comment.length, 2), with unselected range collapsed at (comment, comment.length) 
+FAIL comment.deleteData(comment.length, 2), with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.deleteData(1, 2), with unselected range on comment from 1 to 3 
+FAIL comment.deleteData(1, 2), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.deleteData(2, 2), with unselected range on comment from 1 to 3 
+FAIL comment.deleteData(2, 2), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.deleteData(3, 2), with unselected range on comment from 1 to 3 
+FAIL comment.deleteData(3, 2), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.deleteData(376, 0), with unselected range on comment from 0 to 1 
+FAIL comment.deleteData(376, 0), with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.deleteData(0, 0), with unselected range collapsed at (comment, 0) 
+FAIL comment.deleteData(0, 0), with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.deleteData(1, 0), with unselected range collapsed at (comment, 1) 
+FAIL comment.deleteData(1, 0), with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.deleteData(comment.length, 0), with unselected range collapsed at (comment, comment.length) 
+FAIL comment.deleteData(comment.length, 0), with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.deleteData(1, 0), with unselected range on comment from 1 to 3 
+FAIL comment.deleteData(1, 0), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.deleteData(2, 0), with unselected range on comment from 1 to 3 
+FAIL comment.deleteData(2, 0), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.deleteData(3, 0), with unselected range on comment from 1 to 3 
+FAIL comment.deleteData(3, 0), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.deleteData(376, 631), with unselected range on comment from 0 to 1 
+FAIL comment.deleteData(376, 631), with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.deleteData(0, 631), with unselected range collapsed at (comment, 0) 
+FAIL comment.deleteData(0, 631), with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.deleteData(1, 631), with unselected range collapsed at (comment, 1) 
+FAIL comment.deleteData(1, 631), with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.deleteData(comment.length, 631), with unselected range collapsed at (comment, comment.length) 
+FAIL comment.deleteData(comment.length, 631), with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.deleteData(1, 631), with unselected range on comment from 1 to 3 
+FAIL comment.deleteData(1, 631), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.deleteData(2, 631), with unselected range on comment from 1 to 3 
+FAIL comment.deleteData(2, 631), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.deleteData(3, 631), with unselected range on comment from 1 to 3 
+FAIL comment.deleteData(3, 631), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS foreignComment.deleteData(376, 2), with unselected range on foreignComment from 0 to 1 
+FAIL foreignComment.deleteData(376, 2), with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.deleteData(0, 2), with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.deleteData(0, 2), with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.deleteData(1, 2), with unselected range collapsed at (foreignComment, 1) 
+FAIL foreignComment.deleteData(1, 2), with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.deleteData(foreignComment.length, 2), with unselected range collapsed at (foreignComment, foreignComment.length) 
+FAIL foreignComment.deleteData(foreignComment.length, 2), with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.deleteData(1, 2), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.deleteData(1, 2), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.deleteData(2, 2), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.deleteData(2, 2), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.deleteData(3, 2), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.deleteData(3, 2), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.deleteData(376, 0), with unselected range on foreignComment from 0 to 1 
+FAIL foreignComment.deleteData(376, 0), with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.deleteData(0, 0), with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.deleteData(0, 0), with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.deleteData(1, 0), with unselected range collapsed at (foreignComment, 1) 
+FAIL foreignComment.deleteData(1, 0), with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.deleteData(foreignComment.length, 0), with unselected range collapsed at (foreignComment, foreignComment.length) 
+FAIL foreignComment.deleteData(foreignComment.length, 0), with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.deleteData(1, 0), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.deleteData(1, 0), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.deleteData(2, 0), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.deleteData(2, 0), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.deleteData(3, 0), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.deleteData(3, 0), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.deleteData(376, 631), with unselected range on foreignComment from 0 to 1 
+FAIL foreignComment.deleteData(376, 631), with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.deleteData(0, 631), with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.deleteData(0, 631), with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.deleteData(1, 631), with unselected range collapsed at (foreignComment, 1) 
+FAIL foreignComment.deleteData(1, 631), with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.deleteData(foreignComment.length, 631), with unselected range collapsed at (foreignComment, foreignComment.length) 
+FAIL foreignComment.deleteData(foreignComment.length, 631), with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.deleteData(1, 631), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.deleteData(1, 631), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.deleteData(2, 631), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.deleteData(2, 631), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.deleteData(3, 631), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.deleteData(3, 631), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.deleteData(376, 2), with unselected range on xmlComment from 0 to 1 
+FAIL xmlComment.deleteData(376, 2), with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.deleteData(0, 2), with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.deleteData(0, 2), with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.deleteData(1, 2), with unselected range collapsed at (xmlComment, 1) 
+FAIL xmlComment.deleteData(1, 2), with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.deleteData(xmlComment.length, 2), with unselected range collapsed at (xmlComment, xmlComment.length) 
+FAIL xmlComment.deleteData(xmlComment.length, 2), with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.deleteData(1, 2), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.deleteData(1, 2), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.deleteData(2, 2), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.deleteData(2, 2), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.deleteData(3, 2), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.deleteData(3, 2), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.deleteData(376, 0), with unselected range on xmlComment from 0 to 1 
+FAIL xmlComment.deleteData(376, 0), with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.deleteData(0, 0), with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.deleteData(0, 0), with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.deleteData(1, 0), with unselected range collapsed at (xmlComment, 1) 
+FAIL xmlComment.deleteData(1, 0), with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.deleteData(xmlComment.length, 0), with unselected range collapsed at (xmlComment, xmlComment.length) 
+FAIL xmlComment.deleteData(xmlComment.length, 0), with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.deleteData(1, 0), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.deleteData(1, 0), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.deleteData(2, 0), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.deleteData(2, 0), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.deleteData(3, 0), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.deleteData(3, 0), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.deleteData(376, 631), with unselected range on xmlComment from 0 to 1 
+FAIL xmlComment.deleteData(376, 631), with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.deleteData(0, 631), with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.deleteData(0, 631), with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.deleteData(1, 631), with unselected range collapsed at (xmlComment, 1) 
+FAIL xmlComment.deleteData(1, 631), with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.deleteData(xmlComment.length, 631), with unselected range collapsed at (xmlComment, xmlComment.length) 
+FAIL xmlComment.deleteData(xmlComment.length, 631), with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.deleteData(1, 631), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.deleteData(1, 631), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.deleteData(2, 631), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.deleteData(2, 631), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.deleteData(3, 631), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.deleteData(3, 631), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.deleteData(376, 2), with unselected range on detachedComment from 0 to 1 
+FAIL detachedComment.deleteData(376, 2), with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.deleteData(0, 2), with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.deleteData(0, 2), with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.deleteData(1, 2), with unselected range collapsed at (detachedComment, 1) 
+FAIL detachedComment.deleteData(1, 2), with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.deleteData(detachedComment.length, 2), with unselected range collapsed at (detachedComment, detachedComment.length) 
+FAIL detachedComment.deleteData(detachedComment.length, 2), with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.deleteData(1, 2), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.deleteData(1, 2), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.deleteData(2, 2), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.deleteData(2, 2), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.deleteData(3, 2), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.deleteData(3, 2), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.deleteData(376, 0), with unselected range on detachedComment from 0 to 1 
+FAIL detachedComment.deleteData(376, 0), with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.deleteData(0, 0), with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.deleteData(0, 0), with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.deleteData(1, 0), with unselected range collapsed at (detachedComment, 1) 
+FAIL detachedComment.deleteData(1, 0), with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.deleteData(detachedComment.length, 0), with unselected range collapsed at (detachedComment, detachedComment.length) 
+FAIL detachedComment.deleteData(detachedComment.length, 0), with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.deleteData(1, 0), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.deleteData(1, 0), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.deleteData(2, 0), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.deleteData(2, 0), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.deleteData(3, 0), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.deleteData(3, 0), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.deleteData(376, 631), with unselected range on detachedComment from 0 to 1 
+FAIL detachedComment.deleteData(376, 631), with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.deleteData(0, 631), with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.deleteData(0, 631), with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.deleteData(1, 631), with unselected range collapsed at (detachedComment, 1) 
+FAIL detachedComment.deleteData(1, 631), with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.deleteData(detachedComment.length, 631), with unselected range collapsed at (detachedComment, detachedComment.length) 
+FAIL detachedComment.deleteData(detachedComment.length, 631), with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.deleteData(1, 631), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.deleteData(1, 631), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.deleteData(2, 631), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.deleteData(2, 631), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.deleteData(3, 631), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.deleteData(3, 631), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.deleteData(376, 2), with unselected range on detachedForeignComment from 0 to 1 
+FAIL detachedForeignComment.deleteData(376, 2), with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.deleteData(0, 2), with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.deleteData(0, 2), with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.deleteData(1, 2), with unselected range collapsed at (detachedForeignComment, 1) 
+FAIL detachedForeignComment.deleteData(1, 2), with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.deleteData(detachedForeignComment.length, 2), with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) 
+FAIL detachedForeignComment.deleteData(detachedForeignComment.length, 2), with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.deleteData(1, 2), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.deleteData(1, 2), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.deleteData(2, 2), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.deleteData(2, 2), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.deleteData(3, 2), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.deleteData(3, 2), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.deleteData(376, 0), with unselected range on detachedForeignComment from 0 to 1 
+FAIL detachedForeignComment.deleteData(376, 0), with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.deleteData(0, 0), with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.deleteData(0, 0), with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.deleteData(1, 0), with unselected range collapsed at (detachedForeignComment, 1) 
+FAIL detachedForeignComment.deleteData(1, 0), with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.deleteData(detachedForeignComment.length, 0), with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) 
+FAIL detachedForeignComment.deleteData(detachedForeignComment.length, 0), with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.deleteData(1, 0), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.deleteData(1, 0), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.deleteData(2, 0), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.deleteData(2, 0), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.deleteData(3, 0), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.deleteData(3, 0), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.deleteData(376, 631), with unselected range on detachedForeignComment from 0 to 1 
+FAIL detachedForeignComment.deleteData(376, 631), with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.deleteData(0, 631), with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.deleteData(0, 631), with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.deleteData(1, 631), with unselected range collapsed at (detachedForeignComment, 1) 
+FAIL detachedForeignComment.deleteData(1, 631), with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.deleteData(detachedForeignComment.length, 631), with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) 
+FAIL detachedForeignComment.deleteData(detachedForeignComment.length, 631), with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.deleteData(1, 631), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.deleteData(1, 631), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.deleteData(2, 631), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.deleteData(2, 631), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.deleteData(3, 631), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.deleteData(3, 631), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.deleteData(376, 2), with unselected range on detachedXmlComment from 0 to 1 
+FAIL detachedXmlComment.deleteData(376, 2), with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.deleteData(0, 2), with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.deleteData(0, 2), with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.deleteData(1, 2), with unselected range collapsed at (detachedXmlComment, 1) 
+FAIL detachedXmlComment.deleteData(1, 2), with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.deleteData(detachedXmlComment.length, 2), with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) 
+FAIL detachedXmlComment.deleteData(detachedXmlComment.length, 2), with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.deleteData(1, 2), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.deleteData(1, 2), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.deleteData(2, 2), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.deleteData(2, 2), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.deleteData(3, 2), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.deleteData(3, 2), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.deleteData(376, 0), with unselected range on detachedXmlComment from 0 to 1 
+FAIL detachedXmlComment.deleteData(376, 0), with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.deleteData(0, 0), with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.deleteData(0, 0), with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.deleteData(1, 0), with unselected range collapsed at (detachedXmlComment, 1) 
+FAIL detachedXmlComment.deleteData(1, 0), with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.deleteData(detachedXmlComment.length, 0), with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) 
+FAIL detachedXmlComment.deleteData(detachedXmlComment.length, 0), with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.deleteData(1, 0), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.deleteData(1, 0), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.deleteData(2, 0), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.deleteData(2, 0), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.deleteData(3, 0), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.deleteData(3, 0), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.deleteData(376, 631), with unselected range on detachedXmlComment from 0 to 1 
+FAIL detachedXmlComment.deleteData(376, 631), with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.deleteData(0, 631), with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.deleteData(0, 631), with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.deleteData(1, 631), with unselected range collapsed at (detachedXmlComment, 1) 
+FAIL detachedXmlComment.deleteData(1, 631), with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.deleteData(detachedXmlComment.length, 631), with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) 
+FAIL detachedXmlComment.deleteData(detachedXmlComment.length, 631), with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.deleteData(1, 631), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.deleteData(1, 631), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.deleteData(2, 631), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.deleteData(2, 631), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.deleteData(3, 631), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.deleteData(3, 631), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS paras[0].firstChild.deleteData(1, 2), with unselected range collapsed at (paras[0], 0) 
+FAIL paras[0].firstChild.deleteData(1, 2), with selected range collapsed at (paras[0], 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.deleteData(1, 2), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].firstChild.deleteData(1, 2), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.deleteData(1, 2), with unselected range collapsed at (paras[0], 1) 
+FAIL paras[0].firstChild.deleteData(1, 2), with selected range collapsed at (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.deleteData(1, 2), with unselected range from (paras[0].firstChild, 1) to (paras[0], 1) 
+FAIL paras[0].firstChild.deleteData(1, 2), with selected range from (paras[0].firstChild, 1) to (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.deleteData(2, 2), with unselected range from (paras[0].firstChild, 1) to (paras[0], 1) 
+FAIL paras[0].firstChild.deleteData(2, 2), with selected range from (paras[0].firstChild, 1) to (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.deleteData(3, 2), with unselected range from (paras[0].firstChild, 1) to (paras[0], 1) 
+FAIL paras[0].firstChild.deleteData(3, 2), with selected range from (paras[0].firstChild, 1) to (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.deleteData(1, 2), with unselected range from (paras[0], 0) to (paras[0].firstChild, 3) 
+FAIL paras[0].firstChild.deleteData(1, 2), with selected range from (paras[0], 0) to (paras[0].firstChild, 3) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb&quot; but got object &quot;Äb̈&quot;
+PASS paras[0].firstChild.deleteData(2, 2), with unselected range from (paras[0], 0) to (paras[0].firstChild, 3) 
+FAIL paras[0].firstChild.deleteData(2, 2), with selected range from (paras[0], 0) to (paras[0].firstChild, 3) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb&quot; but got object &quot;Äb̈&quot;
+PASS paras[0].firstChild.deleteData(3, 2), with unselected range from (paras[0], 0) to (paras[0].firstChild, 3) 
+FAIL paras[0].firstChild.deleteData(3, 2), with selected range from (paras[0], 0) to (paras[0].firstChild, 3) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb&quot; but got object &quot;Äb̈&quot;
+PASS paras[0].firstChild.replaceData(376, 0, &quot;foo&quot;), with unselected range on paras[0].firstChild from 0 to 1 
+FAIL paras[0].firstChild.replaceData(376, 0, &quot;foo&quot;), with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+PASS paras[0].firstChild.replaceData(0, 0, &quot;foo&quot;), with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.replaceData(0, 0, &quot;foo&quot;), with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.replaceData(1, 0, &quot;foo&quot;), with unselected range collapsed at (paras[0].firstChild, 1) 
+FAIL paras[0].firstChild.replaceData(1, 0, &quot;foo&quot;), with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.replaceData(paras[0].firstChild.length, 0, &quot;foo&quot;), with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) 
+FAIL paras[0].firstChild.replaceData(paras[0].firstChild.length, 0, &quot;foo&quot;), with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.replaceData(1, 0, &quot;foo&quot;), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.replaceData(1, 0, &quot;foo&quot;), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.replaceData(2, 0, &quot;foo&quot;), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.replaceData(2, 0, &quot;foo&quot;), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.replaceData(3, 0, &quot;foo&quot;), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.replaceData(3, 0, &quot;foo&quot;), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.replaceData(376, 0, &quot;&quot;), with unselected range on paras[0].firstChild from 0 to 1 
+FAIL paras[0].firstChild.replaceData(376, 0, &quot;&quot;), with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+PASS paras[0].firstChild.replaceData(0, 0, &quot;&quot;), with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.replaceData(0, 0, &quot;&quot;), with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.replaceData(1, 0, &quot;&quot;), with unselected range collapsed at (paras[0].firstChild, 1) 
+FAIL paras[0].firstChild.replaceData(1, 0, &quot;&quot;), with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.replaceData(paras[0].firstChild.length, 0, &quot;&quot;), with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) 
+FAIL paras[0].firstChild.replaceData(paras[0].firstChild.length, 0, &quot;&quot;), with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.replaceData(1, 0, &quot;&quot;), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.replaceData(1, 0, &quot;&quot;), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.replaceData(2, 0, &quot;&quot;), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.replaceData(2, 0, &quot;&quot;), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.replaceData(3, 0, &quot;&quot;), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.replaceData(3, 0, &quot;&quot;), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.replaceData(376, 1, &quot;foo&quot;), with unselected range on paras[0].firstChild from 0 to 1 
+FAIL paras[0].firstChild.replaceData(376, 1, &quot;foo&quot;), with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+PASS paras[0].firstChild.replaceData(0, 1, &quot;foo&quot;), with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.replaceData(0, 1, &quot;foo&quot;), with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.replaceData(1, 1, &quot;foo&quot;), with unselected range collapsed at (paras[0].firstChild, 1) 
+FAIL paras[0].firstChild.replaceData(1, 1, &quot;foo&quot;), with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.replaceData(paras[0].firstChild.length, 1, &quot;foo&quot;), with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) 
+FAIL paras[0].firstChild.replaceData(paras[0].firstChild.length, 1, &quot;foo&quot;), with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.replaceData(1, 1, &quot;foo&quot;), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.replaceData(1, 1, &quot;foo&quot;), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.replaceData(2, 1, &quot;foo&quot;), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.replaceData(2, 1, &quot;foo&quot;), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.replaceData(3, 1, &quot;foo&quot;), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.replaceData(3, 1, &quot;foo&quot;), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.replaceData(376, 1, &quot;&quot;), with unselected range on paras[0].firstChild from 0 to 1 
+FAIL paras[0].firstChild.replaceData(376, 1, &quot;&quot;), with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+PASS paras[0].firstChild.replaceData(0, 1, &quot;&quot;), with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.replaceData(0, 1, &quot;&quot;), with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.replaceData(1, 1, &quot;&quot;), with unselected range collapsed at (paras[0].firstChild, 1) 
+FAIL paras[0].firstChild.replaceData(1, 1, &quot;&quot;), with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.replaceData(paras[0].firstChild.length, 1, &quot;&quot;), with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) 
+FAIL paras[0].firstChild.replaceData(paras[0].firstChild.length, 1, &quot;&quot;), with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.replaceData(1, 1, &quot;&quot;), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.replaceData(1, 1, &quot;&quot;), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.replaceData(2, 1, &quot;&quot;), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.replaceData(2, 1, &quot;&quot;), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.replaceData(3, 1, &quot;&quot;), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.replaceData(3, 1, &quot;&quot;), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.replaceData(376, 47, &quot;foo&quot;), with unselected range on paras[0].firstChild from 0 to 1 
+FAIL paras[0].firstChild.replaceData(376, 47, &quot;foo&quot;), with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+PASS paras[0].firstChild.replaceData(0, 47, &quot;foo&quot;), with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.replaceData(0, 47, &quot;foo&quot;), with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.replaceData(1, 47, &quot;foo&quot;), with unselected range collapsed at (paras[0].firstChild, 1) 
+FAIL paras[0].firstChild.replaceData(1, 47, &quot;foo&quot;), with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.replaceData(paras[0].firstChild.length, 47, &quot;foo&quot;), with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) 
+FAIL paras[0].firstChild.replaceData(paras[0].firstChild.length, 47, &quot;foo&quot;), with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.replaceData(1, 47, &quot;foo&quot;), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.replaceData(1, 47, &quot;foo&quot;), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.replaceData(2, 47, &quot;foo&quot;), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.replaceData(2, 47, &quot;foo&quot;), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.replaceData(3, 47, &quot;foo&quot;), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.replaceData(3, 47, &quot;foo&quot;), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.replaceData(376, 47, &quot;&quot;), with unselected range on paras[0].firstChild from 0 to 1 
+FAIL paras[0].firstChild.replaceData(376, 47, &quot;&quot;), with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+PASS paras[0].firstChild.replaceData(0, 47, &quot;&quot;), with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.replaceData(0, 47, &quot;&quot;), with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.replaceData(1, 47, &quot;&quot;), with unselected range collapsed at (paras[0].firstChild, 1) 
+FAIL paras[0].firstChild.replaceData(1, 47, &quot;&quot;), with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.replaceData(paras[0].firstChild.length, 47, &quot;&quot;), with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) 
+FAIL paras[0].firstChild.replaceData(paras[0].firstChild.length, 47, &quot;&quot;), with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.replaceData(1, 47, &quot;&quot;), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.replaceData(1, 47, &quot;&quot;), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.replaceData(2, 47, &quot;&quot;), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.replaceData(2, 47, &quot;&quot;), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[0].firstChild.replaceData(3, 47, &quot;&quot;), with unselected range on paras[0].firstChild from 1 to 3 
+FAIL paras[0].firstChild.replaceData(3, 47, &quot;&quot;), with selected range on paras[0].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b&quot; but got object &quot;b̈&quot;
+PASS paras[1].firstChild.replaceData(376, 0, &quot;foo&quot;), with unselected range on paras[1].firstChild from 0 to 1 
+FAIL paras[1].firstChild.replaceData(376, 0, &quot;foo&quot;), with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(0, 0, &quot;foo&quot;), with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.replaceData(0, 0, &quot;foo&quot;), with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(1, 0, &quot;foo&quot;), with unselected range collapsed at (paras[1].firstChild, 1) 
+FAIL paras[1].firstChild.replaceData(1, 0, &quot;foo&quot;), with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(paras[1].firstChild.length, 0, &quot;foo&quot;), with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) 
+FAIL paras[1].firstChild.replaceData(paras[1].firstChild.length, 0, &quot;foo&quot;), with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(1, 0, &quot;foo&quot;), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.replaceData(1, 0, &quot;foo&quot;), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(2, 0, &quot;foo&quot;), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.replaceData(2, 0, &quot;foo&quot;), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(3, 0, &quot;foo&quot;), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.replaceData(3, 0, &quot;foo&quot;), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(376, 0, &quot;&quot;), with unselected range on paras[1].firstChild from 0 to 1 
+FAIL paras[1].firstChild.replaceData(376, 0, &quot;&quot;), with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(0, 0, &quot;&quot;), with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.replaceData(0, 0, &quot;&quot;), with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(1, 0, &quot;&quot;), with unselected range collapsed at (paras[1].firstChild, 1) 
+FAIL paras[1].firstChild.replaceData(1, 0, &quot;&quot;), with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(paras[1].firstChild.length, 0, &quot;&quot;), with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) 
+FAIL paras[1].firstChild.replaceData(paras[1].firstChild.length, 0, &quot;&quot;), with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(1, 0, &quot;&quot;), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.replaceData(1, 0, &quot;&quot;), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(2, 0, &quot;&quot;), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.replaceData(2, 0, &quot;&quot;), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(3, 0, &quot;&quot;), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.replaceData(3, 0, &quot;&quot;), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(376, 1, &quot;foo&quot;), with unselected range on paras[1].firstChild from 0 to 1 
+FAIL paras[1].firstChild.replaceData(376, 1, &quot;foo&quot;), with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(0, 1, &quot;foo&quot;), with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.replaceData(0, 1, &quot;foo&quot;), with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(1, 1, &quot;foo&quot;), with unselected range collapsed at (paras[1].firstChild, 1) 
+FAIL paras[1].firstChild.replaceData(1, 1, &quot;foo&quot;), with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(paras[1].firstChild.length, 1, &quot;foo&quot;), with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) 
+FAIL paras[1].firstChild.replaceData(paras[1].firstChild.length, 1, &quot;foo&quot;), with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(1, 1, &quot;foo&quot;), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.replaceData(1, 1, &quot;foo&quot;), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(2, 1, &quot;foo&quot;), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.replaceData(2, 1, &quot;foo&quot;), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(3, 1, &quot;foo&quot;), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.replaceData(3, 1, &quot;foo&quot;), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(376, 1, &quot;&quot;), with unselected range on paras[1].firstChild from 0 to 1 
+FAIL paras[1].firstChild.replaceData(376, 1, &quot;&quot;), with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(0, 1, &quot;&quot;), with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.replaceData(0, 1, &quot;&quot;), with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(1, 1, &quot;&quot;), with unselected range collapsed at (paras[1].firstChild, 1) 
+FAIL paras[1].firstChild.replaceData(1, 1, &quot;&quot;), with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(paras[1].firstChild.length, 1, &quot;&quot;), with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) 
+FAIL paras[1].firstChild.replaceData(paras[1].firstChild.length, 1, &quot;&quot;), with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(1, 1, &quot;&quot;), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.replaceData(1, 1, &quot;&quot;), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(2, 1, &quot;&quot;), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.replaceData(2, 1, &quot;&quot;), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(3, 1, &quot;&quot;), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.replaceData(3, 1, &quot;&quot;), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(376, 47, &quot;foo&quot;), with unselected range on paras[1].firstChild from 0 to 1 
+FAIL paras[1].firstChild.replaceData(376, 47, &quot;foo&quot;), with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(0, 47, &quot;foo&quot;), with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.replaceData(0, 47, &quot;foo&quot;), with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(1, 47, &quot;foo&quot;), with unselected range collapsed at (paras[1].firstChild, 1) 
+FAIL paras[1].firstChild.replaceData(1, 47, &quot;foo&quot;), with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(paras[1].firstChild.length, 47, &quot;foo&quot;), with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) 
+FAIL paras[1].firstChild.replaceData(paras[1].firstChild.length, 47, &quot;foo&quot;), with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(1, 47, &quot;foo&quot;), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.replaceData(1, 47, &quot;foo&quot;), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(2, 47, &quot;foo&quot;), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.replaceData(2, 47, &quot;foo&quot;), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(3, 47, &quot;foo&quot;), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.replaceData(3, 47, &quot;foo&quot;), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(376, 47, &quot;&quot;), with unselected range on paras[1].firstChild from 0 to 1 
+FAIL paras[1].firstChild.replaceData(376, 47, &quot;&quot;), with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(0, 47, &quot;&quot;), with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.replaceData(0, 47, &quot;&quot;), with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(1, 47, &quot;&quot;), with unselected range collapsed at (paras[1].firstChild, 1) 
+FAIL paras[1].firstChild.replaceData(1, 47, &quot;&quot;), with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(paras[1].firstChild.length, 47, &quot;&quot;), with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) 
+FAIL paras[1].firstChild.replaceData(paras[1].firstChild.length, 47, &quot;&quot;), with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(1, 47, &quot;&quot;), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.replaceData(1, 47, &quot;&quot;), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(2, 47, &quot;&quot;), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.replaceData(2, 47, &quot;&quot;), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.replaceData(3, 47, &quot;&quot;), with unselected range on paras[1].firstChild from 1 to 3 
+FAIL paras[1].firstChild.replaceData(3, 47, &quot;&quot;), with selected range on paras[1].firstChild from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jk&quot; but got object &quot;&quot;
+PASS foreignTextNode.replaceData(376, 0, &quot;foo&quot;), with unselected range on foreignTextNode from 0 to 1 
+FAIL foreignTextNode.replaceData(376, 0, &quot;foo&quot;), with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(0, 0, &quot;foo&quot;), with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.replaceData(0, 0, &quot;foo&quot;), with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(1, 0, &quot;foo&quot;), with unselected range collapsed at (foreignTextNode, 1) 
+FAIL foreignTextNode.replaceData(1, 0, &quot;foo&quot;), with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(foreignTextNode.length, 0, &quot;foo&quot;), with unselected range collapsed at (foreignTextNode, foreignTextNode.length) 
+FAIL foreignTextNode.replaceData(foreignTextNode.length, 0, &quot;foo&quot;), with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(1, 0, &quot;foo&quot;), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.replaceData(1, 0, &quot;foo&quot;), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(2, 0, &quot;foo&quot;), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.replaceData(2, 0, &quot;foo&quot;), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(3, 0, &quot;foo&quot;), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.replaceData(3, 0, &quot;foo&quot;), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(376, 0, &quot;&quot;), with unselected range on foreignTextNode from 0 to 1 
+FAIL foreignTextNode.replaceData(376, 0, &quot;&quot;), with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(0, 0, &quot;&quot;), with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.replaceData(0, 0, &quot;&quot;), with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(1, 0, &quot;&quot;), with unselected range collapsed at (foreignTextNode, 1) 
+FAIL foreignTextNode.replaceData(1, 0, &quot;&quot;), with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(foreignTextNode.length, 0, &quot;&quot;), with unselected range collapsed at (foreignTextNode, foreignTextNode.length) 
+FAIL foreignTextNode.replaceData(foreignTextNode.length, 0, &quot;&quot;), with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(1, 0, &quot;&quot;), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.replaceData(1, 0, &quot;&quot;), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(2, 0, &quot;&quot;), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.replaceData(2, 0, &quot;&quot;), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(3, 0, &quot;&quot;), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.replaceData(3, 0, &quot;&quot;), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(376, 1, &quot;foo&quot;), with unselected range on foreignTextNode from 0 to 1 
+FAIL foreignTextNode.replaceData(376, 1, &quot;foo&quot;), with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(0, 1, &quot;foo&quot;), with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.replaceData(0, 1, &quot;foo&quot;), with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(1, 1, &quot;foo&quot;), with unselected range collapsed at (foreignTextNode, 1) 
+FAIL foreignTextNode.replaceData(1, 1, &quot;foo&quot;), with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(foreignTextNode.length, 1, &quot;foo&quot;), with unselected range collapsed at (foreignTextNode, foreignTextNode.length) 
+FAIL foreignTextNode.replaceData(foreignTextNode.length, 1, &quot;foo&quot;), with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(1, 1, &quot;foo&quot;), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.replaceData(1, 1, &quot;foo&quot;), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(2, 1, &quot;foo&quot;), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.replaceData(2, 1, &quot;foo&quot;), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(3, 1, &quot;foo&quot;), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.replaceData(3, 1, &quot;foo&quot;), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(376, 1, &quot;&quot;), with unselected range on foreignTextNode from 0 to 1 
+FAIL foreignTextNode.replaceData(376, 1, &quot;&quot;), with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(0, 1, &quot;&quot;), with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.replaceData(0, 1, &quot;&quot;), with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(1, 1, &quot;&quot;), with unselected range collapsed at (foreignTextNode, 1) 
+FAIL foreignTextNode.replaceData(1, 1, &quot;&quot;), with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(foreignTextNode.length, 1, &quot;&quot;), with unselected range collapsed at (foreignTextNode, foreignTextNode.length) 
+FAIL foreignTextNode.replaceData(foreignTextNode.length, 1, &quot;&quot;), with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(1, 1, &quot;&quot;), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.replaceData(1, 1, &quot;&quot;), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(2, 1, &quot;&quot;), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.replaceData(2, 1, &quot;&quot;), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(3, 1, &quot;&quot;), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.replaceData(3, 1, &quot;&quot;), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(376, 47, &quot;foo&quot;), with unselected range on foreignTextNode from 0 to 1 
+FAIL foreignTextNode.replaceData(376, 47, &quot;foo&quot;), with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(0, 47, &quot;foo&quot;), with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.replaceData(0, 47, &quot;foo&quot;), with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(1, 47, &quot;foo&quot;), with unselected range collapsed at (foreignTextNode, 1) 
+FAIL foreignTextNode.replaceData(1, 47, &quot;foo&quot;), with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(foreignTextNode.length, 47, &quot;foo&quot;), with unselected range collapsed at (foreignTextNode, foreignTextNode.length) 
+FAIL foreignTextNode.replaceData(foreignTextNode.length, 47, &quot;foo&quot;), with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(1, 47, &quot;foo&quot;), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.replaceData(1, 47, &quot;foo&quot;), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(2, 47, &quot;foo&quot;), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.replaceData(2, 47, &quot;foo&quot;), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(3, 47, &quot;foo&quot;), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.replaceData(3, 47, &quot;foo&quot;), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(376, 47, &quot;&quot;), with unselected range on foreignTextNode from 0 to 1 
+FAIL foreignTextNode.replaceData(376, 47, &quot;&quot;), with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(0, 47, &quot;&quot;), with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.replaceData(0, 47, &quot;&quot;), with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(1, 47, &quot;&quot;), with unselected range collapsed at (foreignTextNode, 1) 
+FAIL foreignTextNode.replaceData(1, 47, &quot;&quot;), with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(foreignTextNode.length, 47, &quot;&quot;), with unselected range collapsed at (foreignTextNode, foreignTextNode.length) 
+FAIL foreignTextNode.replaceData(foreignTextNode.length, 47, &quot;&quot;), with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(1, 47, &quot;&quot;), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.replaceData(1, 47, &quot;&quot;), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(2, 47, &quot;&quot;), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.replaceData(2, 47, &quot;&quot;), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.replaceData(3, 47, &quot;&quot;), with unselected range on foreignTextNode from 1 to 3 
+FAIL foreignTextNode.replaceData(3, 47, &quot;&quot;), with selected range on foreignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(376, 0, &quot;foo&quot;), with unselected range on xmlTextNode from 0 to 1 
+FAIL xmlTextNode.replaceData(376, 0, &quot;foo&quot;), with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(0, 0, &quot;foo&quot;), with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.replaceData(0, 0, &quot;foo&quot;), with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(1, 0, &quot;foo&quot;), with unselected range collapsed at (xmlTextNode, 1) 
+FAIL xmlTextNode.replaceData(1, 0, &quot;foo&quot;), with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(xmlTextNode.length, 0, &quot;foo&quot;), with unselected range collapsed at (xmlTextNode, xmlTextNode.length) 
+FAIL xmlTextNode.replaceData(xmlTextNode.length, 0, &quot;foo&quot;), with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(1, 0, &quot;foo&quot;), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.replaceData(1, 0, &quot;foo&quot;), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(2, 0, &quot;foo&quot;), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.replaceData(2, 0, &quot;foo&quot;), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(3, 0, &quot;foo&quot;), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.replaceData(3, 0, &quot;foo&quot;), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(376, 0, &quot;&quot;), with unselected range on xmlTextNode from 0 to 1 
+FAIL xmlTextNode.replaceData(376, 0, &quot;&quot;), with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(0, 0, &quot;&quot;), with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.replaceData(0, 0, &quot;&quot;), with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(1, 0, &quot;&quot;), with unselected range collapsed at (xmlTextNode, 1) 
+FAIL xmlTextNode.replaceData(1, 0, &quot;&quot;), with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(xmlTextNode.length, 0, &quot;&quot;), with unselected range collapsed at (xmlTextNode, xmlTextNode.length) 
+FAIL xmlTextNode.replaceData(xmlTextNode.length, 0, &quot;&quot;), with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(1, 0, &quot;&quot;), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.replaceData(1, 0, &quot;&quot;), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(2, 0, &quot;&quot;), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.replaceData(2, 0, &quot;&quot;), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(3, 0, &quot;&quot;), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.replaceData(3, 0, &quot;&quot;), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(376, 1, &quot;foo&quot;), with unselected range on xmlTextNode from 0 to 1 
+FAIL xmlTextNode.replaceData(376, 1, &quot;foo&quot;), with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(0, 1, &quot;foo&quot;), with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.replaceData(0, 1, &quot;foo&quot;), with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(1, 1, &quot;foo&quot;), with unselected range collapsed at (xmlTextNode, 1) 
+FAIL xmlTextNode.replaceData(1, 1, &quot;foo&quot;), with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(xmlTextNode.length, 1, &quot;foo&quot;), with unselected range collapsed at (xmlTextNode, xmlTextNode.length) 
+FAIL xmlTextNode.replaceData(xmlTextNode.length, 1, &quot;foo&quot;), with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(1, 1, &quot;foo&quot;), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.replaceData(1, 1, &quot;foo&quot;), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(2, 1, &quot;foo&quot;), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.replaceData(2, 1, &quot;foo&quot;), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(3, 1, &quot;foo&quot;), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.replaceData(3, 1, &quot;foo&quot;), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(376, 1, &quot;&quot;), with unselected range on xmlTextNode from 0 to 1 
+FAIL xmlTextNode.replaceData(376, 1, &quot;&quot;), with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(0, 1, &quot;&quot;), with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.replaceData(0, 1, &quot;&quot;), with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(1, 1, &quot;&quot;), with unselected range collapsed at (xmlTextNode, 1) 
+FAIL xmlTextNode.replaceData(1, 1, &quot;&quot;), with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(xmlTextNode.length, 1, &quot;&quot;), with unselected range collapsed at (xmlTextNode, xmlTextNode.length) 
+FAIL xmlTextNode.replaceData(xmlTextNode.length, 1, &quot;&quot;), with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(1, 1, &quot;&quot;), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.replaceData(1, 1, &quot;&quot;), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(2, 1, &quot;&quot;), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.replaceData(2, 1, &quot;&quot;), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(3, 1, &quot;&quot;), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.replaceData(3, 1, &quot;&quot;), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(376, 47, &quot;foo&quot;), with unselected range on xmlTextNode from 0 to 1 
+FAIL xmlTextNode.replaceData(376, 47, &quot;foo&quot;), with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(0, 47, &quot;foo&quot;), with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.replaceData(0, 47, &quot;foo&quot;), with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(1, 47, &quot;foo&quot;), with unselected range collapsed at (xmlTextNode, 1) 
+FAIL xmlTextNode.replaceData(1, 47, &quot;foo&quot;), with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(xmlTextNode.length, 47, &quot;foo&quot;), with unselected range collapsed at (xmlTextNode, xmlTextNode.length) 
+FAIL xmlTextNode.replaceData(xmlTextNode.length, 47, &quot;foo&quot;), with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(1, 47, &quot;foo&quot;), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.replaceData(1, 47, &quot;foo&quot;), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(2, 47, &quot;foo&quot;), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.replaceData(2, 47, &quot;foo&quot;), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(3, 47, &quot;foo&quot;), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.replaceData(3, 47, &quot;foo&quot;), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(376, 47, &quot;&quot;), with unselected range on xmlTextNode from 0 to 1 
+FAIL xmlTextNode.replaceData(376, 47, &quot;&quot;), with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(0, 47, &quot;&quot;), with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.replaceData(0, 47, &quot;&quot;), with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(1, 47, &quot;&quot;), with unselected range collapsed at (xmlTextNode, 1) 
+FAIL xmlTextNode.replaceData(1, 47, &quot;&quot;), with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(xmlTextNode.length, 47, &quot;&quot;), with unselected range collapsed at (xmlTextNode, xmlTextNode.length) 
+FAIL xmlTextNode.replaceData(xmlTextNode.length, 47, &quot;&quot;), with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(1, 47, &quot;&quot;), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.replaceData(1, 47, &quot;&quot;), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(2, 47, &quot;&quot;), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.replaceData(2, 47, &quot;&quot;), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.replaceData(3, 47, &quot;&quot;), with unselected range on xmlTextNode from 1 to 3 
+FAIL xmlTextNode.replaceData(3, 47, &quot;&quot;), with selected range on xmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(376, 0, &quot;foo&quot;), with unselected range on detachedTextNode from 0 to 1 
+FAIL detachedTextNode.replaceData(376, 0, &quot;foo&quot;), with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(0, 0, &quot;foo&quot;), with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.replaceData(0, 0, &quot;foo&quot;), with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(1, 0, &quot;foo&quot;), with unselected range collapsed at (detachedTextNode, 1) 
+FAIL detachedTextNode.replaceData(1, 0, &quot;foo&quot;), with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(detachedTextNode.length, 0, &quot;foo&quot;), with unselected range collapsed at (detachedTextNode, detachedTextNode.length) 
+FAIL detachedTextNode.replaceData(detachedTextNode.length, 0, &quot;foo&quot;), with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(1, 0, &quot;foo&quot;), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.replaceData(1, 0, &quot;foo&quot;), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(2, 0, &quot;foo&quot;), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.replaceData(2, 0, &quot;foo&quot;), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(3, 0, &quot;foo&quot;), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.replaceData(3, 0, &quot;foo&quot;), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(376, 0, &quot;&quot;), with unselected range on detachedTextNode from 0 to 1 
+FAIL detachedTextNode.replaceData(376, 0, &quot;&quot;), with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(0, 0, &quot;&quot;), with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.replaceData(0, 0, &quot;&quot;), with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(1, 0, &quot;&quot;), with unselected range collapsed at (detachedTextNode, 1) 
+FAIL detachedTextNode.replaceData(1, 0, &quot;&quot;), with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(detachedTextNode.length, 0, &quot;&quot;), with unselected range collapsed at (detachedTextNode, detachedTextNode.length) 
+FAIL detachedTextNode.replaceData(detachedTextNode.length, 0, &quot;&quot;), with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(1, 0, &quot;&quot;), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.replaceData(1, 0, &quot;&quot;), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(2, 0, &quot;&quot;), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.replaceData(2, 0, &quot;&quot;), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(3, 0, &quot;&quot;), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.replaceData(3, 0, &quot;&quot;), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(376, 1, &quot;foo&quot;), with unselected range on detachedTextNode from 0 to 1 
+FAIL detachedTextNode.replaceData(376, 1, &quot;foo&quot;), with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(0, 1, &quot;foo&quot;), with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.replaceData(0, 1, &quot;foo&quot;), with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(1, 1, &quot;foo&quot;), with unselected range collapsed at (detachedTextNode, 1) 
+FAIL detachedTextNode.replaceData(1, 1, &quot;foo&quot;), with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(detachedTextNode.length, 1, &quot;foo&quot;), with unselected range collapsed at (detachedTextNode, detachedTextNode.length) 
+FAIL detachedTextNode.replaceData(detachedTextNode.length, 1, &quot;foo&quot;), with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(1, 1, &quot;foo&quot;), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.replaceData(1, 1, &quot;foo&quot;), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(2, 1, &quot;foo&quot;), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.replaceData(2, 1, &quot;foo&quot;), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(3, 1, &quot;foo&quot;), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.replaceData(3, 1, &quot;foo&quot;), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(376, 1, &quot;&quot;), with unselected range on detachedTextNode from 0 to 1 
+FAIL detachedTextNode.replaceData(376, 1, &quot;&quot;), with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(0, 1, &quot;&quot;), with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.replaceData(0, 1, &quot;&quot;), with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(1, 1, &quot;&quot;), with unselected range collapsed at (detachedTextNode, 1) 
+FAIL detachedTextNode.replaceData(1, 1, &quot;&quot;), with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(detachedTextNode.length, 1, &quot;&quot;), with unselected range collapsed at (detachedTextNode, detachedTextNode.length) 
+FAIL detachedTextNode.replaceData(detachedTextNode.length, 1, &quot;&quot;), with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(1, 1, &quot;&quot;), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.replaceData(1, 1, &quot;&quot;), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(2, 1, &quot;&quot;), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.replaceData(2, 1, &quot;&quot;), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(3, 1, &quot;&quot;), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.replaceData(3, 1, &quot;&quot;), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(376, 47, &quot;foo&quot;), with unselected range on detachedTextNode from 0 to 1 
+FAIL detachedTextNode.replaceData(376, 47, &quot;foo&quot;), with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(0, 47, &quot;foo&quot;), with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.replaceData(0, 47, &quot;foo&quot;), with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(1, 47, &quot;foo&quot;), with unselected range collapsed at (detachedTextNode, 1) 
+FAIL detachedTextNode.replaceData(1, 47, &quot;foo&quot;), with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(detachedTextNode.length, 47, &quot;foo&quot;), with unselected range collapsed at (detachedTextNode, detachedTextNode.length) 
+FAIL detachedTextNode.replaceData(detachedTextNode.length, 47, &quot;foo&quot;), with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(1, 47, &quot;foo&quot;), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.replaceData(1, 47, &quot;foo&quot;), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(2, 47, &quot;foo&quot;), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.replaceData(2, 47, &quot;foo&quot;), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(3, 47, &quot;foo&quot;), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.replaceData(3, 47, &quot;foo&quot;), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(376, 47, &quot;&quot;), with unselected range on detachedTextNode from 0 to 1 
+FAIL detachedTextNode.replaceData(376, 47, &quot;&quot;), with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(0, 47, &quot;&quot;), with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.replaceData(0, 47, &quot;&quot;), with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(1, 47, &quot;&quot;), with unselected range collapsed at (detachedTextNode, 1) 
+FAIL detachedTextNode.replaceData(1, 47, &quot;&quot;), with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(detachedTextNode.length, 47, &quot;&quot;), with unselected range collapsed at (detachedTextNode, detachedTextNode.length) 
+FAIL detachedTextNode.replaceData(detachedTextNode.length, 47, &quot;&quot;), with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(1, 47, &quot;&quot;), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.replaceData(1, 47, &quot;&quot;), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(2, 47, &quot;&quot;), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.replaceData(2, 47, &quot;&quot;), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.replaceData(3, 47, &quot;&quot;), with unselected range on detachedTextNode from 1 to 3 
+FAIL detachedTextNode.replaceData(3, 47, &quot;&quot;), with selected range on detachedTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(376, 0, &quot;foo&quot;), with unselected range on detachedForeignTextNode from 0 to 1 
+FAIL detachedForeignTextNode.replaceData(376, 0, &quot;foo&quot;), with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(0, 0, &quot;foo&quot;), with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.replaceData(0, 0, &quot;foo&quot;), with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(1, 0, &quot;foo&quot;), with unselected range collapsed at (detachedForeignTextNode, 1) 
+FAIL detachedForeignTextNode.replaceData(1, 0, &quot;foo&quot;), with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(detachedForeignTextNode.length, 0, &quot;foo&quot;), with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) 
+FAIL detachedForeignTextNode.replaceData(detachedForeignTextNode.length, 0, &quot;foo&quot;), with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(1, 0, &quot;foo&quot;), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.replaceData(1, 0, &quot;foo&quot;), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(2, 0, &quot;foo&quot;), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.replaceData(2, 0, &quot;foo&quot;), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(3, 0, &quot;foo&quot;), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.replaceData(3, 0, &quot;foo&quot;), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(376, 0, &quot;&quot;), with unselected range on detachedForeignTextNode from 0 to 1 
+FAIL detachedForeignTextNode.replaceData(376, 0, &quot;&quot;), with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(0, 0, &quot;&quot;), with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.replaceData(0, 0, &quot;&quot;), with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(1, 0, &quot;&quot;), with unselected range collapsed at (detachedForeignTextNode, 1) 
+FAIL detachedForeignTextNode.replaceData(1, 0, &quot;&quot;), with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(detachedForeignTextNode.length, 0, &quot;&quot;), with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) 
+FAIL detachedForeignTextNode.replaceData(detachedForeignTextNode.length, 0, &quot;&quot;), with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(1, 0, &quot;&quot;), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.replaceData(1, 0, &quot;&quot;), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(2, 0, &quot;&quot;), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.replaceData(2, 0, &quot;&quot;), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(3, 0, &quot;&quot;), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.replaceData(3, 0, &quot;&quot;), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(376, 1, &quot;foo&quot;), with unselected range on detachedForeignTextNode from 0 to 1 
+FAIL detachedForeignTextNode.replaceData(376, 1, &quot;foo&quot;), with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(0, 1, &quot;foo&quot;), with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.replaceData(0, 1, &quot;foo&quot;), with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(1, 1, &quot;foo&quot;), with unselected range collapsed at (detachedForeignTextNode, 1) 
+FAIL detachedForeignTextNode.replaceData(1, 1, &quot;foo&quot;), with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(detachedForeignTextNode.length, 1, &quot;foo&quot;), with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) 
+FAIL detachedForeignTextNode.replaceData(detachedForeignTextNode.length, 1, &quot;foo&quot;), with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(1, 1, &quot;foo&quot;), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.replaceData(1, 1, &quot;foo&quot;), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(2, 1, &quot;foo&quot;), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.replaceData(2, 1, &quot;foo&quot;), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(3, 1, &quot;foo&quot;), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.replaceData(3, 1, &quot;foo&quot;), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(376, 1, &quot;&quot;), with unselected range on detachedForeignTextNode from 0 to 1 
+FAIL detachedForeignTextNode.replaceData(376, 1, &quot;&quot;), with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(0, 1, &quot;&quot;), with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.replaceData(0, 1, &quot;&quot;), with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(1, 1, &quot;&quot;), with unselected range collapsed at (detachedForeignTextNode, 1) 
+FAIL detachedForeignTextNode.replaceData(1, 1, &quot;&quot;), with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(detachedForeignTextNode.length, 1, &quot;&quot;), with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) 
+FAIL detachedForeignTextNode.replaceData(detachedForeignTextNode.length, 1, &quot;&quot;), with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(1, 1, &quot;&quot;), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.replaceData(1, 1, &quot;&quot;), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(2, 1, &quot;&quot;), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.replaceData(2, 1, &quot;&quot;), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(3, 1, &quot;&quot;), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.replaceData(3, 1, &quot;&quot;), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(376, 47, &quot;foo&quot;), with unselected range on detachedForeignTextNode from 0 to 1 
+FAIL detachedForeignTextNode.replaceData(376, 47, &quot;foo&quot;), with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(0, 47, &quot;foo&quot;), with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.replaceData(0, 47, &quot;foo&quot;), with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(1, 47, &quot;foo&quot;), with unselected range collapsed at (detachedForeignTextNode, 1) 
+FAIL detachedForeignTextNode.replaceData(1, 47, &quot;foo&quot;), with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(detachedForeignTextNode.length, 47, &quot;foo&quot;), with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) 
+FAIL detachedForeignTextNode.replaceData(detachedForeignTextNode.length, 47, &quot;foo&quot;), with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(1, 47, &quot;foo&quot;), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.replaceData(1, 47, &quot;foo&quot;), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(2, 47, &quot;foo&quot;), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.replaceData(2, 47, &quot;foo&quot;), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(3, 47, &quot;foo&quot;), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.replaceData(3, 47, &quot;foo&quot;), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(376, 47, &quot;&quot;), with unselected range on detachedForeignTextNode from 0 to 1 
+FAIL detachedForeignTextNode.replaceData(376, 47, &quot;&quot;), with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(0, 47, &quot;&quot;), with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.replaceData(0, 47, &quot;&quot;), with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(1, 47, &quot;&quot;), with unselected range collapsed at (detachedForeignTextNode, 1) 
+FAIL detachedForeignTextNode.replaceData(1, 47, &quot;&quot;), with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(detachedForeignTextNode.length, 47, &quot;&quot;), with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) 
+FAIL detachedForeignTextNode.replaceData(detachedForeignTextNode.length, 47, &quot;&quot;), with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(1, 47, &quot;&quot;), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.replaceData(1, 47, &quot;&quot;), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(2, 47, &quot;&quot;), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.replaceData(2, 47, &quot;&quot;), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.replaceData(3, 47, &quot;&quot;), with unselected range on detachedForeignTextNode from 1 to 3 
+FAIL detachedForeignTextNode.replaceData(3, 47, &quot;&quot;), with selected range on detachedForeignTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(376, 0, &quot;foo&quot;), with unselected range on detachedXmlTextNode from 0 to 1 
+FAIL detachedXmlTextNode.replaceData(376, 0, &quot;foo&quot;), with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(0, 0, &quot;foo&quot;), with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.replaceData(0, 0, &quot;foo&quot;), with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(1, 0, &quot;foo&quot;), with unselected range collapsed at (detachedXmlTextNode, 1) 
+FAIL detachedXmlTextNode.replaceData(1, 0, &quot;foo&quot;), with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(detachedXmlTextNode.length, 0, &quot;foo&quot;), with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) 
+FAIL detachedXmlTextNode.replaceData(detachedXmlTextNode.length, 0, &quot;foo&quot;), with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(1, 0, &quot;foo&quot;), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.replaceData(1, 0, &quot;foo&quot;), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(2, 0, &quot;foo&quot;), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.replaceData(2, 0, &quot;foo&quot;), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(3, 0, &quot;foo&quot;), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.replaceData(3, 0, &quot;foo&quot;), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(376, 0, &quot;&quot;), with unselected range on detachedXmlTextNode from 0 to 1 
+FAIL detachedXmlTextNode.replaceData(376, 0, &quot;&quot;), with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(0, 0, &quot;&quot;), with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.replaceData(0, 0, &quot;&quot;), with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(1, 0, &quot;&quot;), with unselected range collapsed at (detachedXmlTextNode, 1) 
+FAIL detachedXmlTextNode.replaceData(1, 0, &quot;&quot;), with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(detachedXmlTextNode.length, 0, &quot;&quot;), with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) 
+FAIL detachedXmlTextNode.replaceData(detachedXmlTextNode.length, 0, &quot;&quot;), with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(1, 0, &quot;&quot;), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.replaceData(1, 0, &quot;&quot;), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(2, 0, &quot;&quot;), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.replaceData(2, 0, &quot;&quot;), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(3, 0, &quot;&quot;), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.replaceData(3, 0, &quot;&quot;), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(376, 1, &quot;foo&quot;), with unselected range on detachedXmlTextNode from 0 to 1 
+FAIL detachedXmlTextNode.replaceData(376, 1, &quot;foo&quot;), with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(0, 1, &quot;foo&quot;), with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.replaceData(0, 1, &quot;foo&quot;), with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(1, 1, &quot;foo&quot;), with unselected range collapsed at (detachedXmlTextNode, 1) 
+FAIL detachedXmlTextNode.replaceData(1, 1, &quot;foo&quot;), with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(detachedXmlTextNode.length, 1, &quot;foo&quot;), with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) 
+FAIL detachedXmlTextNode.replaceData(detachedXmlTextNode.length, 1, &quot;foo&quot;), with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(1, 1, &quot;foo&quot;), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.replaceData(1, 1, &quot;foo&quot;), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(2, 1, &quot;foo&quot;), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.replaceData(2, 1, &quot;foo&quot;), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(3, 1, &quot;foo&quot;), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.replaceData(3, 1, &quot;foo&quot;), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(376, 1, &quot;&quot;), with unselected range on detachedXmlTextNode from 0 to 1 
+FAIL detachedXmlTextNode.replaceData(376, 1, &quot;&quot;), with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(0, 1, &quot;&quot;), with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.replaceData(0, 1, &quot;&quot;), with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(1, 1, &quot;&quot;), with unselected range collapsed at (detachedXmlTextNode, 1) 
+FAIL detachedXmlTextNode.replaceData(1, 1, &quot;&quot;), with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(detachedXmlTextNode.length, 1, &quot;&quot;), with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) 
+FAIL detachedXmlTextNode.replaceData(detachedXmlTextNode.length, 1, &quot;&quot;), with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(1, 1, &quot;&quot;), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.replaceData(1, 1, &quot;&quot;), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(2, 1, &quot;&quot;), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.replaceData(2, 1, &quot;&quot;), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(3, 1, &quot;&quot;), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.replaceData(3, 1, &quot;&quot;), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(376, 47, &quot;foo&quot;), with unselected range on detachedXmlTextNode from 0 to 1 
+FAIL detachedXmlTextNode.replaceData(376, 47, &quot;foo&quot;), with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(0, 47, &quot;foo&quot;), with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.replaceData(0, 47, &quot;foo&quot;), with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(1, 47, &quot;foo&quot;), with unselected range collapsed at (detachedXmlTextNode, 1) 
+FAIL detachedXmlTextNode.replaceData(1, 47, &quot;foo&quot;), with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(detachedXmlTextNode.length, 47, &quot;foo&quot;), with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) 
+FAIL detachedXmlTextNode.replaceData(detachedXmlTextNode.length, 47, &quot;foo&quot;), with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(1, 47, &quot;foo&quot;), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.replaceData(1, 47, &quot;foo&quot;), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(2, 47, &quot;foo&quot;), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.replaceData(2, 47, &quot;foo&quot;), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(3, 47, &quot;foo&quot;), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.replaceData(3, 47, &quot;foo&quot;), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(376, 47, &quot;&quot;), with unselected range on detachedXmlTextNode from 0 to 1 
+FAIL detachedXmlTextNode.replaceData(376, 47, &quot;&quot;), with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(0, 47, &quot;&quot;), with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.replaceData(0, 47, &quot;&quot;), with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(1, 47, &quot;&quot;), with unselected range collapsed at (detachedXmlTextNode, 1) 
+FAIL detachedXmlTextNode.replaceData(1, 47, &quot;&quot;), with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(detachedXmlTextNode.length, 47, &quot;&quot;), with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) 
+FAIL detachedXmlTextNode.replaceData(detachedXmlTextNode.length, 47, &quot;&quot;), with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(1, 47, &quot;&quot;), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.replaceData(1, 47, &quot;&quot;), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(2, 47, &quot;&quot;), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.replaceData(2, 47, &quot;&quot;), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.replaceData(3, 47, &quot;&quot;), with unselected range on detachedXmlTextNode from 1 to 3 
+FAIL detachedXmlTextNode.replaceData(3, 47, &quot;&quot;), with selected range on detachedXmlTextNode from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS comment.replaceData(376, 0, &quot;foo&quot;), with unselected range on comment from 0 to 1 
+FAIL comment.replaceData(376, 0, &quot;foo&quot;), with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(0, 0, &quot;foo&quot;), with unselected range collapsed at (comment, 0) 
+FAIL comment.replaceData(0, 0, &quot;foo&quot;), with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(1, 0, &quot;foo&quot;), with unselected range collapsed at (comment, 1) 
+FAIL comment.replaceData(1, 0, &quot;foo&quot;), with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(comment.length, 0, &quot;foo&quot;), with unselected range collapsed at (comment, comment.length) 
+FAIL comment.replaceData(comment.length, 0, &quot;foo&quot;), with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(1, 0, &quot;foo&quot;), with unselected range on comment from 1 to 3 
+FAIL comment.replaceData(1, 0, &quot;foo&quot;), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(2, 0, &quot;foo&quot;), with unselected range on comment from 1 to 3 
+FAIL comment.replaceData(2, 0, &quot;foo&quot;), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(3, 0, &quot;foo&quot;), with unselected range on comment from 1 to 3 
+FAIL comment.replaceData(3, 0, &quot;foo&quot;), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(376, 0, &quot;&quot;), with unselected range on comment from 0 to 1 
+FAIL comment.replaceData(376, 0, &quot;&quot;), with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(0, 0, &quot;&quot;), with unselected range collapsed at (comment, 0) 
+FAIL comment.replaceData(0, 0, &quot;&quot;), with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(1, 0, &quot;&quot;), with unselected range collapsed at (comment, 1) 
+FAIL comment.replaceData(1, 0, &quot;&quot;), with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(comment.length, 0, &quot;&quot;), with unselected range collapsed at (comment, comment.length) 
+FAIL comment.replaceData(comment.length, 0, &quot;&quot;), with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(1, 0, &quot;&quot;), with unselected range on comment from 1 to 3 
+FAIL comment.replaceData(1, 0, &quot;&quot;), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(2, 0, &quot;&quot;), with unselected range on comment from 1 to 3 
+FAIL comment.replaceData(2, 0, &quot;&quot;), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(3, 0, &quot;&quot;), with unselected range on comment from 1 to 3 
+FAIL comment.replaceData(3, 0, &quot;&quot;), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(376, 1, &quot;foo&quot;), with unselected range on comment from 0 to 1 
+FAIL comment.replaceData(376, 1, &quot;foo&quot;), with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(0, 1, &quot;foo&quot;), with unselected range collapsed at (comment, 0) 
+FAIL comment.replaceData(0, 1, &quot;foo&quot;), with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(1, 1, &quot;foo&quot;), with unselected range collapsed at (comment, 1) 
+FAIL comment.replaceData(1, 1, &quot;foo&quot;), with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(comment.length, 1, &quot;foo&quot;), with unselected range collapsed at (comment, comment.length) 
+FAIL comment.replaceData(comment.length, 1, &quot;foo&quot;), with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(1, 1, &quot;foo&quot;), with unselected range on comment from 1 to 3 
+FAIL comment.replaceData(1, 1, &quot;foo&quot;), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(2, 1, &quot;foo&quot;), with unselected range on comment from 1 to 3 
+FAIL comment.replaceData(2, 1, &quot;foo&quot;), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(3, 1, &quot;foo&quot;), with unselected range on comment from 1 to 3 
+FAIL comment.replaceData(3, 1, &quot;foo&quot;), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(376, 1, &quot;&quot;), with unselected range on comment from 0 to 1 
+FAIL comment.replaceData(376, 1, &quot;&quot;), with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(0, 1, &quot;&quot;), with unselected range collapsed at (comment, 0) 
+FAIL comment.replaceData(0, 1, &quot;&quot;), with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(1, 1, &quot;&quot;), with unselected range collapsed at (comment, 1) 
+FAIL comment.replaceData(1, 1, &quot;&quot;), with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(comment.length, 1, &quot;&quot;), with unselected range collapsed at (comment, comment.length) 
+FAIL comment.replaceData(comment.length, 1, &quot;&quot;), with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(1, 1, &quot;&quot;), with unselected range on comment from 1 to 3 
+FAIL comment.replaceData(1, 1, &quot;&quot;), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(2, 1, &quot;&quot;), with unselected range on comment from 1 to 3 
+FAIL comment.replaceData(2, 1, &quot;&quot;), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(3, 1, &quot;&quot;), with unselected range on comment from 1 to 3 
+FAIL comment.replaceData(3, 1, &quot;&quot;), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(376, 47, &quot;foo&quot;), with unselected range on comment from 0 to 1 
+FAIL comment.replaceData(376, 47, &quot;foo&quot;), with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(0, 47, &quot;foo&quot;), with unselected range collapsed at (comment, 0) 
+FAIL comment.replaceData(0, 47, &quot;foo&quot;), with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(1, 47, &quot;foo&quot;), with unselected range collapsed at (comment, 1) 
+FAIL comment.replaceData(1, 47, &quot;foo&quot;), with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(comment.length, 47, &quot;foo&quot;), with unselected range collapsed at (comment, comment.length) 
+FAIL comment.replaceData(comment.length, 47, &quot;foo&quot;), with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(1, 47, &quot;foo&quot;), with unselected range on comment from 1 to 3 
+FAIL comment.replaceData(1, 47, &quot;foo&quot;), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(2, 47, &quot;foo&quot;), with unselected range on comment from 1 to 3 
+FAIL comment.replaceData(2, 47, &quot;foo&quot;), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(3, 47, &quot;foo&quot;), with unselected range on comment from 1 to 3 
+FAIL comment.replaceData(3, 47, &quot;foo&quot;), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(376, 47, &quot;&quot;), with unselected range on comment from 0 to 1 
+FAIL comment.replaceData(376, 47, &quot;&quot;), with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(0, 47, &quot;&quot;), with unselected range collapsed at (comment, 0) 
+FAIL comment.replaceData(0, 47, &quot;&quot;), with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(1, 47, &quot;&quot;), with unselected range collapsed at (comment, 1) 
+FAIL comment.replaceData(1, 47, &quot;&quot;), with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(comment.length, 47, &quot;&quot;), with unselected range collapsed at (comment, comment.length) 
+FAIL comment.replaceData(comment.length, 47, &quot;&quot;), with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(1, 47, &quot;&quot;), with unselected range on comment from 1 to 3 
+FAIL comment.replaceData(1, 47, &quot;&quot;), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(2, 47, &quot;&quot;), with unselected range on comment from 1 to 3 
+FAIL comment.replaceData(2, 47, &quot;&quot;), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.replaceData(3, 47, &quot;&quot;), with unselected range on comment from 1 to 3 
+FAIL comment.replaceData(3, 47, &quot;&quot;), with selected range on comment from 1 to 3 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS foreignComment.replaceData(376, 0, &quot;foo&quot;), with unselected range on foreignComment from 0 to 1 
+FAIL foreignComment.replaceData(376, 0, &quot;foo&quot;), with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(0, 0, &quot;foo&quot;), with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.replaceData(0, 0, &quot;foo&quot;), with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(1, 0, &quot;foo&quot;), with unselected range collapsed at (foreignComment, 1) 
+FAIL foreignComment.replaceData(1, 0, &quot;foo&quot;), with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(foreignComment.length, 0, &quot;foo&quot;), with unselected range collapsed at (foreignComment, foreignComment.length) 
+FAIL foreignComment.replaceData(foreignComment.length, 0, &quot;foo&quot;), with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(1, 0, &quot;foo&quot;), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.replaceData(1, 0, &quot;foo&quot;), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(2, 0, &quot;foo&quot;), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.replaceData(2, 0, &quot;foo&quot;), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(3, 0, &quot;foo&quot;), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.replaceData(3, 0, &quot;foo&quot;), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(376, 0, &quot;&quot;), with unselected range on foreignComment from 0 to 1 
+FAIL foreignComment.replaceData(376, 0, &quot;&quot;), with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(0, 0, &quot;&quot;), with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.replaceData(0, 0, &quot;&quot;), with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(1, 0, &quot;&quot;), with unselected range collapsed at (foreignComment, 1) 
+FAIL foreignComment.replaceData(1, 0, &quot;&quot;), with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(foreignComment.length, 0, &quot;&quot;), with unselected range collapsed at (foreignComment, foreignComment.length) 
+FAIL foreignComment.replaceData(foreignComment.length, 0, &quot;&quot;), with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(1, 0, &quot;&quot;), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.replaceData(1, 0, &quot;&quot;), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(2, 0, &quot;&quot;), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.replaceData(2, 0, &quot;&quot;), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(3, 0, &quot;&quot;), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.replaceData(3, 0, &quot;&quot;), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(376, 1, &quot;foo&quot;), with unselected range on foreignComment from 0 to 1 
+FAIL foreignComment.replaceData(376, 1, &quot;foo&quot;), with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(0, 1, &quot;foo&quot;), with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.replaceData(0, 1, &quot;foo&quot;), with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(1, 1, &quot;foo&quot;), with unselected range collapsed at (foreignComment, 1) 
+FAIL foreignComment.replaceData(1, 1, &quot;foo&quot;), with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(foreignComment.length, 1, &quot;foo&quot;), with unselected range collapsed at (foreignComment, foreignComment.length) 
+FAIL foreignComment.replaceData(foreignComment.length, 1, &quot;foo&quot;), with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(1, 1, &quot;foo&quot;), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.replaceData(1, 1, &quot;foo&quot;), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(2, 1, &quot;foo&quot;), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.replaceData(2, 1, &quot;foo&quot;), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(3, 1, &quot;foo&quot;), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.replaceData(3, 1, &quot;foo&quot;), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(376, 1, &quot;&quot;), with unselected range on foreignComment from 0 to 1 
+FAIL foreignComment.replaceData(376, 1, &quot;&quot;), with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(0, 1, &quot;&quot;), with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.replaceData(0, 1, &quot;&quot;), with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(1, 1, &quot;&quot;), with unselected range collapsed at (foreignComment, 1) 
+FAIL foreignComment.replaceData(1, 1, &quot;&quot;), with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(foreignComment.length, 1, &quot;&quot;), with unselected range collapsed at (foreignComment, foreignComment.length) 
+FAIL foreignComment.replaceData(foreignComment.length, 1, &quot;&quot;), with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(1, 1, &quot;&quot;), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.replaceData(1, 1, &quot;&quot;), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(2, 1, &quot;&quot;), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.replaceData(2, 1, &quot;&quot;), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(3, 1, &quot;&quot;), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.replaceData(3, 1, &quot;&quot;), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(376, 47, &quot;foo&quot;), with unselected range on foreignComment from 0 to 1 
+FAIL foreignComment.replaceData(376, 47, &quot;foo&quot;), with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(0, 47, &quot;foo&quot;), with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.replaceData(0, 47, &quot;foo&quot;), with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(1, 47, &quot;foo&quot;), with unselected range collapsed at (foreignComment, 1) 
+FAIL foreignComment.replaceData(1, 47, &quot;foo&quot;), with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(foreignComment.length, 47, &quot;foo&quot;), with unselected range collapsed at (foreignComment, foreignComment.length) 
+FAIL foreignComment.replaceData(foreignComment.length, 47, &quot;foo&quot;), with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(1, 47, &quot;foo&quot;), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.replaceData(1, 47, &quot;foo&quot;), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(2, 47, &quot;foo&quot;), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.replaceData(2, 47, &quot;foo&quot;), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(3, 47, &quot;foo&quot;), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.replaceData(3, 47, &quot;foo&quot;), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(376, 47, &quot;&quot;), with unselected range on foreignComment from 0 to 1 
+FAIL foreignComment.replaceData(376, 47, &quot;&quot;), with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(0, 47, &quot;&quot;), with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.replaceData(0, 47, &quot;&quot;), with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(1, 47, &quot;&quot;), with unselected range collapsed at (foreignComment, 1) 
+FAIL foreignComment.replaceData(1, 47, &quot;&quot;), with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(foreignComment.length, 47, &quot;&quot;), with unselected range collapsed at (foreignComment, foreignComment.length) 
+FAIL foreignComment.replaceData(foreignComment.length, 47, &quot;&quot;), with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(1, 47, &quot;&quot;), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.replaceData(1, 47, &quot;&quot;), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(2, 47, &quot;&quot;), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.replaceData(2, 47, &quot;&quot;), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.replaceData(3, 47, &quot;&quot;), with unselected range on foreignComment from 1 to 3 
+FAIL foreignComment.replaceData(3, 47, &quot;&quot;), with selected range on foreignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(376, 0, &quot;foo&quot;), with unselected range on xmlComment from 0 to 1 
+FAIL xmlComment.replaceData(376, 0, &quot;foo&quot;), with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(0, 0, &quot;foo&quot;), with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.replaceData(0, 0, &quot;foo&quot;), with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(1, 0, &quot;foo&quot;), with unselected range collapsed at (xmlComment, 1) 
+FAIL xmlComment.replaceData(1, 0, &quot;foo&quot;), with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(xmlComment.length, 0, &quot;foo&quot;), with unselected range collapsed at (xmlComment, xmlComment.length) 
+FAIL xmlComment.replaceData(xmlComment.length, 0, &quot;foo&quot;), with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(1, 0, &quot;foo&quot;), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.replaceData(1, 0, &quot;foo&quot;), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(2, 0, &quot;foo&quot;), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.replaceData(2, 0, &quot;foo&quot;), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(3, 0, &quot;foo&quot;), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.replaceData(3, 0, &quot;foo&quot;), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(376, 0, &quot;&quot;), with unselected range on xmlComment from 0 to 1 
+FAIL xmlComment.replaceData(376, 0, &quot;&quot;), with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(0, 0, &quot;&quot;), with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.replaceData(0, 0, &quot;&quot;), with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(1, 0, &quot;&quot;), with unselected range collapsed at (xmlComment, 1) 
+FAIL xmlComment.replaceData(1, 0, &quot;&quot;), with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(xmlComment.length, 0, &quot;&quot;), with unselected range collapsed at (xmlComment, xmlComment.length) 
+FAIL xmlComment.replaceData(xmlComment.length, 0, &quot;&quot;), with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(1, 0, &quot;&quot;), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.replaceData(1, 0, &quot;&quot;), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(2, 0, &quot;&quot;), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.replaceData(2, 0, &quot;&quot;), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(3, 0, &quot;&quot;), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.replaceData(3, 0, &quot;&quot;), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(376, 1, &quot;foo&quot;), with unselected range on xmlComment from 0 to 1 
+FAIL xmlComment.replaceData(376, 1, &quot;foo&quot;), with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(0, 1, &quot;foo&quot;), with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.replaceData(0, 1, &quot;foo&quot;), with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(1, 1, &quot;foo&quot;), with unselected range collapsed at (xmlComment, 1) 
+FAIL xmlComment.replaceData(1, 1, &quot;foo&quot;), with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(xmlComment.length, 1, &quot;foo&quot;), with unselected range collapsed at (xmlComment, xmlComment.length) 
+FAIL xmlComment.replaceData(xmlComment.length, 1, &quot;foo&quot;), with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(1, 1, &quot;foo&quot;), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.replaceData(1, 1, &quot;foo&quot;), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(2, 1, &quot;foo&quot;), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.replaceData(2, 1, &quot;foo&quot;), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(3, 1, &quot;foo&quot;), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.replaceData(3, 1, &quot;foo&quot;), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(376, 1, &quot;&quot;), with unselected range on xmlComment from 0 to 1 
+FAIL xmlComment.replaceData(376, 1, &quot;&quot;), with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(0, 1, &quot;&quot;), with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.replaceData(0, 1, &quot;&quot;), with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(1, 1, &quot;&quot;), with unselected range collapsed at (xmlComment, 1) 
+FAIL xmlComment.replaceData(1, 1, &quot;&quot;), with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(xmlComment.length, 1, &quot;&quot;), with unselected range collapsed at (xmlComment, xmlComment.length) 
+FAIL xmlComment.replaceData(xmlComment.length, 1, &quot;&quot;), with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(1, 1, &quot;&quot;), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.replaceData(1, 1, &quot;&quot;), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(2, 1, &quot;&quot;), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.replaceData(2, 1, &quot;&quot;), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(3, 1, &quot;&quot;), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.replaceData(3, 1, &quot;&quot;), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(376, 47, &quot;foo&quot;), with unselected range on xmlComment from 0 to 1 
+FAIL xmlComment.replaceData(376, 47, &quot;foo&quot;), with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(0, 47, &quot;foo&quot;), with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.replaceData(0, 47, &quot;foo&quot;), with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(1, 47, &quot;foo&quot;), with unselected range collapsed at (xmlComment, 1) 
+FAIL xmlComment.replaceData(1, 47, &quot;foo&quot;), with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(xmlComment.length, 47, &quot;foo&quot;), with unselected range collapsed at (xmlComment, xmlComment.length) 
+FAIL xmlComment.replaceData(xmlComment.length, 47, &quot;foo&quot;), with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(1, 47, &quot;foo&quot;), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.replaceData(1, 47, &quot;foo&quot;), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(2, 47, &quot;foo&quot;), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.replaceData(2, 47, &quot;foo&quot;), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(3, 47, &quot;foo&quot;), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.replaceData(3, 47, &quot;foo&quot;), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(376, 47, &quot;&quot;), with unselected range on xmlComment from 0 to 1 
+FAIL xmlComment.replaceData(376, 47, &quot;&quot;), with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(0, 47, &quot;&quot;), with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.replaceData(0, 47, &quot;&quot;), with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(1, 47, &quot;&quot;), with unselected range collapsed at (xmlComment, 1) 
+FAIL xmlComment.replaceData(1, 47, &quot;&quot;), with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(xmlComment.length, 47, &quot;&quot;), with unselected range collapsed at (xmlComment, xmlComment.length) 
+FAIL xmlComment.replaceData(xmlComment.length, 47, &quot;&quot;), with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(1, 47, &quot;&quot;), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.replaceData(1, 47, &quot;&quot;), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(2, 47, &quot;&quot;), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.replaceData(2, 47, &quot;&quot;), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.replaceData(3, 47, &quot;&quot;), with unselected range on xmlComment from 1 to 3 
+FAIL xmlComment.replaceData(3, 47, &quot;&quot;), with selected range on xmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(376, 0, &quot;foo&quot;), with unselected range on detachedComment from 0 to 1 
+FAIL detachedComment.replaceData(376, 0, &quot;foo&quot;), with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(0, 0, &quot;foo&quot;), with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.replaceData(0, 0, &quot;foo&quot;), with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(1, 0, &quot;foo&quot;), with unselected range collapsed at (detachedComment, 1) 
+FAIL detachedComment.replaceData(1, 0, &quot;foo&quot;), with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(detachedComment.length, 0, &quot;foo&quot;), with unselected range collapsed at (detachedComment, detachedComment.length) 
+FAIL detachedComment.replaceData(detachedComment.length, 0, &quot;foo&quot;), with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(1, 0, &quot;foo&quot;), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.replaceData(1, 0, &quot;foo&quot;), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(2, 0, &quot;foo&quot;), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.replaceData(2, 0, &quot;foo&quot;), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(3, 0, &quot;foo&quot;), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.replaceData(3, 0, &quot;foo&quot;), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(376, 0, &quot;&quot;), with unselected range on detachedComment from 0 to 1 
+FAIL detachedComment.replaceData(376, 0, &quot;&quot;), with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(0, 0, &quot;&quot;), with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.replaceData(0, 0, &quot;&quot;), with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(1, 0, &quot;&quot;), with unselected range collapsed at (detachedComment, 1) 
+FAIL detachedComment.replaceData(1, 0, &quot;&quot;), with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(detachedComment.length, 0, &quot;&quot;), with unselected range collapsed at (detachedComment, detachedComment.length) 
+FAIL detachedComment.replaceData(detachedComment.length, 0, &quot;&quot;), with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(1, 0, &quot;&quot;), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.replaceData(1, 0, &quot;&quot;), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(2, 0, &quot;&quot;), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.replaceData(2, 0, &quot;&quot;), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(3, 0, &quot;&quot;), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.replaceData(3, 0, &quot;&quot;), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(376, 1, &quot;foo&quot;), with unselected range on detachedComment from 0 to 1 
+FAIL detachedComment.replaceData(376, 1, &quot;foo&quot;), with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(0, 1, &quot;foo&quot;), with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.replaceData(0, 1, &quot;foo&quot;), with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(1, 1, &quot;foo&quot;), with unselected range collapsed at (detachedComment, 1) 
+FAIL detachedComment.replaceData(1, 1, &quot;foo&quot;), with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(detachedComment.length, 1, &quot;foo&quot;), with unselected range collapsed at (detachedComment, detachedComment.length) 
+FAIL detachedComment.replaceData(detachedComment.length, 1, &quot;foo&quot;), with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(1, 1, &quot;foo&quot;), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.replaceData(1, 1, &quot;foo&quot;), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(2, 1, &quot;foo&quot;), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.replaceData(2, 1, &quot;foo&quot;), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(3, 1, &quot;foo&quot;), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.replaceData(3, 1, &quot;foo&quot;), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(376, 1, &quot;&quot;), with unselected range on detachedComment from 0 to 1 
+FAIL detachedComment.replaceData(376, 1, &quot;&quot;), with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(0, 1, &quot;&quot;), with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.replaceData(0, 1, &quot;&quot;), with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(1, 1, &quot;&quot;), with unselected range collapsed at (detachedComment, 1) 
+FAIL detachedComment.replaceData(1, 1, &quot;&quot;), with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(detachedComment.length, 1, &quot;&quot;), with unselected range collapsed at (detachedComment, detachedComment.length) 
+FAIL detachedComment.replaceData(detachedComment.length, 1, &quot;&quot;), with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(1, 1, &quot;&quot;), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.replaceData(1, 1, &quot;&quot;), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(2, 1, &quot;&quot;), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.replaceData(2, 1, &quot;&quot;), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(3, 1, &quot;&quot;), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.replaceData(3, 1, &quot;&quot;), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(376, 47, &quot;foo&quot;), with unselected range on detachedComment from 0 to 1 
+FAIL detachedComment.replaceData(376, 47, &quot;foo&quot;), with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(0, 47, &quot;foo&quot;), with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.replaceData(0, 47, &quot;foo&quot;), with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(1, 47, &quot;foo&quot;), with unselected range collapsed at (detachedComment, 1) 
+FAIL detachedComment.replaceData(1, 47, &quot;foo&quot;), with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(detachedComment.length, 47, &quot;foo&quot;), with unselected range collapsed at (detachedComment, detachedComment.length) 
+FAIL detachedComment.replaceData(detachedComment.length, 47, &quot;foo&quot;), with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(1, 47, &quot;foo&quot;), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.replaceData(1, 47, &quot;foo&quot;), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(2, 47, &quot;foo&quot;), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.replaceData(2, 47, &quot;foo&quot;), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(3, 47, &quot;foo&quot;), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.replaceData(3, 47, &quot;foo&quot;), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(376, 47, &quot;&quot;), with unselected range on detachedComment from 0 to 1 
+FAIL detachedComment.replaceData(376, 47, &quot;&quot;), with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(0, 47, &quot;&quot;), with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.replaceData(0, 47, &quot;&quot;), with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(1, 47, &quot;&quot;), with unselected range collapsed at (detachedComment, 1) 
+FAIL detachedComment.replaceData(1, 47, &quot;&quot;), with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(detachedComment.length, 47, &quot;&quot;), with unselected range collapsed at (detachedComment, detachedComment.length) 
+FAIL detachedComment.replaceData(detachedComment.length, 47, &quot;&quot;), with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(1, 47, &quot;&quot;), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.replaceData(1, 47, &quot;&quot;), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(2, 47, &quot;&quot;), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.replaceData(2, 47, &quot;&quot;), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.replaceData(3, 47, &quot;&quot;), with unselected range on detachedComment from 1 to 3 
+FAIL detachedComment.replaceData(3, 47, &quot;&quot;), with selected range on detachedComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(376, 0, &quot;foo&quot;), with unselected range on detachedForeignComment from 0 to 1 
+FAIL detachedForeignComment.replaceData(376, 0, &quot;foo&quot;), with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(0, 0, &quot;foo&quot;), with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.replaceData(0, 0, &quot;foo&quot;), with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(1, 0, &quot;foo&quot;), with unselected range collapsed at (detachedForeignComment, 1) 
+FAIL detachedForeignComment.replaceData(1, 0, &quot;foo&quot;), with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(detachedForeignComment.length, 0, &quot;foo&quot;), with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) 
+FAIL detachedForeignComment.replaceData(detachedForeignComment.length, 0, &quot;foo&quot;), with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(1, 0, &quot;foo&quot;), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.replaceData(1, 0, &quot;foo&quot;), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(2, 0, &quot;foo&quot;), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.replaceData(2, 0, &quot;foo&quot;), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(3, 0, &quot;foo&quot;), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.replaceData(3, 0, &quot;foo&quot;), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(376, 0, &quot;&quot;), with unselected range on detachedForeignComment from 0 to 1 
+FAIL detachedForeignComment.replaceData(376, 0, &quot;&quot;), with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(0, 0, &quot;&quot;), with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.replaceData(0, 0, &quot;&quot;), with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(1, 0, &quot;&quot;), with unselected range collapsed at (detachedForeignComment, 1) 
+FAIL detachedForeignComment.replaceData(1, 0, &quot;&quot;), with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(detachedForeignComment.length, 0, &quot;&quot;), with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) 
+FAIL detachedForeignComment.replaceData(detachedForeignComment.length, 0, &quot;&quot;), with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(1, 0, &quot;&quot;), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.replaceData(1, 0, &quot;&quot;), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(2, 0, &quot;&quot;), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.replaceData(2, 0, &quot;&quot;), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(3, 0, &quot;&quot;), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.replaceData(3, 0, &quot;&quot;), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(376, 1, &quot;foo&quot;), with unselected range on detachedForeignComment from 0 to 1 
+FAIL detachedForeignComment.replaceData(376, 1, &quot;foo&quot;), with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(0, 1, &quot;foo&quot;), with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.replaceData(0, 1, &quot;foo&quot;), with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(1, 1, &quot;foo&quot;), with unselected range collapsed at (detachedForeignComment, 1) 
+FAIL detachedForeignComment.replaceData(1, 1, &quot;foo&quot;), with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(detachedForeignComment.length, 1, &quot;foo&quot;), with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) 
+FAIL detachedForeignComment.replaceData(detachedForeignComment.length, 1, &quot;foo&quot;), with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(1, 1, &quot;foo&quot;), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.replaceData(1, 1, &quot;foo&quot;), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(2, 1, &quot;foo&quot;), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.replaceData(2, 1, &quot;foo&quot;), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(3, 1, &quot;foo&quot;), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.replaceData(3, 1, &quot;foo&quot;), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(376, 1, &quot;&quot;), with unselected range on detachedForeignComment from 0 to 1 
+FAIL detachedForeignComment.replaceData(376, 1, &quot;&quot;), with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(0, 1, &quot;&quot;), with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.replaceData(0, 1, &quot;&quot;), with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(1, 1, &quot;&quot;), with unselected range collapsed at (detachedForeignComment, 1) 
+FAIL detachedForeignComment.replaceData(1, 1, &quot;&quot;), with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(detachedForeignComment.length, 1, &quot;&quot;), with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) 
+FAIL detachedForeignComment.replaceData(detachedForeignComment.length, 1, &quot;&quot;), with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(1, 1, &quot;&quot;), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.replaceData(1, 1, &quot;&quot;), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(2, 1, &quot;&quot;), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.replaceData(2, 1, &quot;&quot;), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(3, 1, &quot;&quot;), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.replaceData(3, 1, &quot;&quot;), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(376, 47, &quot;foo&quot;), with unselected range on detachedForeignComment from 0 to 1 
+FAIL detachedForeignComment.replaceData(376, 47, &quot;foo&quot;), with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(0, 47, &quot;foo&quot;), with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.replaceData(0, 47, &quot;foo&quot;), with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(1, 47, &quot;foo&quot;), with unselected range collapsed at (detachedForeignComment, 1) 
+FAIL detachedForeignComment.replaceData(1, 47, &quot;foo&quot;), with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(detachedForeignComment.length, 47, &quot;foo&quot;), with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) 
+FAIL detachedForeignComment.replaceData(detachedForeignComment.length, 47, &quot;foo&quot;), with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(1, 47, &quot;foo&quot;), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.replaceData(1, 47, &quot;foo&quot;), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(2, 47, &quot;foo&quot;), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.replaceData(2, 47, &quot;foo&quot;), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(3, 47, &quot;foo&quot;), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.replaceData(3, 47, &quot;foo&quot;), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(376, 47, &quot;&quot;), with unselected range on detachedForeignComment from 0 to 1 
+FAIL detachedForeignComment.replaceData(376, 47, &quot;&quot;), with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(0, 47, &quot;&quot;), with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.replaceData(0, 47, &quot;&quot;), with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(1, 47, &quot;&quot;), with unselected range collapsed at (detachedForeignComment, 1) 
+FAIL detachedForeignComment.replaceData(1, 47, &quot;&quot;), with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(detachedForeignComment.length, 47, &quot;&quot;), with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) 
+FAIL detachedForeignComment.replaceData(detachedForeignComment.length, 47, &quot;&quot;), with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(1, 47, &quot;&quot;), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.replaceData(1, 47, &quot;&quot;), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(2, 47, &quot;&quot;), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.replaceData(2, 47, &quot;&quot;), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.replaceData(3, 47, &quot;&quot;), with unselected range on detachedForeignComment from 1 to 3 
+FAIL detachedForeignComment.replaceData(3, 47, &quot;&quot;), with selected range on detachedForeignComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(376, 0, &quot;foo&quot;), with unselected range on detachedXmlComment from 0 to 1 
+FAIL detachedXmlComment.replaceData(376, 0, &quot;foo&quot;), with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(0, 0, &quot;foo&quot;), with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.replaceData(0, 0, &quot;foo&quot;), with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(1, 0, &quot;foo&quot;), with unselected range collapsed at (detachedXmlComment, 1) 
+FAIL detachedXmlComment.replaceData(1, 0, &quot;foo&quot;), with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(detachedXmlComment.length, 0, &quot;foo&quot;), with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) 
+FAIL detachedXmlComment.replaceData(detachedXmlComment.length, 0, &quot;foo&quot;), with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(1, 0, &quot;foo&quot;), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.replaceData(1, 0, &quot;foo&quot;), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(2, 0, &quot;foo&quot;), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.replaceData(2, 0, &quot;foo&quot;), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(3, 0, &quot;foo&quot;), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.replaceData(3, 0, &quot;foo&quot;), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(376, 0, &quot;&quot;), with unselected range on detachedXmlComment from 0 to 1 
+FAIL detachedXmlComment.replaceData(376, 0, &quot;&quot;), with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(0, 0, &quot;&quot;), with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.replaceData(0, 0, &quot;&quot;), with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(1, 0, &quot;&quot;), with unselected range collapsed at (detachedXmlComment, 1) 
+FAIL detachedXmlComment.replaceData(1, 0, &quot;&quot;), with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(detachedXmlComment.length, 0, &quot;&quot;), with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) 
+FAIL detachedXmlComment.replaceData(detachedXmlComment.length, 0, &quot;&quot;), with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(1, 0, &quot;&quot;), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.replaceData(1, 0, &quot;&quot;), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(2, 0, &quot;&quot;), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.replaceData(2, 0, &quot;&quot;), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(3, 0, &quot;&quot;), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.replaceData(3, 0, &quot;&quot;), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(376, 1, &quot;foo&quot;), with unselected range on detachedXmlComment from 0 to 1 
+FAIL detachedXmlComment.replaceData(376, 1, &quot;foo&quot;), with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(0, 1, &quot;foo&quot;), with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.replaceData(0, 1, &quot;foo&quot;), with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(1, 1, &quot;foo&quot;), with unselected range collapsed at (detachedXmlComment, 1) 
+FAIL detachedXmlComment.replaceData(1, 1, &quot;foo&quot;), with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(detachedXmlComment.length, 1, &quot;foo&quot;), with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) 
+FAIL detachedXmlComment.replaceData(detachedXmlComment.length, 1, &quot;foo&quot;), with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(1, 1, &quot;foo&quot;), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.replaceData(1, 1, &quot;foo&quot;), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(2, 1, &quot;foo&quot;), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.replaceData(2, 1, &quot;foo&quot;), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(3, 1, &quot;foo&quot;), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.replaceData(3, 1, &quot;foo&quot;), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(376, 1, &quot;&quot;), with unselected range on detachedXmlComment from 0 to 1 
+FAIL detachedXmlComment.replaceData(376, 1, &quot;&quot;), with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(0, 1, &quot;&quot;), with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.replaceData(0, 1, &quot;&quot;), with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(1, 1, &quot;&quot;), with unselected range collapsed at (detachedXmlComment, 1) 
+FAIL detachedXmlComment.replaceData(1, 1, &quot;&quot;), with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(detachedXmlComment.length, 1, &quot;&quot;), with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) 
+FAIL detachedXmlComment.replaceData(detachedXmlComment.length, 1, &quot;&quot;), with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(1, 1, &quot;&quot;), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.replaceData(1, 1, &quot;&quot;), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(2, 1, &quot;&quot;), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.replaceData(2, 1, &quot;&quot;), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(3, 1, &quot;&quot;), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.replaceData(3, 1, &quot;&quot;), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(376, 47, &quot;foo&quot;), with unselected range on detachedXmlComment from 0 to 1 
+FAIL detachedXmlComment.replaceData(376, 47, &quot;foo&quot;), with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(0, 47, &quot;foo&quot;), with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.replaceData(0, 47, &quot;foo&quot;), with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(1, 47, &quot;foo&quot;), with unselected range collapsed at (detachedXmlComment, 1) 
+FAIL detachedXmlComment.replaceData(1, 47, &quot;foo&quot;), with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(detachedXmlComment.length, 47, &quot;foo&quot;), with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) 
+FAIL detachedXmlComment.replaceData(detachedXmlComment.length, 47, &quot;foo&quot;), with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(1, 47, &quot;foo&quot;), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.replaceData(1, 47, &quot;foo&quot;), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(2, 47, &quot;foo&quot;), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.replaceData(2, 47, &quot;foo&quot;), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(3, 47, &quot;foo&quot;), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.replaceData(3, 47, &quot;foo&quot;), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(376, 47, &quot;&quot;), with unselected range on detachedXmlComment from 0 to 1 
+FAIL detachedXmlComment.replaceData(376, 47, &quot;&quot;), with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(0, 47, &quot;&quot;), with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.replaceData(0, 47, &quot;&quot;), with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(1, 47, &quot;&quot;), with unselected range collapsed at (detachedXmlComment, 1) 
+FAIL detachedXmlComment.replaceData(1, 47, &quot;&quot;), with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(detachedXmlComment.length, 47, &quot;&quot;), with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) 
+FAIL detachedXmlComment.replaceData(detachedXmlComment.length, 47, &quot;&quot;), with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(1, 47, &quot;&quot;), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.replaceData(1, 47, &quot;&quot;), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(2, 47, &quot;&quot;), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.replaceData(2, 47, &quot;&quot;), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.replaceData(3, 47, &quot;&quot;), with unselected range on detachedXmlComment from 1 to 3 
+FAIL detachedXmlComment.replaceData(3, 47, &quot;&quot;), with selected range on detachedXmlComment from 1 to 3 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS paras[0].firstChild.replaceData(1, 0, &quot;foo&quot;), with unselected range collapsed at (paras[0], 0) 
+FAIL paras[0].firstChild.replaceData(1, 0, &quot;foo&quot;), with selected range collapsed at (paras[0], 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.replaceData(1, 0, &quot;foo&quot;), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].firstChild.replaceData(1, 0, &quot;foo&quot;), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.replaceData(1, 0, &quot;foo&quot;), with unselected range collapsed at (paras[0], 1) 
+FAIL paras[0].firstChild.replaceData(1, 0, &quot;foo&quot;), with selected range collapsed at (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.replaceData(1, 0, &quot;foo&quot;), with unselected range from (paras[0].firstChild, 1) to (paras[0], 1) 
+FAIL paras[0].firstChild.replaceData(1, 0, &quot;foo&quot;), with selected range from (paras[0].firstChild, 1) to (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.replaceData(2, 0, &quot;foo&quot;), with unselected range from (paras[0].firstChild, 1) to (paras[0], 1) 
+FAIL paras[0].firstChild.replaceData(2, 0, &quot;foo&quot;), with selected range from (paras[0].firstChild, 1) to (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.replaceData(3, 0, &quot;foo&quot;), with unselected range from (paras[0].firstChild, 1) to (paras[0], 1) 
+FAIL paras[0].firstChild.replaceData(3, 0, &quot;foo&quot;), with selected range from (paras[0].firstChild, 1) to (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.replaceData(1, 0, &quot;foo&quot;), with unselected range from (paras[0], 0) to (paras[0].firstChild, 3) 
+FAIL paras[0].firstChild.replaceData(1, 0, &quot;foo&quot;), with selected range from (paras[0], 0) to (paras[0].firstChild, 3) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb&quot; but got object &quot;Äb̈&quot;
+PASS paras[0].firstChild.replaceData(2, 0, &quot;foo&quot;), with unselected range from (paras[0], 0) to (paras[0].firstChild, 3) 
+FAIL paras[0].firstChild.replaceData(2, 0, &quot;foo&quot;), with selected range from (paras[0], 0) to (paras[0].firstChild, 3) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb&quot; but got object &quot;Äb̈&quot;
+PASS paras[0].firstChild.replaceData(3, 0, &quot;foo&quot;), with unselected range from (paras[0], 0) to (paras[0].firstChild, 3) 
+FAIL paras[0].firstChild.replaceData(3, 0, &quot;foo&quot;), with selected range from (paras[0], 0) to (paras[0].firstChild, 3) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb&quot; but got object &quot;Äb̈&quot;
+PASS paras[0].firstChild.replaceData(1, 1, &quot;foo&quot;), with unselected range collapsed at (paras[0], 0) 
+FAIL paras[0].firstChild.replaceData(1, 1, &quot;foo&quot;), with selected range collapsed at (paras[0], 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.replaceData(1, 1, &quot;foo&quot;), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].firstChild.replaceData(1, 1, &quot;foo&quot;), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.replaceData(1, 1, &quot;foo&quot;), with unselected range collapsed at (paras[0], 1) 
+FAIL paras[0].firstChild.replaceData(1, 1, &quot;foo&quot;), with selected range collapsed at (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.replaceData(1, 1, &quot;foo&quot;), with unselected range from (paras[0].firstChild, 1) to (paras[0], 1) 
+FAIL paras[0].firstChild.replaceData(1, 1, &quot;foo&quot;), with selected range from (paras[0].firstChild, 1) to (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.replaceData(2, 1, &quot;foo&quot;), with unselected range from (paras[0].firstChild, 1) to (paras[0], 1) 
+FAIL paras[0].firstChild.replaceData(2, 1, &quot;foo&quot;), with selected range from (paras[0].firstChild, 1) to (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.replaceData(3, 1, &quot;foo&quot;), with unselected range from (paras[0].firstChild, 1) to (paras[0], 1) 
+FAIL paras[0].firstChild.replaceData(3, 1, &quot;foo&quot;), with selected range from (paras[0].firstChild, 1) to (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.replaceData(1, 1, &quot;foo&quot;), with unselected range from (paras[0], 0) to (paras[0].firstChild, 3) 
+FAIL paras[0].firstChild.replaceData(1, 1, &quot;foo&quot;), with selected range from (paras[0], 0) to (paras[0].firstChild, 3) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb&quot; but got object &quot;Äb̈&quot;
+PASS paras[0].firstChild.replaceData(2, 1, &quot;foo&quot;), with unselected range from (paras[0], 0) to (paras[0].firstChild, 3) 
+FAIL paras[0].firstChild.replaceData(2, 1, &quot;foo&quot;), with selected range from (paras[0], 0) to (paras[0].firstChild, 3) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb&quot; but got object &quot;Äb̈&quot;
+PASS paras[0].firstChild.replaceData(3, 1, &quot;foo&quot;), with unselected range from (paras[0], 0) to (paras[0].firstChild, 3) 
+FAIL paras[0].firstChild.replaceData(3, 1, &quot;foo&quot;), with selected range from (paras[0], 0) to (paras[0].firstChild, 3) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb&quot; but got object &quot;Äb̈&quot;
+PASS paras[0].firstChild.replaceData(1, 47, &quot;foo&quot;), with unselected range collapsed at (paras[0], 0) 
+FAIL paras[0].firstChild.replaceData(1, 47, &quot;foo&quot;), with selected range collapsed at (paras[0], 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.replaceData(1, 47, &quot;foo&quot;), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].firstChild.replaceData(1, 47, &quot;foo&quot;), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.replaceData(1, 47, &quot;foo&quot;), with unselected range collapsed at (paras[0], 1) 
+FAIL paras[0].firstChild.replaceData(1, 47, &quot;foo&quot;), with selected range collapsed at (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.replaceData(1, 47, &quot;foo&quot;), with unselected range from (paras[0].firstChild, 1) to (paras[0], 1) 
+FAIL paras[0].firstChild.replaceData(1, 47, &quot;foo&quot;), with selected range from (paras[0].firstChild, 1) to (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.replaceData(2, 47, &quot;foo&quot;), with unselected range from (paras[0].firstChild, 1) to (paras[0], 1) 
+FAIL paras[0].firstChild.replaceData(2, 47, &quot;foo&quot;), with selected range from (paras[0].firstChild, 1) to (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.replaceData(3, 47, &quot;foo&quot;), with unselected range from (paras[0].firstChild, 1) to (paras[0], 1) 
+FAIL paras[0].firstChild.replaceData(3, 47, &quot;foo&quot;), with selected range from (paras[0].firstChild, 1) to (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.replaceData(1, 47, &quot;foo&quot;), with unselected range from (paras[0], 0) to (paras[0].firstChild, 3) 
+FAIL paras[0].firstChild.replaceData(1, 47, &quot;foo&quot;), with selected range from (paras[0], 0) to (paras[0].firstChild, 3) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb&quot; but got object &quot;Äb̈&quot;
+PASS paras[0].firstChild.replaceData(2, 47, &quot;foo&quot;), with unselected range from (paras[0], 0) to (paras[0].firstChild, 3) 
+FAIL paras[0].firstChild.replaceData(2, 47, &quot;foo&quot;), with selected range from (paras[0], 0) to (paras[0].firstChild, 3) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb&quot; but got object &quot;Äb̈&quot;
+PASS paras[0].firstChild.replaceData(3, 47, &quot;foo&quot;), with unselected range from (paras[0], 0) to (paras[0].firstChild, 3) 
+FAIL paras[0].firstChild.replaceData(3, 47, &quot;foo&quot;), with selected range from (paras[0], 0) to (paras[0].firstChild, 3) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb&quot; but got object &quot;Äb̈&quot;
+PASS paras[0].firstChild.data = &quot;&quot;, with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.data = &quot;&quot;, with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.data = &quot;foo&quot;, with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.data = &quot;foo&quot;, with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.data = paras[0].firstChild.data, with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.data = paras[0].firstChild.data, with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.data += &quot;&quot;, with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.data += &quot;&quot;, with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.data += &quot;foo&quot;, with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.data += &quot;foo&quot;, with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.data += paras[0].firstChild.data, with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.data += paras[0].firstChild.data, with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.textContent = &quot;&quot;, with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.textContent = &quot;&quot;, with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.textContent = &quot;foo&quot;, with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.textContent = &quot;foo&quot;, with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.textContent = paras[0].firstChild.textContent, with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.textContent = paras[0].firstChild.textContent, with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.textContent += &quot;&quot;, with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.textContent += &quot;&quot;, with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.textContent += &quot;foo&quot;, with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.textContent += &quot;foo&quot;, with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.textContent += paras[0].firstChild.textContent, with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.textContent += paras[0].firstChild.textContent, with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.nodeValue = &quot;&quot;, with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.nodeValue = &quot;&quot;, with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.nodeValue = &quot;foo&quot;, with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.nodeValue = &quot;foo&quot;, with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.nodeValue = paras[0].firstChild.nodeValue, with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.nodeValue = paras[0].firstChild.nodeValue, with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.nodeValue += &quot;&quot;, with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.nodeValue += &quot;&quot;, with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.nodeValue += &quot;foo&quot;, with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.nodeValue += &quot;foo&quot;, with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.nodeValue += paras[0].firstChild.nodeValue, with unselected range collapsed at (paras[0].firstChild, 0) 
+FAIL paras[0].firstChild.nodeValue += paras[0].firstChild.nodeValue, with selected range collapsed at (paras[0].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.data = &quot;&quot;, with unselected range on paras[0].firstChild from 0 to 1 
+FAIL paras[0].firstChild.data = &quot;&quot;, with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+PASS paras[0].firstChild.data = &quot;foo&quot;, with unselected range on paras[0].firstChild from 0 to 1 
+FAIL paras[0].firstChild.data = &quot;foo&quot;, with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+FAIL paras[0].firstChild.data = paras[0].firstChild.data, with unselected range on paras[0].firstChild from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL paras[0].firstChild.data = paras[0].firstChild.data, with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+FAIL paras[0].firstChild.data += &quot;&quot;, with unselected range on paras[0].firstChild from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL paras[0].firstChild.data += &quot;&quot;, with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+PASS paras[0].firstChild.data += &quot;foo&quot;, with unselected range on paras[0].firstChild from 0 to 1 
+FAIL paras[0].firstChild.data += &quot;foo&quot;, with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+PASS paras[0].firstChild.data += paras[0].firstChild.data, with unselected range on paras[0].firstChild from 0 to 1 
+FAIL paras[0].firstChild.data += paras[0].firstChild.data, with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+PASS paras[0].firstChild.textContent = &quot;&quot;, with unselected range on paras[0].firstChild from 0 to 1 
+FAIL paras[0].firstChild.textContent = &quot;&quot;, with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+PASS paras[0].firstChild.textContent = &quot;foo&quot;, with unselected range on paras[0].firstChild from 0 to 1 
+FAIL paras[0].firstChild.textContent = &quot;foo&quot;, with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+FAIL paras[0].firstChild.textContent = paras[0].firstChild.textContent, with unselected range on paras[0].firstChild from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL paras[0].firstChild.textContent = paras[0].firstChild.textContent, with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+FAIL paras[0].firstChild.textContent += &quot;&quot;, with unselected range on paras[0].firstChild from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL paras[0].firstChild.textContent += &quot;&quot;, with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+PASS paras[0].firstChild.textContent += &quot;foo&quot;, with unselected range on paras[0].firstChild from 0 to 1 
+FAIL paras[0].firstChild.textContent += &quot;foo&quot;, with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+PASS paras[0].firstChild.textContent += paras[0].firstChild.textContent, with unselected range on paras[0].firstChild from 0 to 1 
+FAIL paras[0].firstChild.textContent += paras[0].firstChild.textContent, with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+PASS paras[0].firstChild.nodeValue = &quot;&quot;, with unselected range on paras[0].firstChild from 0 to 1 
+FAIL paras[0].firstChild.nodeValue = &quot;&quot;, with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+PASS paras[0].firstChild.nodeValue = &quot;foo&quot;, with unselected range on paras[0].firstChild from 0 to 1 
+FAIL paras[0].firstChild.nodeValue = &quot;foo&quot;, with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+FAIL paras[0].firstChild.nodeValue = paras[0].firstChild.nodeValue, with unselected range on paras[0].firstChild from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL paras[0].firstChild.nodeValue = paras[0].firstChild.nodeValue, with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+FAIL paras[0].firstChild.nodeValue += &quot;&quot;, with unselected range on paras[0].firstChild from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL paras[0].firstChild.nodeValue += &quot;&quot;, with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+PASS paras[0].firstChild.nodeValue += &quot;foo&quot;, with unselected range on paras[0].firstChild from 0 to 1 
+FAIL paras[0].firstChild.nodeValue += &quot;foo&quot;, with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+PASS paras[0].firstChild.nodeValue += paras[0].firstChild.nodeValue, with unselected range on paras[0].firstChild from 0 to 1 
+FAIL paras[0].firstChild.nodeValue += paras[0].firstChild.nodeValue, with selected range on paras[0].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;A&quot; but got object &quot;Ä&quot;
+PASS paras[0].firstChild.data = &quot;&quot;, with unselected range collapsed at (paras[0].firstChild, 1) 
+FAIL paras[0].firstChild.data = &quot;&quot;, with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.data = &quot;foo&quot;, with unselected range collapsed at (paras[0].firstChild, 1) 
+FAIL paras[0].firstChild.data = &quot;foo&quot;, with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL paras[0].firstChild.data = paras[0].firstChild.data, with unselected range collapsed at (paras[0].firstChild, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL paras[0].firstChild.data = paras[0].firstChild.data, with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL paras[0].firstChild.data += &quot;&quot;, with unselected range collapsed at (paras[0].firstChild, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL paras[0].firstChild.data += &quot;&quot;, with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.data += &quot;foo&quot;, with unselected range collapsed at (paras[0].firstChild, 1) 
+FAIL paras[0].firstChild.data += &quot;foo&quot;, with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.data += paras[0].firstChild.data, with unselected range collapsed at (paras[0].firstChild, 1) 
+FAIL paras[0].firstChild.data += paras[0].firstChild.data, with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.textContent = &quot;&quot;, with unselected range collapsed at (paras[0].firstChild, 1) 
+FAIL paras[0].firstChild.textContent = &quot;&quot;, with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.textContent = &quot;foo&quot;, with unselected range collapsed at (paras[0].firstChild, 1) 
+FAIL paras[0].firstChild.textContent = &quot;foo&quot;, with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL paras[0].firstChild.textContent = paras[0].firstChild.textContent, with unselected range collapsed at (paras[0].firstChild, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL paras[0].firstChild.textContent = paras[0].firstChild.textContent, with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL paras[0].firstChild.textContent += &quot;&quot;, with unselected range collapsed at (paras[0].firstChild, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL paras[0].firstChild.textContent += &quot;&quot;, with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.textContent += &quot;foo&quot;, with unselected range collapsed at (paras[0].firstChild, 1) 
+FAIL paras[0].firstChild.textContent += &quot;foo&quot;, with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.textContent += paras[0].firstChild.textContent, with unselected range collapsed at (paras[0].firstChild, 1) 
+FAIL paras[0].firstChild.textContent += paras[0].firstChild.textContent, with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.nodeValue = &quot;&quot;, with unselected range collapsed at (paras[0].firstChild, 1) 
+FAIL paras[0].firstChild.nodeValue = &quot;&quot;, with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.nodeValue = &quot;foo&quot;, with unselected range collapsed at (paras[0].firstChild, 1) 
+FAIL paras[0].firstChild.nodeValue = &quot;foo&quot;, with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL paras[0].firstChild.nodeValue = paras[0].firstChild.nodeValue, with unselected range collapsed at (paras[0].firstChild, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL paras[0].firstChild.nodeValue = paras[0].firstChild.nodeValue, with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL paras[0].firstChild.nodeValue += &quot;&quot;, with unselected range collapsed at (paras[0].firstChild, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL paras[0].firstChild.nodeValue += &quot;&quot;, with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.nodeValue += &quot;foo&quot;, with unselected range collapsed at (paras[0].firstChild, 1) 
+FAIL paras[0].firstChild.nodeValue += &quot;foo&quot;, with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.nodeValue += paras[0].firstChild.nodeValue, with unselected range collapsed at (paras[0].firstChild, 1) 
+FAIL paras[0].firstChild.nodeValue += paras[0].firstChild.nodeValue, with selected range collapsed at (paras[0].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.data = &quot;&quot;, with unselected range on paras[0].firstChild from 0 to paras[0].firstChild.length 
+FAIL paras[0].firstChild.data = &quot;&quot;, with selected range on paras[0].firstChild from 0 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.data = &quot;foo&quot;, with unselected range on paras[0].firstChild from 0 to paras[0].firstChild.length 
+FAIL paras[0].firstChild.data = &quot;foo&quot;, with selected range on paras[0].firstChild from 0 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+FAIL paras[0].firstChild.data = paras[0].firstChild.data, with unselected range on paras[0].firstChild from 0 to paras[0].firstChild.length assert_equals: Wrong end offset expected 0 but got 17
+FAIL paras[0].firstChild.data = paras[0].firstChild.data, with selected range on paras[0].firstChild from 0 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+FAIL paras[0].firstChild.data += &quot;&quot;, with unselected range on paras[0].firstChild from 0 to paras[0].firstChild.length assert_equals: Wrong end offset expected 0 but got 17
+FAIL paras[0].firstChild.data += &quot;&quot;, with selected range on paras[0].firstChild from 0 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.data += &quot;foo&quot;, with unselected range on paras[0].firstChild from 0 to paras[0].firstChild.length 
+FAIL paras[0].firstChild.data += &quot;foo&quot;, with selected range on paras[0].firstChild from 0 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.data += paras[0].firstChild.data, with unselected range on paras[0].firstChild from 0 to paras[0].firstChild.length 
+FAIL paras[0].firstChild.data += paras[0].firstChild.data, with selected range on paras[0].firstChild from 0 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.textContent = &quot;&quot;, with unselected range on paras[0].firstChild from 0 to paras[0].firstChild.length 
+FAIL paras[0].firstChild.textContent = &quot;&quot;, with selected range on paras[0].firstChild from 0 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.textContent = &quot;foo&quot;, with unselected range on paras[0].firstChild from 0 to paras[0].firstChild.length 
+FAIL paras[0].firstChild.textContent = &quot;foo&quot;, with selected range on paras[0].firstChild from 0 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+FAIL paras[0].firstChild.textContent = paras[0].firstChild.textContent, with unselected range on paras[0].firstChild from 0 to paras[0].firstChild.length assert_equals: Wrong end offset expected 0 but got 17
+FAIL paras[0].firstChild.textContent = paras[0].firstChild.textContent, with selected range on paras[0].firstChild from 0 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+FAIL paras[0].firstChild.textContent += &quot;&quot;, with unselected range on paras[0].firstChild from 0 to paras[0].firstChild.length assert_equals: Wrong end offset expected 0 but got 17
+FAIL paras[0].firstChild.textContent += &quot;&quot;, with selected range on paras[0].firstChild from 0 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.textContent += &quot;foo&quot;, with unselected range on paras[0].firstChild from 0 to paras[0].firstChild.length 
+FAIL paras[0].firstChild.textContent += &quot;foo&quot;, with selected range on paras[0].firstChild from 0 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.textContent += paras[0].firstChild.textContent, with unselected range on paras[0].firstChild from 0 to paras[0].firstChild.length 
+FAIL paras[0].firstChild.textContent += paras[0].firstChild.textContent, with selected range on paras[0].firstChild from 0 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.nodeValue = &quot;&quot;, with unselected range on paras[0].firstChild from 0 to paras[0].firstChild.length 
+FAIL paras[0].firstChild.nodeValue = &quot;&quot;, with selected range on paras[0].firstChild from 0 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.nodeValue = &quot;foo&quot;, with unselected range on paras[0].firstChild from 0 to paras[0].firstChild.length 
+FAIL paras[0].firstChild.nodeValue = &quot;foo&quot;, with selected range on paras[0].firstChild from 0 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+FAIL paras[0].firstChild.nodeValue = paras[0].firstChild.nodeValue, with unselected range on paras[0].firstChild from 0 to paras[0].firstChild.length assert_equals: Wrong end offset expected 0 but got 17
+FAIL paras[0].firstChild.nodeValue = paras[0].firstChild.nodeValue, with selected range on paras[0].firstChild from 0 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+FAIL paras[0].firstChild.nodeValue += &quot;&quot;, with unselected range on paras[0].firstChild from 0 to paras[0].firstChild.length assert_equals: Wrong end offset expected 0 but got 17
+FAIL paras[0].firstChild.nodeValue += &quot;&quot;, with selected range on paras[0].firstChild from 0 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.nodeValue += &quot;foo&quot;, with unselected range on paras[0].firstChild from 0 to paras[0].firstChild.length 
+FAIL paras[0].firstChild.nodeValue += &quot;foo&quot;, with selected range on paras[0].firstChild from 0 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.nodeValue += paras[0].firstChild.nodeValue, with unselected range on paras[0].firstChild from 0 to paras[0].firstChild.length 
+FAIL paras[0].firstChild.nodeValue += paras[0].firstChild.nodeValue, with selected range on paras[0].firstChild from 0 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.data = &quot;&quot;, with unselected range on paras[0].firstChild from 1 to paras[0].firstChild.length 
+FAIL paras[0].firstChild.data = &quot;&quot;, with selected range on paras[0].firstChild from 1 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.data = &quot;foo&quot;, with unselected range on paras[0].firstChild from 1 to paras[0].firstChild.length 
+FAIL paras[0].firstChild.data = &quot;foo&quot;, with selected range on paras[0].firstChild from 1 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+FAIL paras[0].firstChild.data = paras[0].firstChild.data, with unselected range on paras[0].firstChild from 1 to paras[0].firstChild.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL paras[0].firstChild.data = paras[0].firstChild.data, with selected range on paras[0].firstChild from 1 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+FAIL paras[0].firstChild.data += &quot;&quot;, with unselected range on paras[0].firstChild from 1 to paras[0].firstChild.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL paras[0].firstChild.data += &quot;&quot;, with selected range on paras[0].firstChild from 1 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.data += &quot;foo&quot;, with unselected range on paras[0].firstChild from 1 to paras[0].firstChild.length 
+FAIL paras[0].firstChild.data += &quot;foo&quot;, with selected range on paras[0].firstChild from 1 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.data += paras[0].firstChild.data, with unselected range on paras[0].firstChild from 1 to paras[0].firstChild.length 
+FAIL paras[0].firstChild.data += paras[0].firstChild.data, with selected range on paras[0].firstChild from 1 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.textContent = &quot;&quot;, with unselected range on paras[0].firstChild from 1 to paras[0].firstChild.length 
+FAIL paras[0].firstChild.textContent = &quot;&quot;, with selected range on paras[0].firstChild from 1 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.textContent = &quot;foo&quot;, with unselected range on paras[0].firstChild from 1 to paras[0].firstChild.length 
+FAIL paras[0].firstChild.textContent = &quot;foo&quot;, with selected range on paras[0].firstChild from 1 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+FAIL paras[0].firstChild.textContent = paras[0].firstChild.textContent, with unselected range on paras[0].firstChild from 1 to paras[0].firstChild.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL paras[0].firstChild.textContent = paras[0].firstChild.textContent, with selected range on paras[0].firstChild from 1 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+FAIL paras[0].firstChild.textContent += &quot;&quot;, with unselected range on paras[0].firstChild from 1 to paras[0].firstChild.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL paras[0].firstChild.textContent += &quot;&quot;, with selected range on paras[0].firstChild from 1 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.textContent += &quot;foo&quot;, with unselected range on paras[0].firstChild from 1 to paras[0].firstChild.length 
+FAIL paras[0].firstChild.textContent += &quot;foo&quot;, with selected range on paras[0].firstChild from 1 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.textContent += paras[0].firstChild.textContent, with unselected range on paras[0].firstChild from 1 to paras[0].firstChild.length 
+FAIL paras[0].firstChild.textContent += paras[0].firstChild.textContent, with selected range on paras[0].firstChild from 1 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.nodeValue = &quot;&quot;, with unselected range on paras[0].firstChild from 1 to paras[0].firstChild.length 
+FAIL paras[0].firstChild.nodeValue = &quot;&quot;, with selected range on paras[0].firstChild from 1 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.nodeValue = &quot;foo&quot;, with unselected range on paras[0].firstChild from 1 to paras[0].firstChild.length 
+FAIL paras[0].firstChild.nodeValue = &quot;foo&quot;, with selected range on paras[0].firstChild from 1 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+FAIL paras[0].firstChild.nodeValue = paras[0].firstChild.nodeValue, with unselected range on paras[0].firstChild from 1 to paras[0].firstChild.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL paras[0].firstChild.nodeValue = paras[0].firstChild.nodeValue, with selected range on paras[0].firstChild from 1 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+FAIL paras[0].firstChild.nodeValue += &quot;&quot;, with unselected range on paras[0].firstChild from 1 to paras[0].firstChild.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL paras[0].firstChild.nodeValue += &quot;&quot;, with selected range on paras[0].firstChild from 1 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.nodeValue += &quot;foo&quot;, with unselected range on paras[0].firstChild from 1 to paras[0].firstChild.length 
+FAIL paras[0].firstChild.nodeValue += &quot;foo&quot;, with selected range on paras[0].firstChild from 1 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.nodeValue += paras[0].firstChild.nodeValue, with unselected range on paras[0].firstChild from 1 to paras[0].firstChild.length 
+FAIL paras[0].firstChild.nodeValue += paras[0].firstChild.nodeValue, with selected range on paras[0].firstChild from 1 to paras[0].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;̈b̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;b̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].firstChild.data = &quot;&quot;, with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) 
+FAIL paras[0].firstChild.data = &quot;&quot;, with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.data = &quot;foo&quot;, with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) 
+FAIL paras[0].firstChild.data = &quot;foo&quot;, with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL paras[0].firstChild.data = paras[0].firstChild.data, with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Wrong start offset expected 0 but got 17
+FAIL paras[0].firstChild.data = paras[0].firstChild.data, with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL paras[0].firstChild.data += &quot;&quot;, with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Wrong start offset expected 0 but got 17
+FAIL paras[0].firstChild.data += &quot;&quot;, with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.data += &quot;foo&quot;, with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) 
+FAIL paras[0].firstChild.data += &quot;foo&quot;, with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.data += paras[0].firstChild.data, with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) 
+FAIL paras[0].firstChild.data += paras[0].firstChild.data, with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.textContent = &quot;&quot;, with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) 
+FAIL paras[0].firstChild.textContent = &quot;&quot;, with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.textContent = &quot;foo&quot;, with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) 
+FAIL paras[0].firstChild.textContent = &quot;foo&quot;, with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL paras[0].firstChild.textContent = paras[0].firstChild.textContent, with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Wrong start offset expected 0 but got 17
+FAIL paras[0].firstChild.textContent = paras[0].firstChild.textContent, with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL paras[0].firstChild.textContent += &quot;&quot;, with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Wrong start offset expected 0 but got 17
+FAIL paras[0].firstChild.textContent += &quot;&quot;, with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.textContent += &quot;foo&quot;, with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) 
+FAIL paras[0].firstChild.textContent += &quot;foo&quot;, with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.textContent += paras[0].firstChild.textContent, with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) 
+FAIL paras[0].firstChild.textContent += paras[0].firstChild.textContent, with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.nodeValue = &quot;&quot;, with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) 
+FAIL paras[0].firstChild.nodeValue = &quot;&quot;, with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.nodeValue = &quot;foo&quot;, with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) 
+FAIL paras[0].firstChild.nodeValue = &quot;foo&quot;, with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL paras[0].firstChild.nodeValue = paras[0].firstChild.nodeValue, with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Wrong start offset expected 0 but got 17
+FAIL paras[0].firstChild.nodeValue = paras[0].firstChild.nodeValue, with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL paras[0].firstChild.nodeValue += &quot;&quot;, with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Wrong start offset expected 0 but got 17
+FAIL paras[0].firstChild.nodeValue += &quot;&quot;, with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.nodeValue += &quot;foo&quot;, with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) 
+FAIL paras[0].firstChild.nodeValue += &quot;foo&quot;, with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].firstChild.nodeValue += paras[0].firstChild.nodeValue, with unselected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) 
+FAIL paras[0].firstChild.nodeValue += paras[0].firstChild.nodeValue, with selected range collapsed at (paras[0].firstChild, paras[0].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.data = &quot;&quot;, with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.data = &quot;&quot;, with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.data = &quot;foo&quot;, with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.data = &quot;foo&quot;, with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.data = paras[1].firstChild.data, with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.data = paras[1].firstChild.data, with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.data += &quot;&quot;, with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.data += &quot;&quot;, with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.data += &quot;foo&quot;, with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.data += &quot;foo&quot;, with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.data += paras[1].firstChild.data, with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.data += paras[1].firstChild.data, with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.textContent = &quot;&quot;, with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.textContent = &quot;&quot;, with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.textContent = &quot;foo&quot;, with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.textContent = &quot;foo&quot;, with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.textContent = paras[1].firstChild.textContent, with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.textContent = paras[1].firstChild.textContent, with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.textContent += &quot;&quot;, with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.textContent += &quot;&quot;, with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.textContent += &quot;foo&quot;, with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.textContent += &quot;foo&quot;, with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.textContent += paras[1].firstChild.textContent, with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.textContent += paras[1].firstChild.textContent, with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.nodeValue = &quot;&quot;, with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.nodeValue = &quot;&quot;, with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.nodeValue = &quot;foo&quot;, with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.nodeValue = &quot;foo&quot;, with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.nodeValue = paras[1].firstChild.nodeValue, with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.nodeValue = paras[1].firstChild.nodeValue, with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.nodeValue += &quot;&quot;, with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.nodeValue += &quot;&quot;, with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.nodeValue += &quot;foo&quot;, with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.nodeValue += &quot;foo&quot;, with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.nodeValue += paras[1].firstChild.nodeValue, with unselected range collapsed at (paras[1].firstChild, 0) 
+FAIL paras[1].firstChild.nodeValue += paras[1].firstChild.nodeValue, with selected range collapsed at (paras[1].firstChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.data = &quot;&quot;, with unselected range on paras[1].firstChild from 0 to 1 
+FAIL paras[1].firstChild.data = &quot;&quot;, with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.data = &quot;foo&quot;, with unselected range on paras[1].firstChild from 0 to 1 
+FAIL paras[1].firstChild.data = &quot;foo&quot;, with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.data = paras[1].firstChild.data, with unselected range on paras[1].firstChild from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL paras[1].firstChild.data = paras[1].firstChild.data, with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.data += &quot;&quot;, with unselected range on paras[1].firstChild from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL paras[1].firstChild.data += &quot;&quot;, with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.data += &quot;foo&quot;, with unselected range on paras[1].firstChild from 0 to 1 
+FAIL paras[1].firstChild.data += &quot;foo&quot;, with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.data += paras[1].firstChild.data, with unselected range on paras[1].firstChild from 0 to 1 
+FAIL paras[1].firstChild.data += paras[1].firstChild.data, with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.textContent = &quot;&quot;, with unselected range on paras[1].firstChild from 0 to 1 
+FAIL paras[1].firstChild.textContent = &quot;&quot;, with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.textContent = &quot;foo&quot;, with unselected range on paras[1].firstChild from 0 to 1 
+FAIL paras[1].firstChild.textContent = &quot;foo&quot;, with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.textContent = paras[1].firstChild.textContent, with unselected range on paras[1].firstChild from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL paras[1].firstChild.textContent = paras[1].firstChild.textContent, with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.textContent += &quot;&quot;, with unselected range on paras[1].firstChild from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL paras[1].firstChild.textContent += &quot;&quot;, with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.textContent += &quot;foo&quot;, with unselected range on paras[1].firstChild from 0 to 1 
+FAIL paras[1].firstChild.textContent += &quot;foo&quot;, with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.textContent += paras[1].firstChild.textContent, with unselected range on paras[1].firstChild from 0 to 1 
+FAIL paras[1].firstChild.textContent += paras[1].firstChild.textContent, with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.nodeValue = &quot;&quot;, with unselected range on paras[1].firstChild from 0 to 1 
+FAIL paras[1].firstChild.nodeValue = &quot;&quot;, with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.nodeValue = &quot;foo&quot;, with unselected range on paras[1].firstChild from 0 to 1 
+FAIL paras[1].firstChild.nodeValue = &quot;foo&quot;, with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.nodeValue = paras[1].firstChild.nodeValue, with unselected range on paras[1].firstChild from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL paras[1].firstChild.nodeValue = paras[1].firstChild.nodeValue, with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.nodeValue += &quot;&quot;, with unselected range on paras[1].firstChild from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL paras[1].firstChild.nodeValue += &quot;&quot;, with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.nodeValue += &quot;foo&quot;, with unselected range on paras[1].firstChild from 0 to 1 
+FAIL paras[1].firstChild.nodeValue += &quot;foo&quot;, with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.nodeValue += paras[1].firstChild.nodeValue, with unselected range on paras[1].firstChild from 0 to 1 
+FAIL paras[1].firstChild.nodeValue += paras[1].firstChild.nodeValue, with selected range on paras[1].firstChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;I&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.data = &quot;&quot;, with unselected range collapsed at (paras[1].firstChild, 1) 
+FAIL paras[1].firstChild.data = &quot;&quot;, with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.data = &quot;foo&quot;, with unselected range collapsed at (paras[1].firstChild, 1) 
+FAIL paras[1].firstChild.data = &quot;foo&quot;, with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.data = paras[1].firstChild.data, with unselected range collapsed at (paras[1].firstChild, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL paras[1].firstChild.data = paras[1].firstChild.data, with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.data += &quot;&quot;, with unselected range collapsed at (paras[1].firstChild, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL paras[1].firstChild.data += &quot;&quot;, with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.data += &quot;foo&quot;, with unselected range collapsed at (paras[1].firstChild, 1) 
+FAIL paras[1].firstChild.data += &quot;foo&quot;, with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.data += paras[1].firstChild.data, with unselected range collapsed at (paras[1].firstChild, 1) 
+FAIL paras[1].firstChild.data += paras[1].firstChild.data, with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.textContent = &quot;&quot;, with unselected range collapsed at (paras[1].firstChild, 1) 
+FAIL paras[1].firstChild.textContent = &quot;&quot;, with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.textContent = &quot;foo&quot;, with unselected range collapsed at (paras[1].firstChild, 1) 
+FAIL paras[1].firstChild.textContent = &quot;foo&quot;, with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.textContent = paras[1].firstChild.textContent, with unselected range collapsed at (paras[1].firstChild, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL paras[1].firstChild.textContent = paras[1].firstChild.textContent, with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.textContent += &quot;&quot;, with unselected range collapsed at (paras[1].firstChild, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL paras[1].firstChild.textContent += &quot;&quot;, with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.textContent += &quot;foo&quot;, with unselected range collapsed at (paras[1].firstChild, 1) 
+FAIL paras[1].firstChild.textContent += &quot;foo&quot;, with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.textContent += paras[1].firstChild.textContent, with unselected range collapsed at (paras[1].firstChild, 1) 
+FAIL paras[1].firstChild.textContent += paras[1].firstChild.textContent, with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.nodeValue = &quot;&quot;, with unselected range collapsed at (paras[1].firstChild, 1) 
+FAIL paras[1].firstChild.nodeValue = &quot;&quot;, with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.nodeValue = &quot;foo&quot;, with unselected range collapsed at (paras[1].firstChild, 1) 
+FAIL paras[1].firstChild.nodeValue = &quot;foo&quot;, with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.nodeValue = paras[1].firstChild.nodeValue, with unselected range collapsed at (paras[1].firstChild, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL paras[1].firstChild.nodeValue = paras[1].firstChild.nodeValue, with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.nodeValue += &quot;&quot;, with unselected range collapsed at (paras[1].firstChild, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL paras[1].firstChild.nodeValue += &quot;&quot;, with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.nodeValue += &quot;foo&quot;, with unselected range collapsed at (paras[1].firstChild, 1) 
+FAIL paras[1].firstChild.nodeValue += &quot;foo&quot;, with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.nodeValue += paras[1].firstChild.nodeValue, with unselected range collapsed at (paras[1].firstChild, 1) 
+FAIL paras[1].firstChild.nodeValue += paras[1].firstChild.nodeValue, with selected range collapsed at (paras[1].firstChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.data = &quot;&quot;, with unselected range on paras[1].firstChild from 0 to paras[1].firstChild.length 
+FAIL paras[1].firstChild.data = &quot;&quot;, with selected range on paras[1].firstChild from 0 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ijklmnop
+&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.data = &quot;foo&quot;, with unselected range on paras[1].firstChild from 0 to paras[1].firstChild.length 
+FAIL paras[1].firstChild.data = &quot;foo&quot;, with selected range on paras[1].firstChild from 0 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ijklmnop
+&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.data = paras[1].firstChild.data, with unselected range on paras[1].firstChild from 0 to paras[1].firstChild.length assert_equals: Wrong end offset expected 0 but got 9
+FAIL paras[1].firstChild.data = paras[1].firstChild.data, with selected range on paras[1].firstChild from 0 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ijklmnop
+&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.data += &quot;&quot;, with unselected range on paras[1].firstChild from 0 to paras[1].firstChild.length assert_equals: Wrong end offset expected 0 but got 9
+FAIL paras[1].firstChild.data += &quot;&quot;, with selected range on paras[1].firstChild from 0 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ijklmnop
+&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.data += &quot;foo&quot;, with unselected range on paras[1].firstChild from 0 to paras[1].firstChild.length 
+FAIL paras[1].firstChild.data += &quot;foo&quot;, with selected range on paras[1].firstChild from 0 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ijklmnop
+&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.data += paras[1].firstChild.data, with unselected range on paras[1].firstChild from 0 to paras[1].firstChild.length 
+FAIL paras[1].firstChild.data += paras[1].firstChild.data, with selected range on paras[1].firstChild from 0 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ijklmnop
+&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.textContent = &quot;&quot;, with unselected range on paras[1].firstChild from 0 to paras[1].firstChild.length 
+FAIL paras[1].firstChild.textContent = &quot;&quot;, with selected range on paras[1].firstChild from 0 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ijklmnop
+&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.textContent = &quot;foo&quot;, with unselected range on paras[1].firstChild from 0 to paras[1].firstChild.length 
+FAIL paras[1].firstChild.textContent = &quot;foo&quot;, with selected range on paras[1].firstChild from 0 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ijklmnop
+&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.textContent = paras[1].firstChild.textContent, with unselected range on paras[1].firstChild from 0 to paras[1].firstChild.length assert_equals: Wrong end offset expected 0 but got 9
+FAIL paras[1].firstChild.textContent = paras[1].firstChild.textContent, with selected range on paras[1].firstChild from 0 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ijklmnop
+&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.textContent += &quot;&quot;, with unselected range on paras[1].firstChild from 0 to paras[1].firstChild.length assert_equals: Wrong end offset expected 0 but got 9
+FAIL paras[1].firstChild.textContent += &quot;&quot;, with selected range on paras[1].firstChild from 0 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ijklmnop
+&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.textContent += &quot;foo&quot;, with unselected range on paras[1].firstChild from 0 to paras[1].firstChild.length 
+FAIL paras[1].firstChild.textContent += &quot;foo&quot;, with selected range on paras[1].firstChild from 0 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ijklmnop
+&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.textContent += paras[1].firstChild.textContent, with unselected range on paras[1].firstChild from 0 to paras[1].firstChild.length 
+FAIL paras[1].firstChild.textContent += paras[1].firstChild.textContent, with selected range on paras[1].firstChild from 0 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ijklmnop
+&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.nodeValue = &quot;&quot;, with unselected range on paras[1].firstChild from 0 to paras[1].firstChild.length 
+FAIL paras[1].firstChild.nodeValue = &quot;&quot;, with selected range on paras[1].firstChild from 0 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ijklmnop
+&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.nodeValue = &quot;foo&quot;, with unselected range on paras[1].firstChild from 0 to paras[1].firstChild.length 
+FAIL paras[1].firstChild.nodeValue = &quot;foo&quot;, with selected range on paras[1].firstChild from 0 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ijklmnop
+&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.nodeValue = paras[1].firstChild.nodeValue, with unselected range on paras[1].firstChild from 0 to paras[1].firstChild.length assert_equals: Wrong end offset expected 0 but got 9
+FAIL paras[1].firstChild.nodeValue = paras[1].firstChild.nodeValue, with selected range on paras[1].firstChild from 0 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ijklmnop
+&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.nodeValue += &quot;&quot;, with unselected range on paras[1].firstChild from 0 to paras[1].firstChild.length assert_equals: Wrong end offset expected 0 but got 9
+FAIL paras[1].firstChild.nodeValue += &quot;&quot;, with selected range on paras[1].firstChild from 0 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ijklmnop
+&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.nodeValue += &quot;foo&quot;, with unselected range on paras[1].firstChild from 0 to paras[1].firstChild.length 
+FAIL paras[1].firstChild.nodeValue += &quot;foo&quot;, with selected range on paras[1].firstChild from 0 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ijklmnop
+&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.nodeValue += paras[1].firstChild.nodeValue, with unselected range on paras[1].firstChild from 0 to paras[1].firstChild.length 
+FAIL paras[1].firstChild.nodeValue += paras[1].firstChild.nodeValue, with selected range on paras[1].firstChild from 0 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ijklmnop
+&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.data = &quot;&quot;, with unselected range on paras[1].firstChild from 1 to paras[1].firstChild.length 
+FAIL paras[1].firstChild.data = &quot;&quot;, with selected range on paras[1].firstChild from 1 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jklmnop
+&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.data = &quot;foo&quot;, with unselected range on paras[1].firstChild from 1 to paras[1].firstChild.length 
+FAIL paras[1].firstChild.data = &quot;foo&quot;, with selected range on paras[1].firstChild from 1 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jklmnop
+&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.data = paras[1].firstChild.data, with unselected range on paras[1].firstChild from 1 to paras[1].firstChild.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL paras[1].firstChild.data = paras[1].firstChild.data, with selected range on paras[1].firstChild from 1 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jklmnop
+&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.data += &quot;&quot;, with unselected range on paras[1].firstChild from 1 to paras[1].firstChild.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL paras[1].firstChild.data += &quot;&quot;, with selected range on paras[1].firstChild from 1 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jklmnop
+&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.data += &quot;foo&quot;, with unselected range on paras[1].firstChild from 1 to paras[1].firstChild.length 
+FAIL paras[1].firstChild.data += &quot;foo&quot;, with selected range on paras[1].firstChild from 1 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jklmnop
+&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.data += paras[1].firstChild.data, with unselected range on paras[1].firstChild from 1 to paras[1].firstChild.length 
+FAIL paras[1].firstChild.data += paras[1].firstChild.data, with selected range on paras[1].firstChild from 1 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jklmnop
+&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.textContent = &quot;&quot;, with unselected range on paras[1].firstChild from 1 to paras[1].firstChild.length 
+FAIL paras[1].firstChild.textContent = &quot;&quot;, with selected range on paras[1].firstChild from 1 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jklmnop
+&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.textContent = &quot;foo&quot;, with unselected range on paras[1].firstChild from 1 to paras[1].firstChild.length 
+FAIL paras[1].firstChild.textContent = &quot;foo&quot;, with selected range on paras[1].firstChild from 1 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jklmnop
+&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.textContent = paras[1].firstChild.textContent, with unselected range on paras[1].firstChild from 1 to paras[1].firstChild.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL paras[1].firstChild.textContent = paras[1].firstChild.textContent, with selected range on paras[1].firstChild from 1 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jklmnop
+&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.textContent += &quot;&quot;, with unselected range on paras[1].firstChild from 1 to paras[1].firstChild.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL paras[1].firstChild.textContent += &quot;&quot;, with selected range on paras[1].firstChild from 1 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jklmnop
+&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.textContent += &quot;foo&quot;, with unselected range on paras[1].firstChild from 1 to paras[1].firstChild.length 
+FAIL paras[1].firstChild.textContent += &quot;foo&quot;, with selected range on paras[1].firstChild from 1 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jklmnop
+&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.textContent += paras[1].firstChild.textContent, with unselected range on paras[1].firstChild from 1 to paras[1].firstChild.length 
+FAIL paras[1].firstChild.textContent += paras[1].firstChild.textContent, with selected range on paras[1].firstChild from 1 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jklmnop
+&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.nodeValue = &quot;&quot;, with unselected range on paras[1].firstChild from 1 to paras[1].firstChild.length 
+FAIL paras[1].firstChild.nodeValue = &quot;&quot;, with selected range on paras[1].firstChild from 1 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jklmnop
+&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.nodeValue = &quot;foo&quot;, with unselected range on paras[1].firstChild from 1 to paras[1].firstChild.length 
+FAIL paras[1].firstChild.nodeValue = &quot;foo&quot;, with selected range on paras[1].firstChild from 1 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jklmnop
+&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.nodeValue = paras[1].firstChild.nodeValue, with unselected range on paras[1].firstChild from 1 to paras[1].firstChild.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL paras[1].firstChild.nodeValue = paras[1].firstChild.nodeValue, with selected range on paras[1].firstChild from 1 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jklmnop
+&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.nodeValue += &quot;&quot;, with unselected range on paras[1].firstChild from 1 to paras[1].firstChild.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL paras[1].firstChild.nodeValue += &quot;&quot;, with selected range on paras[1].firstChild from 1 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jklmnop
+&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.nodeValue += &quot;foo&quot;, with unselected range on paras[1].firstChild from 1 to paras[1].firstChild.length 
+FAIL paras[1].firstChild.nodeValue += &quot;foo&quot;, with selected range on paras[1].firstChild from 1 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jklmnop
+&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.nodeValue += paras[1].firstChild.nodeValue, with unselected range on paras[1].firstChild from 1 to paras[1].firstChild.length 
+FAIL paras[1].firstChild.nodeValue += paras[1].firstChild.nodeValue, with selected range on paras[1].firstChild from 1 to paras[1].firstChild.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;jklmnop
+&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.data = &quot;&quot;, with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) 
+FAIL paras[1].firstChild.data = &quot;&quot;, with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.data = &quot;foo&quot;, with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) 
+FAIL paras[1].firstChild.data = &quot;foo&quot;, with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.data = paras[1].firstChild.data, with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Wrong start offset expected 0 but got 9
+FAIL paras[1].firstChild.data = paras[1].firstChild.data, with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.data += &quot;&quot;, with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Wrong start offset expected 0 but got 9
+FAIL paras[1].firstChild.data += &quot;&quot;, with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.data += &quot;foo&quot;, with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) 
+FAIL paras[1].firstChild.data += &quot;foo&quot;, with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.data += paras[1].firstChild.data, with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) 
+FAIL paras[1].firstChild.data += paras[1].firstChild.data, with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.textContent = &quot;&quot;, with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) 
+FAIL paras[1].firstChild.textContent = &quot;&quot;, with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.textContent = &quot;foo&quot;, with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) 
+FAIL paras[1].firstChild.textContent = &quot;foo&quot;, with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.textContent = paras[1].firstChild.textContent, with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Wrong start offset expected 0 but got 9
+FAIL paras[1].firstChild.textContent = paras[1].firstChild.textContent, with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.textContent += &quot;&quot;, with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Wrong start offset expected 0 but got 9
+FAIL paras[1].firstChild.textContent += &quot;&quot;, with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.textContent += &quot;foo&quot;, with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) 
+FAIL paras[1].firstChild.textContent += &quot;foo&quot;, with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.textContent += paras[1].firstChild.textContent, with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) 
+FAIL paras[1].firstChild.textContent += paras[1].firstChild.textContent, with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.nodeValue = &quot;&quot;, with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) 
+FAIL paras[1].firstChild.nodeValue = &quot;&quot;, with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.nodeValue = &quot;foo&quot;, with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) 
+FAIL paras[1].firstChild.nodeValue = &quot;foo&quot;, with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.nodeValue = paras[1].firstChild.nodeValue, with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Wrong start offset expected 0 but got 9
+FAIL paras[1].firstChild.nodeValue = paras[1].firstChild.nodeValue, with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL paras[1].firstChild.nodeValue += &quot;&quot;, with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Wrong start offset expected 0 but got 9
+FAIL paras[1].firstChild.nodeValue += &quot;&quot;, with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.nodeValue += &quot;foo&quot;, with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) 
+FAIL paras[1].firstChild.nodeValue += &quot;foo&quot;, with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[1].firstChild.nodeValue += paras[1].firstChild.nodeValue, with unselected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) 
+FAIL paras[1].firstChild.nodeValue += paras[1].firstChild.nodeValue, with selected range collapsed at (paras[1].firstChild, paras[1].firstChild.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS foreignTextNode.data = &quot;&quot;, with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.data = &quot;&quot;, with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.data = &quot;foo&quot;, with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.data = &quot;foo&quot;, with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.data = foreignTextNode.data, with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.data = foreignTextNode.data, with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.data += &quot;&quot;, with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.data += &quot;&quot;, with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.data += &quot;foo&quot;, with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.data += &quot;foo&quot;, with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.data += foreignTextNode.data, with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.data += foreignTextNode.data, with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.textContent = &quot;&quot;, with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.textContent = &quot;&quot;, with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.textContent = &quot;foo&quot;, with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.textContent = &quot;foo&quot;, with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.textContent = foreignTextNode.textContent, with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.textContent = foreignTextNode.textContent, with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.textContent += &quot;&quot;, with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.textContent += &quot;&quot;, with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.textContent += &quot;foo&quot;, with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.textContent += &quot;foo&quot;, with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.textContent += foreignTextNode.textContent, with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.textContent += foreignTextNode.textContent, with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.nodeValue = &quot;&quot;, with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.nodeValue = &quot;&quot;, with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.nodeValue = &quot;foo&quot;, with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.nodeValue = &quot;foo&quot;, with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.nodeValue = foreignTextNode.nodeValue, with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.nodeValue = foreignTextNode.nodeValue, with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.nodeValue += &quot;&quot;, with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.nodeValue += &quot;&quot;, with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.nodeValue += &quot;foo&quot;, with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.nodeValue += &quot;foo&quot;, with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.nodeValue += foreignTextNode.nodeValue, with unselected range collapsed at (foreignTextNode, 0) 
+FAIL foreignTextNode.nodeValue += foreignTextNode.nodeValue, with selected range collapsed at (foreignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.data = &quot;&quot;, with unselected range on foreignTextNode from 0 to 1 
+FAIL foreignTextNode.data = &quot;&quot;, with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.data = &quot;foo&quot;, with unselected range on foreignTextNode from 0 to 1 
+FAIL foreignTextNode.data = &quot;foo&quot;, with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.data = foreignTextNode.data, with unselected range on foreignTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL foreignTextNode.data = foreignTextNode.data, with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.data += &quot;&quot;, with unselected range on foreignTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL foreignTextNode.data += &quot;&quot;, with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.data += &quot;foo&quot;, with unselected range on foreignTextNode from 0 to 1 
+FAIL foreignTextNode.data += &quot;foo&quot;, with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.data += foreignTextNode.data, with unselected range on foreignTextNode from 0 to 1 
+FAIL foreignTextNode.data += foreignTextNode.data, with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.textContent = &quot;&quot;, with unselected range on foreignTextNode from 0 to 1 
+FAIL foreignTextNode.textContent = &quot;&quot;, with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.textContent = &quot;foo&quot;, with unselected range on foreignTextNode from 0 to 1 
+FAIL foreignTextNode.textContent = &quot;foo&quot;, with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.textContent = foreignTextNode.textContent, with unselected range on foreignTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL foreignTextNode.textContent = foreignTextNode.textContent, with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.textContent += &quot;&quot;, with unselected range on foreignTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL foreignTextNode.textContent += &quot;&quot;, with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.textContent += &quot;foo&quot;, with unselected range on foreignTextNode from 0 to 1 
+FAIL foreignTextNode.textContent += &quot;foo&quot;, with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.textContent += foreignTextNode.textContent, with unselected range on foreignTextNode from 0 to 1 
+FAIL foreignTextNode.textContent += foreignTextNode.textContent, with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.nodeValue = &quot;&quot;, with unselected range on foreignTextNode from 0 to 1 
+FAIL foreignTextNode.nodeValue = &quot;&quot;, with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.nodeValue = &quot;foo&quot;, with unselected range on foreignTextNode from 0 to 1 
+FAIL foreignTextNode.nodeValue = &quot;foo&quot;, with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.nodeValue = foreignTextNode.nodeValue, with unselected range on foreignTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL foreignTextNode.nodeValue = foreignTextNode.nodeValue, with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.nodeValue += &quot;&quot;, with unselected range on foreignTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL foreignTextNode.nodeValue += &quot;&quot;, with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.nodeValue += &quot;foo&quot;, with unselected range on foreignTextNode from 0 to 1 
+FAIL foreignTextNode.nodeValue += &quot;foo&quot;, with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.nodeValue += foreignTextNode.nodeValue, with unselected range on foreignTextNode from 0 to 1 
+FAIL foreignTextNode.nodeValue += foreignTextNode.nodeValue, with selected range on foreignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.data = &quot;&quot;, with unselected range collapsed at (foreignTextNode, 1) 
+FAIL foreignTextNode.data = &quot;&quot;, with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.data = &quot;foo&quot;, with unselected range collapsed at (foreignTextNode, 1) 
+FAIL foreignTextNode.data = &quot;foo&quot;, with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.data = foreignTextNode.data, with unselected range collapsed at (foreignTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL foreignTextNode.data = foreignTextNode.data, with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.data += &quot;&quot;, with unselected range collapsed at (foreignTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL foreignTextNode.data += &quot;&quot;, with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.data += &quot;foo&quot;, with unselected range collapsed at (foreignTextNode, 1) 
+FAIL foreignTextNode.data += &quot;foo&quot;, with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.data += foreignTextNode.data, with unselected range collapsed at (foreignTextNode, 1) 
+FAIL foreignTextNode.data += foreignTextNode.data, with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.textContent = &quot;&quot;, with unselected range collapsed at (foreignTextNode, 1) 
+FAIL foreignTextNode.textContent = &quot;&quot;, with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.textContent = &quot;foo&quot;, with unselected range collapsed at (foreignTextNode, 1) 
+FAIL foreignTextNode.textContent = &quot;foo&quot;, with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.textContent = foreignTextNode.textContent, with unselected range collapsed at (foreignTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL foreignTextNode.textContent = foreignTextNode.textContent, with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.textContent += &quot;&quot;, with unselected range collapsed at (foreignTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL foreignTextNode.textContent += &quot;&quot;, with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.textContent += &quot;foo&quot;, with unselected range collapsed at (foreignTextNode, 1) 
+FAIL foreignTextNode.textContent += &quot;foo&quot;, with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.textContent += foreignTextNode.textContent, with unselected range collapsed at (foreignTextNode, 1) 
+FAIL foreignTextNode.textContent += foreignTextNode.textContent, with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.nodeValue = &quot;&quot;, with unselected range collapsed at (foreignTextNode, 1) 
+FAIL foreignTextNode.nodeValue = &quot;&quot;, with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.nodeValue = &quot;foo&quot;, with unselected range collapsed at (foreignTextNode, 1) 
+FAIL foreignTextNode.nodeValue = &quot;foo&quot;, with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.nodeValue = foreignTextNode.nodeValue, with unselected range collapsed at (foreignTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL foreignTextNode.nodeValue = foreignTextNode.nodeValue, with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.nodeValue += &quot;&quot;, with unselected range collapsed at (foreignTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL foreignTextNode.nodeValue += &quot;&quot;, with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.nodeValue += &quot;foo&quot;, with unselected range collapsed at (foreignTextNode, 1) 
+FAIL foreignTextNode.nodeValue += &quot;foo&quot;, with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.nodeValue += foreignTextNode.nodeValue, with unselected range collapsed at (foreignTextNode, 1) 
+FAIL foreignTextNode.nodeValue += foreignTextNode.nodeValue, with selected range collapsed at (foreignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.data = &quot;&quot;, with unselected range on foreignTextNode from 0 to foreignTextNode.length 
+FAIL foreignTextNode.data = &quot;&quot;, with selected range on foreignTextNode from 0 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.data = &quot;foo&quot;, with unselected range on foreignTextNode from 0 to foreignTextNode.length 
+FAIL foreignTextNode.data = &quot;foo&quot;, with selected range on foreignTextNode from 0 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.data = foreignTextNode.data, with unselected range on foreignTextNode from 0 to foreignTextNode.length assert_equals: Wrong end offset expected 0 but got 112
+FAIL foreignTextNode.data = foreignTextNode.data, with selected range on foreignTextNode from 0 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.data += &quot;&quot;, with unselected range on foreignTextNode from 0 to foreignTextNode.length assert_equals: Wrong end offset expected 0 but got 112
+FAIL foreignTextNode.data += &quot;&quot;, with selected range on foreignTextNode from 0 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.data += &quot;foo&quot;, with unselected range on foreignTextNode from 0 to foreignTextNode.length 
+FAIL foreignTextNode.data += &quot;foo&quot;, with selected range on foreignTextNode from 0 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.data += foreignTextNode.data, with unselected range on foreignTextNode from 0 to foreignTextNode.length 
+FAIL foreignTextNode.data += foreignTextNode.data, with selected range on foreignTextNode from 0 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.textContent = &quot;&quot;, with unselected range on foreignTextNode from 0 to foreignTextNode.length 
+FAIL foreignTextNode.textContent = &quot;&quot;, with selected range on foreignTextNode from 0 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.textContent = &quot;foo&quot;, with unselected range on foreignTextNode from 0 to foreignTextNode.length 
+FAIL foreignTextNode.textContent = &quot;foo&quot;, with selected range on foreignTextNode from 0 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.textContent = foreignTextNode.textContent, with unselected range on foreignTextNode from 0 to foreignTextNode.length assert_equals: Wrong end offset expected 0 but got 112
+FAIL foreignTextNode.textContent = foreignTextNode.textContent, with selected range on foreignTextNode from 0 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.textContent += &quot;&quot;, with unselected range on foreignTextNode from 0 to foreignTextNode.length assert_equals: Wrong end offset expected 0 but got 112
+FAIL foreignTextNode.textContent += &quot;&quot;, with selected range on foreignTextNode from 0 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.textContent += &quot;foo&quot;, with unselected range on foreignTextNode from 0 to foreignTextNode.length 
+FAIL foreignTextNode.textContent += &quot;foo&quot;, with selected range on foreignTextNode from 0 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.textContent += foreignTextNode.textContent, with unselected range on foreignTextNode from 0 to foreignTextNode.length 
+FAIL foreignTextNode.textContent += foreignTextNode.textContent, with selected range on foreignTextNode from 0 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.nodeValue = &quot;&quot;, with unselected range on foreignTextNode from 0 to foreignTextNode.length 
+FAIL foreignTextNode.nodeValue = &quot;&quot;, with selected range on foreignTextNode from 0 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.nodeValue = &quot;foo&quot;, with unselected range on foreignTextNode from 0 to foreignTextNode.length 
+FAIL foreignTextNode.nodeValue = &quot;foo&quot;, with selected range on foreignTextNode from 0 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.nodeValue = foreignTextNode.nodeValue, with unselected range on foreignTextNode from 0 to foreignTextNode.length assert_equals: Wrong end offset expected 0 but got 112
+FAIL foreignTextNode.nodeValue = foreignTextNode.nodeValue, with selected range on foreignTextNode from 0 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.nodeValue += &quot;&quot;, with unselected range on foreignTextNode from 0 to foreignTextNode.length assert_equals: Wrong end offset expected 0 but got 112
+FAIL foreignTextNode.nodeValue += &quot;&quot;, with selected range on foreignTextNode from 0 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.nodeValue += &quot;foo&quot;, with unselected range on foreignTextNode from 0 to foreignTextNode.length 
+FAIL foreignTextNode.nodeValue += &quot;foo&quot;, with selected range on foreignTextNode from 0 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.nodeValue += foreignTextNode.nodeValue, with unselected range on foreignTextNode from 0 to foreignTextNode.length 
+FAIL foreignTextNode.nodeValue += foreignTextNode.nodeValue, with selected range on foreignTextNode from 0 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.data = &quot;&quot;, with unselected range on foreignTextNode from 1 to foreignTextNode.length 
+FAIL foreignTextNode.data = &quot;&quot;, with selected range on foreignTextNode from 1 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.data = &quot;foo&quot;, with unselected range on foreignTextNode from 1 to foreignTextNode.length 
+FAIL foreignTextNode.data = &quot;foo&quot;, with selected range on foreignTextNode from 1 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.data = foreignTextNode.data, with unselected range on foreignTextNode from 1 to foreignTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL foreignTextNode.data = foreignTextNode.data, with selected range on foreignTextNode from 1 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.data += &quot;&quot;, with unselected range on foreignTextNode from 1 to foreignTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL foreignTextNode.data += &quot;&quot;, with selected range on foreignTextNode from 1 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.data += &quot;foo&quot;, with unselected range on foreignTextNode from 1 to foreignTextNode.length 
+FAIL foreignTextNode.data += &quot;foo&quot;, with selected range on foreignTextNode from 1 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.data += foreignTextNode.data, with unselected range on foreignTextNode from 1 to foreignTextNode.length 
+FAIL foreignTextNode.data += foreignTextNode.data, with selected range on foreignTextNode from 1 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.textContent = &quot;&quot;, with unselected range on foreignTextNode from 1 to foreignTextNode.length 
+FAIL foreignTextNode.textContent = &quot;&quot;, with selected range on foreignTextNode from 1 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.textContent = &quot;foo&quot;, with unselected range on foreignTextNode from 1 to foreignTextNode.length 
+FAIL foreignTextNode.textContent = &quot;foo&quot;, with selected range on foreignTextNode from 1 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.textContent = foreignTextNode.textContent, with unselected range on foreignTextNode from 1 to foreignTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL foreignTextNode.textContent = foreignTextNode.textContent, with selected range on foreignTextNode from 1 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.textContent += &quot;&quot;, with unselected range on foreignTextNode from 1 to foreignTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL foreignTextNode.textContent += &quot;&quot;, with selected range on foreignTextNode from 1 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.textContent += &quot;foo&quot;, with unselected range on foreignTextNode from 1 to foreignTextNode.length 
+FAIL foreignTextNode.textContent += &quot;foo&quot;, with selected range on foreignTextNode from 1 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.textContent += foreignTextNode.textContent, with unselected range on foreignTextNode from 1 to foreignTextNode.length 
+FAIL foreignTextNode.textContent += foreignTextNode.textContent, with selected range on foreignTextNode from 1 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.nodeValue = &quot;&quot;, with unselected range on foreignTextNode from 1 to foreignTextNode.length 
+FAIL foreignTextNode.nodeValue = &quot;&quot;, with selected range on foreignTextNode from 1 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.nodeValue = &quot;foo&quot;, with unselected range on foreignTextNode from 1 to foreignTextNode.length 
+FAIL foreignTextNode.nodeValue = &quot;foo&quot;, with selected range on foreignTextNode from 1 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.nodeValue = foreignTextNode.nodeValue, with unselected range on foreignTextNode from 1 to foreignTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL foreignTextNode.nodeValue = foreignTextNode.nodeValue, with selected range on foreignTextNode from 1 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.nodeValue += &quot;&quot;, with unselected range on foreignTextNode from 1 to foreignTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL foreignTextNode.nodeValue += &quot;&quot;, with selected range on foreignTextNode from 1 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.nodeValue += &quot;foo&quot;, with unselected range on foreignTextNode from 1 to foreignTextNode.length 
+FAIL foreignTextNode.nodeValue += &quot;foo&quot;, with selected range on foreignTextNode from 1 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.nodeValue += foreignTextNode.nodeValue, with unselected range on foreignTextNode from 1 to foreignTextNode.length 
+FAIL foreignTextNode.nodeValue += foreignTextNode.nodeValue, with selected range on foreignTextNode from 1 to foreignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.data = &quot;&quot;, with unselected range collapsed at (foreignTextNode, foreignTextNode.length) 
+FAIL foreignTextNode.data = &quot;&quot;, with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.data = &quot;foo&quot;, with unselected range collapsed at (foreignTextNode, foreignTextNode.length) 
+FAIL foreignTextNode.data = &quot;foo&quot;, with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.data = foreignTextNode.data, with unselected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Wrong start offset expected 0 but got 112
+FAIL foreignTextNode.data = foreignTextNode.data, with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.data += &quot;&quot;, with unselected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Wrong start offset expected 0 but got 112
+FAIL foreignTextNode.data += &quot;&quot;, with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.data += &quot;foo&quot;, with unselected range collapsed at (foreignTextNode, foreignTextNode.length) 
+FAIL foreignTextNode.data += &quot;foo&quot;, with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.data += foreignTextNode.data, with unselected range collapsed at (foreignTextNode, foreignTextNode.length) 
+FAIL foreignTextNode.data += foreignTextNode.data, with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.textContent = &quot;&quot;, with unselected range collapsed at (foreignTextNode, foreignTextNode.length) 
+FAIL foreignTextNode.textContent = &quot;&quot;, with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.textContent = &quot;foo&quot;, with unselected range collapsed at (foreignTextNode, foreignTextNode.length) 
+FAIL foreignTextNode.textContent = &quot;foo&quot;, with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.textContent = foreignTextNode.textContent, with unselected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Wrong start offset expected 0 but got 112
+FAIL foreignTextNode.textContent = foreignTextNode.textContent, with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.textContent += &quot;&quot;, with unselected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Wrong start offset expected 0 but got 112
+FAIL foreignTextNode.textContent += &quot;&quot;, with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.textContent += &quot;foo&quot;, with unselected range collapsed at (foreignTextNode, foreignTextNode.length) 
+FAIL foreignTextNode.textContent += &quot;foo&quot;, with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.textContent += foreignTextNode.textContent, with unselected range collapsed at (foreignTextNode, foreignTextNode.length) 
+FAIL foreignTextNode.textContent += foreignTextNode.textContent, with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.nodeValue = &quot;&quot;, with unselected range collapsed at (foreignTextNode, foreignTextNode.length) 
+FAIL foreignTextNode.nodeValue = &quot;&quot;, with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.nodeValue = &quot;foo&quot;, with unselected range collapsed at (foreignTextNode, foreignTextNode.length) 
+FAIL foreignTextNode.nodeValue = &quot;foo&quot;, with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.nodeValue = foreignTextNode.nodeValue, with unselected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Wrong start offset expected 0 but got 112
+FAIL foreignTextNode.nodeValue = foreignTextNode.nodeValue, with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignTextNode.nodeValue += &quot;&quot;, with unselected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Wrong start offset expected 0 but got 112
+FAIL foreignTextNode.nodeValue += &quot;&quot;, with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.nodeValue += &quot;foo&quot;, with unselected range collapsed at (foreignTextNode, foreignTextNode.length) 
+FAIL foreignTextNode.nodeValue += &quot;foo&quot;, with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignTextNode.nodeValue += foreignTextNode.nodeValue, with unselected range collapsed at (foreignTextNode, foreignTextNode.length) 
+FAIL foreignTextNode.nodeValue += foreignTextNode.nodeValue, with selected range collapsed at (foreignTextNode, foreignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.data = &quot;&quot;, with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.data = &quot;&quot;, with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.data = &quot;foo&quot;, with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.data = &quot;foo&quot;, with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.data = xmlTextNode.data, with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.data = xmlTextNode.data, with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.data += &quot;&quot;, with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.data += &quot;&quot;, with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.data += &quot;foo&quot;, with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.data += &quot;foo&quot;, with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.data += xmlTextNode.data, with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.data += xmlTextNode.data, with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.textContent = &quot;&quot;, with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.textContent = &quot;&quot;, with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.textContent = &quot;foo&quot;, with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.textContent = &quot;foo&quot;, with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.textContent = xmlTextNode.textContent, with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.textContent = xmlTextNode.textContent, with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.textContent += &quot;&quot;, with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.textContent += &quot;&quot;, with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.textContent += &quot;foo&quot;, with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.textContent += &quot;foo&quot;, with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.textContent += xmlTextNode.textContent, with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.textContent += xmlTextNode.textContent, with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.nodeValue = &quot;&quot;, with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.nodeValue = &quot;&quot;, with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.nodeValue = &quot;foo&quot;, with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.nodeValue = &quot;foo&quot;, with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.nodeValue = xmlTextNode.nodeValue, with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.nodeValue = xmlTextNode.nodeValue, with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.nodeValue += &quot;&quot;, with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.nodeValue += &quot;&quot;, with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.nodeValue += &quot;foo&quot;, with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.nodeValue += &quot;foo&quot;, with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.nodeValue += xmlTextNode.nodeValue, with unselected range collapsed at (xmlTextNode, 0) 
+FAIL xmlTextNode.nodeValue += xmlTextNode.nodeValue, with selected range collapsed at (xmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.data = &quot;&quot;, with unselected range on xmlTextNode from 0 to 1 
+FAIL xmlTextNode.data = &quot;&quot;, with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.data = &quot;foo&quot;, with unselected range on xmlTextNode from 0 to 1 
+FAIL xmlTextNode.data = &quot;foo&quot;, with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.data = xmlTextNode.data, with unselected range on xmlTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL xmlTextNode.data = xmlTextNode.data, with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.data += &quot;&quot;, with unselected range on xmlTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL xmlTextNode.data += &quot;&quot;, with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.data += &quot;foo&quot;, with unselected range on xmlTextNode from 0 to 1 
+FAIL xmlTextNode.data += &quot;foo&quot;, with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.data += xmlTextNode.data, with unselected range on xmlTextNode from 0 to 1 
+FAIL xmlTextNode.data += xmlTextNode.data, with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.textContent = &quot;&quot;, with unselected range on xmlTextNode from 0 to 1 
+FAIL xmlTextNode.textContent = &quot;&quot;, with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.textContent = &quot;foo&quot;, with unselected range on xmlTextNode from 0 to 1 
+FAIL xmlTextNode.textContent = &quot;foo&quot;, with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.textContent = xmlTextNode.textContent, with unselected range on xmlTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL xmlTextNode.textContent = xmlTextNode.textContent, with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.textContent += &quot;&quot;, with unselected range on xmlTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL xmlTextNode.textContent += &quot;&quot;, with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.textContent += &quot;foo&quot;, with unselected range on xmlTextNode from 0 to 1 
+FAIL xmlTextNode.textContent += &quot;foo&quot;, with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.textContent += xmlTextNode.textContent, with unselected range on xmlTextNode from 0 to 1 
+FAIL xmlTextNode.textContent += xmlTextNode.textContent, with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.nodeValue = &quot;&quot;, with unselected range on xmlTextNode from 0 to 1 
+FAIL xmlTextNode.nodeValue = &quot;&quot;, with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.nodeValue = &quot;foo&quot;, with unselected range on xmlTextNode from 0 to 1 
+FAIL xmlTextNode.nodeValue = &quot;foo&quot;, with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.nodeValue = xmlTextNode.nodeValue, with unselected range on xmlTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL xmlTextNode.nodeValue = xmlTextNode.nodeValue, with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.nodeValue += &quot;&quot;, with unselected range on xmlTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL xmlTextNode.nodeValue += &quot;&quot;, with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.nodeValue += &quot;foo&quot;, with unselected range on xmlTextNode from 0 to 1 
+FAIL xmlTextNode.nodeValue += &quot;foo&quot;, with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.nodeValue += xmlTextNode.nodeValue, with unselected range on xmlTextNode from 0 to 1 
+FAIL xmlTextNode.nodeValue += xmlTextNode.nodeValue, with selected range on xmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.data = &quot;&quot;, with unselected range collapsed at (xmlTextNode, 1) 
+FAIL xmlTextNode.data = &quot;&quot;, with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.data = &quot;foo&quot;, with unselected range collapsed at (xmlTextNode, 1) 
+FAIL xmlTextNode.data = &quot;foo&quot;, with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.data = xmlTextNode.data, with unselected range collapsed at (xmlTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL xmlTextNode.data = xmlTextNode.data, with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.data += &quot;&quot;, with unselected range collapsed at (xmlTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL xmlTextNode.data += &quot;&quot;, with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.data += &quot;foo&quot;, with unselected range collapsed at (xmlTextNode, 1) 
+FAIL xmlTextNode.data += &quot;foo&quot;, with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.data += xmlTextNode.data, with unselected range collapsed at (xmlTextNode, 1) 
+FAIL xmlTextNode.data += xmlTextNode.data, with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.textContent = &quot;&quot;, with unselected range collapsed at (xmlTextNode, 1) 
+FAIL xmlTextNode.textContent = &quot;&quot;, with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.textContent = &quot;foo&quot;, with unselected range collapsed at (xmlTextNode, 1) 
+FAIL xmlTextNode.textContent = &quot;foo&quot;, with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.textContent = xmlTextNode.textContent, with unselected range collapsed at (xmlTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL xmlTextNode.textContent = xmlTextNode.textContent, with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.textContent += &quot;&quot;, with unselected range collapsed at (xmlTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL xmlTextNode.textContent += &quot;&quot;, with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.textContent += &quot;foo&quot;, with unselected range collapsed at (xmlTextNode, 1) 
+FAIL xmlTextNode.textContent += &quot;foo&quot;, with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.textContent += xmlTextNode.textContent, with unselected range collapsed at (xmlTextNode, 1) 
+FAIL xmlTextNode.textContent += xmlTextNode.textContent, with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.nodeValue = &quot;&quot;, with unselected range collapsed at (xmlTextNode, 1) 
+FAIL xmlTextNode.nodeValue = &quot;&quot;, with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.nodeValue = &quot;foo&quot;, with unselected range collapsed at (xmlTextNode, 1) 
+FAIL xmlTextNode.nodeValue = &quot;foo&quot;, with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.nodeValue = xmlTextNode.nodeValue, with unselected range collapsed at (xmlTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL xmlTextNode.nodeValue = xmlTextNode.nodeValue, with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.nodeValue += &quot;&quot;, with unselected range collapsed at (xmlTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL xmlTextNode.nodeValue += &quot;&quot;, with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.nodeValue += &quot;foo&quot;, with unselected range collapsed at (xmlTextNode, 1) 
+FAIL xmlTextNode.nodeValue += &quot;foo&quot;, with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.nodeValue += xmlTextNode.nodeValue, with unselected range collapsed at (xmlTextNode, 1) 
+FAIL xmlTextNode.nodeValue += xmlTextNode.nodeValue, with selected range collapsed at (xmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.data = &quot;&quot;, with unselected range on xmlTextNode from 0 to xmlTextNode.length 
+FAIL xmlTextNode.data = &quot;&quot;, with selected range on xmlTextNode from 0 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.data = &quot;foo&quot;, with unselected range on xmlTextNode from 0 to xmlTextNode.length 
+FAIL xmlTextNode.data = &quot;foo&quot;, with selected range on xmlTextNode from 0 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.data = xmlTextNode.data, with unselected range on xmlTextNode from 0 to xmlTextNode.length assert_equals: Wrong end offset expected 0 but got 20
+FAIL xmlTextNode.data = xmlTextNode.data, with selected range on xmlTextNode from 0 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.data += &quot;&quot;, with unselected range on xmlTextNode from 0 to xmlTextNode.length assert_equals: Wrong end offset expected 0 but got 20
+FAIL xmlTextNode.data += &quot;&quot;, with selected range on xmlTextNode from 0 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.data += &quot;foo&quot;, with unselected range on xmlTextNode from 0 to xmlTextNode.length 
+FAIL xmlTextNode.data += &quot;foo&quot;, with selected range on xmlTextNode from 0 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.data += xmlTextNode.data, with unselected range on xmlTextNode from 0 to xmlTextNode.length 
+FAIL xmlTextNode.data += xmlTextNode.data, with selected range on xmlTextNode from 0 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.textContent = &quot;&quot;, with unselected range on xmlTextNode from 0 to xmlTextNode.length 
+FAIL xmlTextNode.textContent = &quot;&quot;, with selected range on xmlTextNode from 0 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.textContent = &quot;foo&quot;, with unselected range on xmlTextNode from 0 to xmlTextNode.length 
+FAIL xmlTextNode.textContent = &quot;foo&quot;, with selected range on xmlTextNode from 0 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.textContent = xmlTextNode.textContent, with unselected range on xmlTextNode from 0 to xmlTextNode.length assert_equals: Wrong end offset expected 0 but got 20
+FAIL xmlTextNode.textContent = xmlTextNode.textContent, with selected range on xmlTextNode from 0 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.textContent += &quot;&quot;, with unselected range on xmlTextNode from 0 to xmlTextNode.length assert_equals: Wrong end offset expected 0 but got 20
+FAIL xmlTextNode.textContent += &quot;&quot;, with selected range on xmlTextNode from 0 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.textContent += &quot;foo&quot;, with unselected range on xmlTextNode from 0 to xmlTextNode.length 
+FAIL xmlTextNode.textContent += &quot;foo&quot;, with selected range on xmlTextNode from 0 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.textContent += xmlTextNode.textContent, with unselected range on xmlTextNode from 0 to xmlTextNode.length 
+FAIL xmlTextNode.textContent += xmlTextNode.textContent, with selected range on xmlTextNode from 0 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.nodeValue = &quot;&quot;, with unselected range on xmlTextNode from 0 to xmlTextNode.length 
+FAIL xmlTextNode.nodeValue = &quot;&quot;, with selected range on xmlTextNode from 0 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.nodeValue = &quot;foo&quot;, with unselected range on xmlTextNode from 0 to xmlTextNode.length 
+FAIL xmlTextNode.nodeValue = &quot;foo&quot;, with selected range on xmlTextNode from 0 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.nodeValue = xmlTextNode.nodeValue, with unselected range on xmlTextNode from 0 to xmlTextNode.length assert_equals: Wrong end offset expected 0 but got 20
+FAIL xmlTextNode.nodeValue = xmlTextNode.nodeValue, with selected range on xmlTextNode from 0 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.nodeValue += &quot;&quot;, with unselected range on xmlTextNode from 0 to xmlTextNode.length assert_equals: Wrong end offset expected 0 but got 20
+FAIL xmlTextNode.nodeValue += &quot;&quot;, with selected range on xmlTextNode from 0 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.nodeValue += &quot;foo&quot;, with unselected range on xmlTextNode from 0 to xmlTextNode.length 
+FAIL xmlTextNode.nodeValue += &quot;foo&quot;, with selected range on xmlTextNode from 0 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.nodeValue += xmlTextNode.nodeValue, with unselected range on xmlTextNode from 0 to xmlTextNode.length 
+FAIL xmlTextNode.nodeValue += xmlTextNode.nodeValue, with selected range on xmlTextNode from 0 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.data = &quot;&quot;, with unselected range on xmlTextNode from 1 to xmlTextNode.length 
+FAIL xmlTextNode.data = &quot;&quot;, with selected range on xmlTextNode from 1 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.data = &quot;foo&quot;, with unselected range on xmlTextNode from 1 to xmlTextNode.length 
+FAIL xmlTextNode.data = &quot;foo&quot;, with selected range on xmlTextNode from 1 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.data = xmlTextNode.data, with unselected range on xmlTextNode from 1 to xmlTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL xmlTextNode.data = xmlTextNode.data, with selected range on xmlTextNode from 1 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.data += &quot;&quot;, with unselected range on xmlTextNode from 1 to xmlTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL xmlTextNode.data += &quot;&quot;, with selected range on xmlTextNode from 1 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.data += &quot;foo&quot;, with unselected range on xmlTextNode from 1 to xmlTextNode.length 
+FAIL xmlTextNode.data += &quot;foo&quot;, with selected range on xmlTextNode from 1 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.data += xmlTextNode.data, with unselected range on xmlTextNode from 1 to xmlTextNode.length 
+FAIL xmlTextNode.data += xmlTextNode.data, with selected range on xmlTextNode from 1 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.textContent = &quot;&quot;, with unselected range on xmlTextNode from 1 to xmlTextNode.length 
+FAIL xmlTextNode.textContent = &quot;&quot;, with selected range on xmlTextNode from 1 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.textContent = &quot;foo&quot;, with unselected range on xmlTextNode from 1 to xmlTextNode.length 
+FAIL xmlTextNode.textContent = &quot;foo&quot;, with selected range on xmlTextNode from 1 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.textContent = xmlTextNode.textContent, with unselected range on xmlTextNode from 1 to xmlTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL xmlTextNode.textContent = xmlTextNode.textContent, with selected range on xmlTextNode from 1 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.textContent += &quot;&quot;, with unselected range on xmlTextNode from 1 to xmlTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL xmlTextNode.textContent += &quot;&quot;, with selected range on xmlTextNode from 1 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.textContent += &quot;foo&quot;, with unselected range on xmlTextNode from 1 to xmlTextNode.length 
+FAIL xmlTextNode.textContent += &quot;foo&quot;, with selected range on xmlTextNode from 1 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.textContent += xmlTextNode.textContent, with unselected range on xmlTextNode from 1 to xmlTextNode.length 
+FAIL xmlTextNode.textContent += xmlTextNode.textContent, with selected range on xmlTextNode from 1 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.nodeValue = &quot;&quot;, with unselected range on xmlTextNode from 1 to xmlTextNode.length 
+FAIL xmlTextNode.nodeValue = &quot;&quot;, with selected range on xmlTextNode from 1 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.nodeValue = &quot;foo&quot;, with unselected range on xmlTextNode from 1 to xmlTextNode.length 
+FAIL xmlTextNode.nodeValue = &quot;foo&quot;, with selected range on xmlTextNode from 1 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.nodeValue = xmlTextNode.nodeValue, with unselected range on xmlTextNode from 1 to xmlTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL xmlTextNode.nodeValue = xmlTextNode.nodeValue, with selected range on xmlTextNode from 1 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.nodeValue += &quot;&quot;, with unselected range on xmlTextNode from 1 to xmlTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL xmlTextNode.nodeValue += &quot;&quot;, with selected range on xmlTextNode from 1 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.nodeValue += &quot;foo&quot;, with unselected range on xmlTextNode from 1 to xmlTextNode.length 
+FAIL xmlTextNode.nodeValue += &quot;foo&quot;, with selected range on xmlTextNode from 1 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.nodeValue += xmlTextNode.nodeValue, with unselected range on xmlTextNode from 1 to xmlTextNode.length 
+FAIL xmlTextNode.nodeValue += xmlTextNode.nodeValue, with selected range on xmlTextNode from 1 to xmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.data = &quot;&quot;, with unselected range collapsed at (xmlTextNode, xmlTextNode.length) 
+FAIL xmlTextNode.data = &quot;&quot;, with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.data = &quot;foo&quot;, with unselected range collapsed at (xmlTextNode, xmlTextNode.length) 
+FAIL xmlTextNode.data = &quot;foo&quot;, with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.data = xmlTextNode.data, with unselected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Wrong start offset expected 0 but got 20
+FAIL xmlTextNode.data = xmlTextNode.data, with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.data += &quot;&quot;, with unselected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Wrong start offset expected 0 but got 20
+FAIL xmlTextNode.data += &quot;&quot;, with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.data += &quot;foo&quot;, with unselected range collapsed at (xmlTextNode, xmlTextNode.length) 
+FAIL xmlTextNode.data += &quot;foo&quot;, with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.data += xmlTextNode.data, with unselected range collapsed at (xmlTextNode, xmlTextNode.length) 
+FAIL xmlTextNode.data += xmlTextNode.data, with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.textContent = &quot;&quot;, with unselected range collapsed at (xmlTextNode, xmlTextNode.length) 
+FAIL xmlTextNode.textContent = &quot;&quot;, with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.textContent = &quot;foo&quot;, with unselected range collapsed at (xmlTextNode, xmlTextNode.length) 
+FAIL xmlTextNode.textContent = &quot;foo&quot;, with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.textContent = xmlTextNode.textContent, with unselected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Wrong start offset expected 0 but got 20
+FAIL xmlTextNode.textContent = xmlTextNode.textContent, with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.textContent += &quot;&quot;, with unselected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Wrong start offset expected 0 but got 20
+FAIL xmlTextNode.textContent += &quot;&quot;, with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.textContent += &quot;foo&quot;, with unselected range collapsed at (xmlTextNode, xmlTextNode.length) 
+FAIL xmlTextNode.textContent += &quot;foo&quot;, with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.textContent += xmlTextNode.textContent, with unselected range collapsed at (xmlTextNode, xmlTextNode.length) 
+FAIL xmlTextNode.textContent += xmlTextNode.textContent, with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.nodeValue = &quot;&quot;, with unselected range collapsed at (xmlTextNode, xmlTextNode.length) 
+FAIL xmlTextNode.nodeValue = &quot;&quot;, with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.nodeValue = &quot;foo&quot;, with unselected range collapsed at (xmlTextNode, xmlTextNode.length) 
+FAIL xmlTextNode.nodeValue = &quot;foo&quot;, with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.nodeValue = xmlTextNode.nodeValue, with unselected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Wrong start offset expected 0 but got 20
+FAIL xmlTextNode.nodeValue = xmlTextNode.nodeValue, with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlTextNode.nodeValue += &quot;&quot;, with unselected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Wrong start offset expected 0 but got 20
+FAIL xmlTextNode.nodeValue += &quot;&quot;, with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.nodeValue += &quot;foo&quot;, with unselected range collapsed at (xmlTextNode, xmlTextNode.length) 
+FAIL xmlTextNode.nodeValue += &quot;foo&quot;, with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlTextNode.nodeValue += xmlTextNode.nodeValue, with unselected range collapsed at (xmlTextNode, xmlTextNode.length) 
+FAIL xmlTextNode.nodeValue += xmlTextNode.nodeValue, with selected range collapsed at (xmlTextNode, xmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.data = &quot;&quot;, with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.data = &quot;&quot;, with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.data = &quot;foo&quot;, with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.data = &quot;foo&quot;, with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.data = detachedTextNode.data, with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.data = detachedTextNode.data, with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.data += &quot;&quot;, with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.data += &quot;&quot;, with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.data += &quot;foo&quot;, with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.data += &quot;foo&quot;, with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.data += detachedTextNode.data, with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.data += detachedTextNode.data, with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.textContent = &quot;&quot;, with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.textContent = &quot;&quot;, with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.textContent = &quot;foo&quot;, with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.textContent = &quot;foo&quot;, with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.textContent = detachedTextNode.textContent, with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.textContent = detachedTextNode.textContent, with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.textContent += &quot;&quot;, with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.textContent += &quot;&quot;, with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.textContent += &quot;foo&quot;, with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.textContent += &quot;foo&quot;, with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.textContent += detachedTextNode.textContent, with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.textContent += detachedTextNode.textContent, with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.nodeValue = &quot;&quot;, with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.nodeValue = &quot;&quot;, with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.nodeValue = &quot;foo&quot;, with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.nodeValue = &quot;foo&quot;, with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.nodeValue = detachedTextNode.nodeValue, with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.nodeValue = detachedTextNode.nodeValue, with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.nodeValue += &quot;&quot;, with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.nodeValue += &quot;&quot;, with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.nodeValue += &quot;foo&quot;, with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.nodeValue += &quot;foo&quot;, with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.nodeValue += detachedTextNode.nodeValue, with unselected range collapsed at (detachedTextNode, 0) 
+FAIL detachedTextNode.nodeValue += detachedTextNode.nodeValue, with selected range collapsed at (detachedTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.data = &quot;&quot;, with unselected range on detachedTextNode from 0 to 1 
+FAIL detachedTextNode.data = &quot;&quot;, with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.data = &quot;foo&quot;, with unselected range on detachedTextNode from 0 to 1 
+FAIL detachedTextNode.data = &quot;foo&quot;, with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.data = detachedTextNode.data, with unselected range on detachedTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedTextNode.data = detachedTextNode.data, with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.data += &quot;&quot;, with unselected range on detachedTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedTextNode.data += &quot;&quot;, with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.data += &quot;foo&quot;, with unselected range on detachedTextNode from 0 to 1 
+FAIL detachedTextNode.data += &quot;foo&quot;, with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.data += detachedTextNode.data, with unselected range on detachedTextNode from 0 to 1 
+FAIL detachedTextNode.data += detachedTextNode.data, with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.textContent = &quot;&quot;, with unselected range on detachedTextNode from 0 to 1 
+FAIL detachedTextNode.textContent = &quot;&quot;, with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.textContent = &quot;foo&quot;, with unselected range on detachedTextNode from 0 to 1 
+FAIL detachedTextNode.textContent = &quot;foo&quot;, with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.textContent = detachedTextNode.textContent, with unselected range on detachedTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedTextNode.textContent = detachedTextNode.textContent, with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.textContent += &quot;&quot;, with unselected range on detachedTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedTextNode.textContent += &quot;&quot;, with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.textContent += &quot;foo&quot;, with unselected range on detachedTextNode from 0 to 1 
+FAIL detachedTextNode.textContent += &quot;foo&quot;, with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.textContent += detachedTextNode.textContent, with unselected range on detachedTextNode from 0 to 1 
+FAIL detachedTextNode.textContent += detachedTextNode.textContent, with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.nodeValue = &quot;&quot;, with unselected range on detachedTextNode from 0 to 1 
+FAIL detachedTextNode.nodeValue = &quot;&quot;, with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.nodeValue = &quot;foo&quot;, with unselected range on detachedTextNode from 0 to 1 
+FAIL detachedTextNode.nodeValue = &quot;foo&quot;, with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.nodeValue = detachedTextNode.nodeValue, with unselected range on detachedTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedTextNode.nodeValue = detachedTextNode.nodeValue, with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.nodeValue += &quot;&quot;, with unselected range on detachedTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedTextNode.nodeValue += &quot;&quot;, with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.nodeValue += &quot;foo&quot;, with unselected range on detachedTextNode from 0 to 1 
+FAIL detachedTextNode.nodeValue += &quot;foo&quot;, with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.nodeValue += detachedTextNode.nodeValue, with unselected range on detachedTextNode from 0 to 1 
+FAIL detachedTextNode.nodeValue += detachedTextNode.nodeValue, with selected range on detachedTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.data = &quot;&quot;, with unselected range collapsed at (detachedTextNode, 1) 
+FAIL detachedTextNode.data = &quot;&quot;, with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.data = &quot;foo&quot;, with unselected range collapsed at (detachedTextNode, 1) 
+FAIL detachedTextNode.data = &quot;foo&quot;, with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.data = detachedTextNode.data, with unselected range collapsed at (detachedTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedTextNode.data = detachedTextNode.data, with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.data += &quot;&quot;, with unselected range collapsed at (detachedTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedTextNode.data += &quot;&quot;, with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.data += &quot;foo&quot;, with unselected range collapsed at (detachedTextNode, 1) 
+FAIL detachedTextNode.data += &quot;foo&quot;, with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.data += detachedTextNode.data, with unselected range collapsed at (detachedTextNode, 1) 
+FAIL detachedTextNode.data += detachedTextNode.data, with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.textContent = &quot;&quot;, with unselected range collapsed at (detachedTextNode, 1) 
+FAIL detachedTextNode.textContent = &quot;&quot;, with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.textContent = &quot;foo&quot;, with unselected range collapsed at (detachedTextNode, 1) 
+FAIL detachedTextNode.textContent = &quot;foo&quot;, with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.textContent = detachedTextNode.textContent, with unselected range collapsed at (detachedTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedTextNode.textContent = detachedTextNode.textContent, with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.textContent += &quot;&quot;, with unselected range collapsed at (detachedTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedTextNode.textContent += &quot;&quot;, with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.textContent += &quot;foo&quot;, with unselected range collapsed at (detachedTextNode, 1) 
+FAIL detachedTextNode.textContent += &quot;foo&quot;, with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.textContent += detachedTextNode.textContent, with unselected range collapsed at (detachedTextNode, 1) 
+FAIL detachedTextNode.textContent += detachedTextNode.textContent, with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.nodeValue = &quot;&quot;, with unselected range collapsed at (detachedTextNode, 1) 
+FAIL detachedTextNode.nodeValue = &quot;&quot;, with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.nodeValue = &quot;foo&quot;, with unselected range collapsed at (detachedTextNode, 1) 
+FAIL detachedTextNode.nodeValue = &quot;foo&quot;, with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.nodeValue = detachedTextNode.nodeValue, with unselected range collapsed at (detachedTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedTextNode.nodeValue = detachedTextNode.nodeValue, with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.nodeValue += &quot;&quot;, with unselected range collapsed at (detachedTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedTextNode.nodeValue += &quot;&quot;, with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.nodeValue += &quot;foo&quot;, with unselected range collapsed at (detachedTextNode, 1) 
+FAIL detachedTextNode.nodeValue += &quot;foo&quot;, with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.nodeValue += detachedTextNode.nodeValue, with unselected range collapsed at (detachedTextNode, 1) 
+FAIL detachedTextNode.nodeValue += detachedTextNode.nodeValue, with selected range collapsed at (detachedTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.data = &quot;&quot;, with unselected range on detachedTextNode from 0 to detachedTextNode.length 
+FAIL detachedTextNode.data = &quot;&quot;, with selected range on detachedTextNode from 0 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.data = &quot;foo&quot;, with unselected range on detachedTextNode from 0 to detachedTextNode.length 
+FAIL detachedTextNode.data = &quot;foo&quot;, with selected range on detachedTextNode from 0 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.data = detachedTextNode.data, with unselected range on detachedTextNode from 0 to detachedTextNode.length assert_equals: Wrong end offset expected 0 but got 8
+FAIL detachedTextNode.data = detachedTextNode.data, with selected range on detachedTextNode from 0 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.data += &quot;&quot;, with unselected range on detachedTextNode from 0 to detachedTextNode.length assert_equals: Wrong end offset expected 0 but got 8
+FAIL detachedTextNode.data += &quot;&quot;, with selected range on detachedTextNode from 0 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.data += &quot;foo&quot;, with unselected range on detachedTextNode from 0 to detachedTextNode.length 
+FAIL detachedTextNode.data += &quot;foo&quot;, with selected range on detachedTextNode from 0 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.data += detachedTextNode.data, with unselected range on detachedTextNode from 0 to detachedTextNode.length 
+FAIL detachedTextNode.data += detachedTextNode.data, with selected range on detachedTextNode from 0 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.textContent = &quot;&quot;, with unselected range on detachedTextNode from 0 to detachedTextNode.length 
+FAIL detachedTextNode.textContent = &quot;&quot;, with selected range on detachedTextNode from 0 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.textContent = &quot;foo&quot;, with unselected range on detachedTextNode from 0 to detachedTextNode.length 
+FAIL detachedTextNode.textContent = &quot;foo&quot;, with selected range on detachedTextNode from 0 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.textContent = detachedTextNode.textContent, with unselected range on detachedTextNode from 0 to detachedTextNode.length assert_equals: Wrong end offset expected 0 but got 8
+FAIL detachedTextNode.textContent = detachedTextNode.textContent, with selected range on detachedTextNode from 0 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.textContent += &quot;&quot;, with unselected range on detachedTextNode from 0 to detachedTextNode.length assert_equals: Wrong end offset expected 0 but got 8
+FAIL detachedTextNode.textContent += &quot;&quot;, with selected range on detachedTextNode from 0 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.textContent += &quot;foo&quot;, with unselected range on detachedTextNode from 0 to detachedTextNode.length 
+FAIL detachedTextNode.textContent += &quot;foo&quot;, with selected range on detachedTextNode from 0 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.textContent += detachedTextNode.textContent, with unselected range on detachedTextNode from 0 to detachedTextNode.length 
+FAIL detachedTextNode.textContent += detachedTextNode.textContent, with selected range on detachedTextNode from 0 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.nodeValue = &quot;&quot;, with unselected range on detachedTextNode from 0 to detachedTextNode.length 
+FAIL detachedTextNode.nodeValue = &quot;&quot;, with selected range on detachedTextNode from 0 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.nodeValue = &quot;foo&quot;, with unselected range on detachedTextNode from 0 to detachedTextNode.length 
+FAIL detachedTextNode.nodeValue = &quot;foo&quot;, with selected range on detachedTextNode from 0 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.nodeValue = detachedTextNode.nodeValue, with unselected range on detachedTextNode from 0 to detachedTextNode.length assert_equals: Wrong end offset expected 0 but got 8
+FAIL detachedTextNode.nodeValue = detachedTextNode.nodeValue, with selected range on detachedTextNode from 0 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.nodeValue += &quot;&quot;, with unselected range on detachedTextNode from 0 to detachedTextNode.length assert_equals: Wrong end offset expected 0 but got 8
+FAIL detachedTextNode.nodeValue += &quot;&quot;, with selected range on detachedTextNode from 0 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.nodeValue += &quot;foo&quot;, with unselected range on detachedTextNode from 0 to detachedTextNode.length 
+FAIL detachedTextNode.nodeValue += &quot;foo&quot;, with selected range on detachedTextNode from 0 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.nodeValue += detachedTextNode.nodeValue, with unselected range on detachedTextNode from 0 to detachedTextNode.length 
+FAIL detachedTextNode.nodeValue += detachedTextNode.nodeValue, with selected range on detachedTextNode from 0 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.data = &quot;&quot;, with unselected range on detachedTextNode from 1 to detachedTextNode.length 
+FAIL detachedTextNode.data = &quot;&quot;, with selected range on detachedTextNode from 1 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.data = &quot;foo&quot;, with unselected range on detachedTextNode from 1 to detachedTextNode.length 
+FAIL detachedTextNode.data = &quot;foo&quot;, with selected range on detachedTextNode from 1 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.data = detachedTextNode.data, with unselected range on detachedTextNode from 1 to detachedTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedTextNode.data = detachedTextNode.data, with selected range on detachedTextNode from 1 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.data += &quot;&quot;, with unselected range on detachedTextNode from 1 to detachedTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedTextNode.data += &quot;&quot;, with selected range on detachedTextNode from 1 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.data += &quot;foo&quot;, with unselected range on detachedTextNode from 1 to detachedTextNode.length 
+FAIL detachedTextNode.data += &quot;foo&quot;, with selected range on detachedTextNode from 1 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.data += detachedTextNode.data, with unselected range on detachedTextNode from 1 to detachedTextNode.length 
+FAIL detachedTextNode.data += detachedTextNode.data, with selected range on detachedTextNode from 1 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.textContent = &quot;&quot;, with unselected range on detachedTextNode from 1 to detachedTextNode.length 
+FAIL detachedTextNode.textContent = &quot;&quot;, with selected range on detachedTextNode from 1 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.textContent = &quot;foo&quot;, with unselected range on detachedTextNode from 1 to detachedTextNode.length 
+FAIL detachedTextNode.textContent = &quot;foo&quot;, with selected range on detachedTextNode from 1 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.textContent = detachedTextNode.textContent, with unselected range on detachedTextNode from 1 to detachedTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedTextNode.textContent = detachedTextNode.textContent, with selected range on detachedTextNode from 1 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.textContent += &quot;&quot;, with unselected range on detachedTextNode from 1 to detachedTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedTextNode.textContent += &quot;&quot;, with selected range on detachedTextNode from 1 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.textContent += &quot;foo&quot;, with unselected range on detachedTextNode from 1 to detachedTextNode.length 
+FAIL detachedTextNode.textContent += &quot;foo&quot;, with selected range on detachedTextNode from 1 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.textContent += detachedTextNode.textContent, with unselected range on detachedTextNode from 1 to detachedTextNode.length 
+FAIL detachedTextNode.textContent += detachedTextNode.textContent, with selected range on detachedTextNode from 1 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.nodeValue = &quot;&quot;, with unselected range on detachedTextNode from 1 to detachedTextNode.length 
+FAIL detachedTextNode.nodeValue = &quot;&quot;, with selected range on detachedTextNode from 1 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.nodeValue = &quot;foo&quot;, with unselected range on detachedTextNode from 1 to detachedTextNode.length 
+FAIL detachedTextNode.nodeValue = &quot;foo&quot;, with selected range on detachedTextNode from 1 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.nodeValue = detachedTextNode.nodeValue, with unselected range on detachedTextNode from 1 to detachedTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedTextNode.nodeValue = detachedTextNode.nodeValue, with selected range on detachedTextNode from 1 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.nodeValue += &quot;&quot;, with unselected range on detachedTextNode from 1 to detachedTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedTextNode.nodeValue += &quot;&quot;, with selected range on detachedTextNode from 1 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.nodeValue += &quot;foo&quot;, with unselected range on detachedTextNode from 1 to detachedTextNode.length 
+FAIL detachedTextNode.nodeValue += &quot;foo&quot;, with selected range on detachedTextNode from 1 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.nodeValue += detachedTextNode.nodeValue, with unselected range on detachedTextNode from 1 to detachedTextNode.length 
+FAIL detachedTextNode.nodeValue += detachedTextNode.nodeValue, with selected range on detachedTextNode from 1 to detachedTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.data = &quot;&quot;, with unselected range collapsed at (detachedTextNode, detachedTextNode.length) 
+FAIL detachedTextNode.data = &quot;&quot;, with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.data = &quot;foo&quot;, with unselected range collapsed at (detachedTextNode, detachedTextNode.length) 
+FAIL detachedTextNode.data = &quot;foo&quot;, with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.data = detachedTextNode.data, with unselected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Wrong start offset expected 0 but got 8
+FAIL detachedTextNode.data = detachedTextNode.data, with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.data += &quot;&quot;, with unselected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Wrong start offset expected 0 but got 8
+FAIL detachedTextNode.data += &quot;&quot;, with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.data += &quot;foo&quot;, with unselected range collapsed at (detachedTextNode, detachedTextNode.length) 
+FAIL detachedTextNode.data += &quot;foo&quot;, with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.data += detachedTextNode.data, with unselected range collapsed at (detachedTextNode, detachedTextNode.length) 
+FAIL detachedTextNode.data += detachedTextNode.data, with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.textContent = &quot;&quot;, with unselected range collapsed at (detachedTextNode, detachedTextNode.length) 
+FAIL detachedTextNode.textContent = &quot;&quot;, with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.textContent = &quot;foo&quot;, with unselected range collapsed at (detachedTextNode, detachedTextNode.length) 
+FAIL detachedTextNode.textContent = &quot;foo&quot;, with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.textContent = detachedTextNode.textContent, with unselected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Wrong start offset expected 0 but got 8
+FAIL detachedTextNode.textContent = detachedTextNode.textContent, with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.textContent += &quot;&quot;, with unselected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Wrong start offset expected 0 but got 8
+FAIL detachedTextNode.textContent += &quot;&quot;, with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.textContent += &quot;foo&quot;, with unselected range collapsed at (detachedTextNode, detachedTextNode.length) 
+FAIL detachedTextNode.textContent += &quot;foo&quot;, with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.textContent += detachedTextNode.textContent, with unselected range collapsed at (detachedTextNode, detachedTextNode.length) 
+FAIL detachedTextNode.textContent += detachedTextNode.textContent, with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.nodeValue = &quot;&quot;, with unselected range collapsed at (detachedTextNode, detachedTextNode.length) 
+FAIL detachedTextNode.nodeValue = &quot;&quot;, with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.nodeValue = &quot;foo&quot;, with unselected range collapsed at (detachedTextNode, detachedTextNode.length) 
+FAIL detachedTextNode.nodeValue = &quot;foo&quot;, with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.nodeValue = detachedTextNode.nodeValue, with unselected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Wrong start offset expected 0 but got 8
+FAIL detachedTextNode.nodeValue = detachedTextNode.nodeValue, with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedTextNode.nodeValue += &quot;&quot;, with unselected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Wrong start offset expected 0 but got 8
+FAIL detachedTextNode.nodeValue += &quot;&quot;, with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.nodeValue += &quot;foo&quot;, with unselected range collapsed at (detachedTextNode, detachedTextNode.length) 
+FAIL detachedTextNode.nodeValue += &quot;foo&quot;, with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedTextNode.nodeValue += detachedTextNode.nodeValue, with unselected range collapsed at (detachedTextNode, detachedTextNode.length) 
+FAIL detachedTextNode.nodeValue += detachedTextNode.nodeValue, with selected range collapsed at (detachedTextNode, detachedTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.data = &quot;&quot;, with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.data = &quot;&quot;, with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.data = &quot;foo&quot;, with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.data = &quot;foo&quot;, with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.data = detachedForeignTextNode.data, with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.data = detachedForeignTextNode.data, with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.data += &quot;&quot;, with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.data += &quot;&quot;, with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.data += &quot;foo&quot;, with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.data += &quot;foo&quot;, with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.data += detachedForeignTextNode.data, with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.data += detachedForeignTextNode.data, with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.textContent = &quot;&quot;, with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.textContent = &quot;&quot;, with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.textContent = &quot;foo&quot;, with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.textContent = &quot;foo&quot;, with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.textContent = detachedForeignTextNode.textContent, with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.textContent = detachedForeignTextNode.textContent, with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.textContent += &quot;&quot;, with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.textContent += &quot;&quot;, with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.textContent += &quot;foo&quot;, with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.textContent += &quot;foo&quot;, with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.textContent += detachedForeignTextNode.textContent, with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.textContent += detachedForeignTextNode.textContent, with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.nodeValue = &quot;&quot;, with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.nodeValue = &quot;&quot;, with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.nodeValue = &quot;foo&quot;, with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.nodeValue = &quot;foo&quot;, with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.nodeValue = detachedForeignTextNode.nodeValue, with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.nodeValue = detachedForeignTextNode.nodeValue, with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.nodeValue += &quot;&quot;, with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.nodeValue += &quot;&quot;, with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.nodeValue += &quot;foo&quot;, with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.nodeValue += &quot;foo&quot;, with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.nodeValue += detachedForeignTextNode.nodeValue, with unselected range collapsed at (detachedForeignTextNode, 0) 
+FAIL detachedForeignTextNode.nodeValue += detachedForeignTextNode.nodeValue, with selected range collapsed at (detachedForeignTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.data = &quot;&quot;, with unselected range on detachedForeignTextNode from 0 to 1 
+FAIL detachedForeignTextNode.data = &quot;&quot;, with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.data = &quot;foo&quot;, with unselected range on detachedForeignTextNode from 0 to 1 
+FAIL detachedForeignTextNode.data = &quot;foo&quot;, with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.data = detachedForeignTextNode.data, with unselected range on detachedForeignTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedForeignTextNode.data = detachedForeignTextNode.data, with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.data += &quot;&quot;, with unselected range on detachedForeignTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedForeignTextNode.data += &quot;&quot;, with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.data += &quot;foo&quot;, with unselected range on detachedForeignTextNode from 0 to 1 
+FAIL detachedForeignTextNode.data += &quot;foo&quot;, with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.data += detachedForeignTextNode.data, with unselected range on detachedForeignTextNode from 0 to 1 
+FAIL detachedForeignTextNode.data += detachedForeignTextNode.data, with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.textContent = &quot;&quot;, with unselected range on detachedForeignTextNode from 0 to 1 
+FAIL detachedForeignTextNode.textContent = &quot;&quot;, with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.textContent = &quot;foo&quot;, with unselected range on detachedForeignTextNode from 0 to 1 
+FAIL detachedForeignTextNode.textContent = &quot;foo&quot;, with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.textContent = detachedForeignTextNode.textContent, with unselected range on detachedForeignTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedForeignTextNode.textContent = detachedForeignTextNode.textContent, with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.textContent += &quot;&quot;, with unselected range on detachedForeignTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedForeignTextNode.textContent += &quot;&quot;, with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.textContent += &quot;foo&quot;, with unselected range on detachedForeignTextNode from 0 to 1 
+FAIL detachedForeignTextNode.textContent += &quot;foo&quot;, with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.textContent += detachedForeignTextNode.textContent, with unselected range on detachedForeignTextNode from 0 to 1 
+FAIL detachedForeignTextNode.textContent += detachedForeignTextNode.textContent, with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.nodeValue = &quot;&quot;, with unselected range on detachedForeignTextNode from 0 to 1 
+FAIL detachedForeignTextNode.nodeValue = &quot;&quot;, with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.nodeValue = &quot;foo&quot;, with unselected range on detachedForeignTextNode from 0 to 1 
+FAIL detachedForeignTextNode.nodeValue = &quot;foo&quot;, with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.nodeValue = detachedForeignTextNode.nodeValue, with unselected range on detachedForeignTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedForeignTextNode.nodeValue = detachedForeignTextNode.nodeValue, with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.nodeValue += &quot;&quot;, with unselected range on detachedForeignTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedForeignTextNode.nodeValue += &quot;&quot;, with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.nodeValue += &quot;foo&quot;, with unselected range on detachedForeignTextNode from 0 to 1 
+FAIL detachedForeignTextNode.nodeValue += &quot;foo&quot;, with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.nodeValue += detachedForeignTextNode.nodeValue, with unselected range on detachedForeignTextNode from 0 to 1 
+FAIL detachedForeignTextNode.nodeValue += detachedForeignTextNode.nodeValue, with selected range on detachedForeignTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.data = &quot;&quot;, with unselected range collapsed at (detachedForeignTextNode, 1) 
+FAIL detachedForeignTextNode.data = &quot;&quot;, with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.data = &quot;foo&quot;, with unselected range collapsed at (detachedForeignTextNode, 1) 
+FAIL detachedForeignTextNode.data = &quot;foo&quot;, with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.data = detachedForeignTextNode.data, with unselected range collapsed at (detachedForeignTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedForeignTextNode.data = detachedForeignTextNode.data, with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.data += &quot;&quot;, with unselected range collapsed at (detachedForeignTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedForeignTextNode.data += &quot;&quot;, with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.data += &quot;foo&quot;, with unselected range collapsed at (detachedForeignTextNode, 1) 
+FAIL detachedForeignTextNode.data += &quot;foo&quot;, with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.data += detachedForeignTextNode.data, with unselected range collapsed at (detachedForeignTextNode, 1) 
+FAIL detachedForeignTextNode.data += detachedForeignTextNode.data, with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.textContent = &quot;&quot;, with unselected range collapsed at (detachedForeignTextNode, 1) 
+FAIL detachedForeignTextNode.textContent = &quot;&quot;, with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.textContent = &quot;foo&quot;, with unselected range collapsed at (detachedForeignTextNode, 1) 
+FAIL detachedForeignTextNode.textContent = &quot;foo&quot;, with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.textContent = detachedForeignTextNode.textContent, with unselected range collapsed at (detachedForeignTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedForeignTextNode.textContent = detachedForeignTextNode.textContent, with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.textContent += &quot;&quot;, with unselected range collapsed at (detachedForeignTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedForeignTextNode.textContent += &quot;&quot;, with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.textContent += &quot;foo&quot;, with unselected range collapsed at (detachedForeignTextNode, 1) 
+FAIL detachedForeignTextNode.textContent += &quot;foo&quot;, with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.textContent += detachedForeignTextNode.textContent, with unselected range collapsed at (detachedForeignTextNode, 1) 
+FAIL detachedForeignTextNode.textContent += detachedForeignTextNode.textContent, with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.nodeValue = &quot;&quot;, with unselected range collapsed at (detachedForeignTextNode, 1) 
+FAIL detachedForeignTextNode.nodeValue = &quot;&quot;, with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.nodeValue = &quot;foo&quot;, with unselected range collapsed at (detachedForeignTextNode, 1) 
+FAIL detachedForeignTextNode.nodeValue = &quot;foo&quot;, with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.nodeValue = detachedForeignTextNode.nodeValue, with unselected range collapsed at (detachedForeignTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedForeignTextNode.nodeValue = detachedForeignTextNode.nodeValue, with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.nodeValue += &quot;&quot;, with unselected range collapsed at (detachedForeignTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedForeignTextNode.nodeValue += &quot;&quot;, with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.nodeValue += &quot;foo&quot;, with unselected range collapsed at (detachedForeignTextNode, 1) 
+FAIL detachedForeignTextNode.nodeValue += &quot;foo&quot;, with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.nodeValue += detachedForeignTextNode.nodeValue, with unselected range collapsed at (detachedForeignTextNode, 1) 
+FAIL detachedForeignTextNode.nodeValue += detachedForeignTextNode.nodeValue, with selected range collapsed at (detachedForeignTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.data = &quot;&quot;, with unselected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length 
+FAIL detachedForeignTextNode.data = &quot;&quot;, with selected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.data = &quot;foo&quot;, with unselected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length 
+FAIL detachedForeignTextNode.data = &quot;foo&quot;, with selected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.data = detachedForeignTextNode.data, with unselected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length assert_equals: Wrong end offset expected 0 but got 8
+FAIL detachedForeignTextNode.data = detachedForeignTextNode.data, with selected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.data += &quot;&quot;, with unselected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length assert_equals: Wrong end offset expected 0 but got 8
+FAIL detachedForeignTextNode.data += &quot;&quot;, with selected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.data += &quot;foo&quot;, with unselected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length 
+FAIL detachedForeignTextNode.data += &quot;foo&quot;, with selected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.data += detachedForeignTextNode.data, with unselected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length 
+FAIL detachedForeignTextNode.data += detachedForeignTextNode.data, with selected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.textContent = &quot;&quot;, with unselected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length 
+FAIL detachedForeignTextNode.textContent = &quot;&quot;, with selected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.textContent = &quot;foo&quot;, with unselected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length 
+FAIL detachedForeignTextNode.textContent = &quot;foo&quot;, with selected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.textContent = detachedForeignTextNode.textContent, with unselected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length assert_equals: Wrong end offset expected 0 but got 8
+FAIL detachedForeignTextNode.textContent = detachedForeignTextNode.textContent, with selected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.textContent += &quot;&quot;, with unselected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length assert_equals: Wrong end offset expected 0 but got 8
+FAIL detachedForeignTextNode.textContent += &quot;&quot;, with selected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.textContent += &quot;foo&quot;, with unselected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length 
+FAIL detachedForeignTextNode.textContent += &quot;foo&quot;, with selected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.textContent += detachedForeignTextNode.textContent, with unselected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length 
+FAIL detachedForeignTextNode.textContent += detachedForeignTextNode.textContent, with selected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.nodeValue = &quot;&quot;, with unselected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length 
+FAIL detachedForeignTextNode.nodeValue = &quot;&quot;, with selected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.nodeValue = &quot;foo&quot;, with unselected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length 
+FAIL detachedForeignTextNode.nodeValue = &quot;foo&quot;, with selected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.nodeValue = detachedForeignTextNode.nodeValue, with unselected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length assert_equals: Wrong end offset expected 0 but got 8
+FAIL detachedForeignTextNode.nodeValue = detachedForeignTextNode.nodeValue, with selected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.nodeValue += &quot;&quot;, with unselected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length assert_equals: Wrong end offset expected 0 but got 8
+FAIL detachedForeignTextNode.nodeValue += &quot;&quot;, with selected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.nodeValue += &quot;foo&quot;, with unselected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length 
+FAIL detachedForeignTextNode.nodeValue += &quot;foo&quot;, with selected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.nodeValue += detachedForeignTextNode.nodeValue, with unselected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length 
+FAIL detachedForeignTextNode.nodeValue += detachedForeignTextNode.nodeValue, with selected range on detachedForeignTextNode from 0 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.data = &quot;&quot;, with unselected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length 
+FAIL detachedForeignTextNode.data = &quot;&quot;, with selected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.data = &quot;foo&quot;, with unselected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length 
+FAIL detachedForeignTextNode.data = &quot;foo&quot;, with selected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.data = detachedForeignTextNode.data, with unselected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedForeignTextNode.data = detachedForeignTextNode.data, with selected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.data += &quot;&quot;, with unselected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedForeignTextNode.data += &quot;&quot;, with selected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.data += &quot;foo&quot;, with unselected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length 
+FAIL detachedForeignTextNode.data += &quot;foo&quot;, with selected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.data += detachedForeignTextNode.data, with unselected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length 
+FAIL detachedForeignTextNode.data += detachedForeignTextNode.data, with selected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.textContent = &quot;&quot;, with unselected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length 
+FAIL detachedForeignTextNode.textContent = &quot;&quot;, with selected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.textContent = &quot;foo&quot;, with unselected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length 
+FAIL detachedForeignTextNode.textContent = &quot;foo&quot;, with selected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.textContent = detachedForeignTextNode.textContent, with unselected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedForeignTextNode.textContent = detachedForeignTextNode.textContent, with selected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.textContent += &quot;&quot;, with unselected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedForeignTextNode.textContent += &quot;&quot;, with selected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.textContent += &quot;foo&quot;, with unselected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length 
+FAIL detachedForeignTextNode.textContent += &quot;foo&quot;, with selected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.textContent += detachedForeignTextNode.textContent, with unselected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length 
+FAIL detachedForeignTextNode.textContent += detachedForeignTextNode.textContent, with selected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.nodeValue = &quot;&quot;, with unselected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length 
+FAIL detachedForeignTextNode.nodeValue = &quot;&quot;, with selected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.nodeValue = &quot;foo&quot;, with unselected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length 
+FAIL detachedForeignTextNode.nodeValue = &quot;foo&quot;, with selected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.nodeValue = detachedForeignTextNode.nodeValue, with unselected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedForeignTextNode.nodeValue = detachedForeignTextNode.nodeValue, with selected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.nodeValue += &quot;&quot;, with unselected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedForeignTextNode.nodeValue += &quot;&quot;, with selected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.nodeValue += &quot;foo&quot;, with unselected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length 
+FAIL detachedForeignTextNode.nodeValue += &quot;foo&quot;, with selected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.nodeValue += detachedForeignTextNode.nodeValue, with unselected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length 
+FAIL detachedForeignTextNode.nodeValue += detachedForeignTextNode.nodeValue, with selected range on detachedForeignTextNode from 1 to detachedForeignTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.data = &quot;&quot;, with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) 
+FAIL detachedForeignTextNode.data = &quot;&quot;, with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.data = &quot;foo&quot;, with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) 
+FAIL detachedForeignTextNode.data = &quot;foo&quot;, with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.data = detachedForeignTextNode.data, with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Wrong start offset expected 0 but got 8
+FAIL detachedForeignTextNode.data = detachedForeignTextNode.data, with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.data += &quot;&quot;, with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Wrong start offset expected 0 but got 8
+FAIL detachedForeignTextNode.data += &quot;&quot;, with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.data += &quot;foo&quot;, with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) 
+FAIL detachedForeignTextNode.data += &quot;foo&quot;, with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.data += detachedForeignTextNode.data, with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) 
+FAIL detachedForeignTextNode.data += detachedForeignTextNode.data, with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.textContent = &quot;&quot;, with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) 
+FAIL detachedForeignTextNode.textContent = &quot;&quot;, with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.textContent = &quot;foo&quot;, with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) 
+FAIL detachedForeignTextNode.textContent = &quot;foo&quot;, with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.textContent = detachedForeignTextNode.textContent, with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Wrong start offset expected 0 but got 8
+FAIL detachedForeignTextNode.textContent = detachedForeignTextNode.textContent, with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.textContent += &quot;&quot;, with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Wrong start offset expected 0 but got 8
+FAIL detachedForeignTextNode.textContent += &quot;&quot;, with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.textContent += &quot;foo&quot;, with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) 
+FAIL detachedForeignTextNode.textContent += &quot;foo&quot;, with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.textContent += detachedForeignTextNode.textContent, with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) 
+FAIL detachedForeignTextNode.textContent += detachedForeignTextNode.textContent, with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.nodeValue = &quot;&quot;, with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) 
+FAIL detachedForeignTextNode.nodeValue = &quot;&quot;, with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.nodeValue = &quot;foo&quot;, with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) 
+FAIL detachedForeignTextNode.nodeValue = &quot;foo&quot;, with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.nodeValue = detachedForeignTextNode.nodeValue, with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Wrong start offset expected 0 but got 8
+FAIL detachedForeignTextNode.nodeValue = detachedForeignTextNode.nodeValue, with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignTextNode.nodeValue += &quot;&quot;, with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Wrong start offset expected 0 but got 8
+FAIL detachedForeignTextNode.nodeValue += &quot;&quot;, with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.nodeValue += &quot;foo&quot;, with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) 
+FAIL detachedForeignTextNode.nodeValue += &quot;foo&quot;, with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignTextNode.nodeValue += detachedForeignTextNode.nodeValue, with unselected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) 
+FAIL detachedForeignTextNode.nodeValue += detachedForeignTextNode.nodeValue, with selected range collapsed at (detachedForeignTextNode, detachedForeignTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.data = &quot;&quot;, with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.data = &quot;&quot;, with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.data = &quot;foo&quot;, with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.data = &quot;foo&quot;, with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.data = detachedXmlTextNode.data, with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.data = detachedXmlTextNode.data, with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.data += &quot;&quot;, with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.data += &quot;&quot;, with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.data += &quot;foo&quot;, with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.data += &quot;foo&quot;, with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.data += detachedXmlTextNode.data, with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.data += detachedXmlTextNode.data, with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.textContent = &quot;&quot;, with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.textContent = &quot;&quot;, with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.textContent = &quot;foo&quot;, with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.textContent = &quot;foo&quot;, with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.textContent = detachedXmlTextNode.textContent, with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.textContent = detachedXmlTextNode.textContent, with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.textContent += &quot;&quot;, with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.textContent += &quot;&quot;, with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.textContent += &quot;foo&quot;, with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.textContent += &quot;foo&quot;, with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.textContent += detachedXmlTextNode.textContent, with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.textContent += detachedXmlTextNode.textContent, with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.nodeValue = &quot;&quot;, with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.nodeValue = &quot;&quot;, with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.nodeValue = &quot;foo&quot;, with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.nodeValue = &quot;foo&quot;, with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.nodeValue = detachedXmlTextNode.nodeValue, with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.nodeValue = detachedXmlTextNode.nodeValue, with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.nodeValue += &quot;&quot;, with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.nodeValue += &quot;&quot;, with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.nodeValue += &quot;foo&quot;, with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.nodeValue += &quot;foo&quot;, with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.nodeValue += detachedXmlTextNode.nodeValue, with unselected range collapsed at (detachedXmlTextNode, 0) 
+FAIL detachedXmlTextNode.nodeValue += detachedXmlTextNode.nodeValue, with selected range collapsed at (detachedXmlTextNode, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.data = &quot;&quot;, with unselected range on detachedXmlTextNode from 0 to 1 
+FAIL detachedXmlTextNode.data = &quot;&quot;, with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.data = &quot;foo&quot;, with unselected range on detachedXmlTextNode from 0 to 1 
+FAIL detachedXmlTextNode.data = &quot;foo&quot;, with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.data = detachedXmlTextNode.data, with unselected range on detachedXmlTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedXmlTextNode.data = detachedXmlTextNode.data, with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.data += &quot;&quot;, with unselected range on detachedXmlTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedXmlTextNode.data += &quot;&quot;, with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.data += &quot;foo&quot;, with unselected range on detachedXmlTextNode from 0 to 1 
+FAIL detachedXmlTextNode.data += &quot;foo&quot;, with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.data += detachedXmlTextNode.data, with unselected range on detachedXmlTextNode from 0 to 1 
+FAIL detachedXmlTextNode.data += detachedXmlTextNode.data, with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.textContent = &quot;&quot;, with unselected range on detachedXmlTextNode from 0 to 1 
+FAIL detachedXmlTextNode.textContent = &quot;&quot;, with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.textContent = &quot;foo&quot;, with unselected range on detachedXmlTextNode from 0 to 1 
+FAIL detachedXmlTextNode.textContent = &quot;foo&quot;, with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.textContent = detachedXmlTextNode.textContent, with unselected range on detachedXmlTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedXmlTextNode.textContent = detachedXmlTextNode.textContent, with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.textContent += &quot;&quot;, with unselected range on detachedXmlTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedXmlTextNode.textContent += &quot;&quot;, with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.textContent += &quot;foo&quot;, with unselected range on detachedXmlTextNode from 0 to 1 
+FAIL detachedXmlTextNode.textContent += &quot;foo&quot;, with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.textContent += detachedXmlTextNode.textContent, with unselected range on detachedXmlTextNode from 0 to 1 
+FAIL detachedXmlTextNode.textContent += detachedXmlTextNode.textContent, with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.nodeValue = &quot;&quot;, with unselected range on detachedXmlTextNode from 0 to 1 
+FAIL detachedXmlTextNode.nodeValue = &quot;&quot;, with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.nodeValue = &quot;foo&quot;, with unselected range on detachedXmlTextNode from 0 to 1 
+FAIL detachedXmlTextNode.nodeValue = &quot;foo&quot;, with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.nodeValue = detachedXmlTextNode.nodeValue, with unselected range on detachedXmlTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedXmlTextNode.nodeValue = detachedXmlTextNode.nodeValue, with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.nodeValue += &quot;&quot;, with unselected range on detachedXmlTextNode from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedXmlTextNode.nodeValue += &quot;&quot;, with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.nodeValue += &quot;foo&quot;, with unselected range on detachedXmlTextNode from 0 to 1 
+FAIL detachedXmlTextNode.nodeValue += &quot;foo&quot;, with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.nodeValue += detachedXmlTextNode.nodeValue, with unselected range on detachedXmlTextNode from 0 to 1 
+FAIL detachedXmlTextNode.nodeValue += detachedXmlTextNode.nodeValue, with selected range on detachedXmlTextNode from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.data = &quot;&quot;, with unselected range collapsed at (detachedXmlTextNode, 1) 
+FAIL detachedXmlTextNode.data = &quot;&quot;, with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.data = &quot;foo&quot;, with unselected range collapsed at (detachedXmlTextNode, 1) 
+FAIL detachedXmlTextNode.data = &quot;foo&quot;, with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.data = detachedXmlTextNode.data, with unselected range collapsed at (detachedXmlTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedXmlTextNode.data = detachedXmlTextNode.data, with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.data += &quot;&quot;, with unselected range collapsed at (detachedXmlTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedXmlTextNode.data += &quot;&quot;, with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.data += &quot;foo&quot;, with unselected range collapsed at (detachedXmlTextNode, 1) 
+FAIL detachedXmlTextNode.data += &quot;foo&quot;, with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.data += detachedXmlTextNode.data, with unselected range collapsed at (detachedXmlTextNode, 1) 
+FAIL detachedXmlTextNode.data += detachedXmlTextNode.data, with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.textContent = &quot;&quot;, with unselected range collapsed at (detachedXmlTextNode, 1) 
+FAIL detachedXmlTextNode.textContent = &quot;&quot;, with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.textContent = &quot;foo&quot;, with unselected range collapsed at (detachedXmlTextNode, 1) 
+FAIL detachedXmlTextNode.textContent = &quot;foo&quot;, with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.textContent = detachedXmlTextNode.textContent, with unselected range collapsed at (detachedXmlTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedXmlTextNode.textContent = detachedXmlTextNode.textContent, with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.textContent += &quot;&quot;, with unselected range collapsed at (detachedXmlTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedXmlTextNode.textContent += &quot;&quot;, with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.textContent += &quot;foo&quot;, with unselected range collapsed at (detachedXmlTextNode, 1) 
+FAIL detachedXmlTextNode.textContent += &quot;foo&quot;, with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.textContent += detachedXmlTextNode.textContent, with unselected range collapsed at (detachedXmlTextNode, 1) 
+FAIL detachedXmlTextNode.textContent += detachedXmlTextNode.textContent, with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.nodeValue = &quot;&quot;, with unselected range collapsed at (detachedXmlTextNode, 1) 
+FAIL detachedXmlTextNode.nodeValue = &quot;&quot;, with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.nodeValue = &quot;foo&quot;, with unselected range collapsed at (detachedXmlTextNode, 1) 
+FAIL detachedXmlTextNode.nodeValue = &quot;foo&quot;, with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.nodeValue = detachedXmlTextNode.nodeValue, with unselected range collapsed at (detachedXmlTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedXmlTextNode.nodeValue = detachedXmlTextNode.nodeValue, with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.nodeValue += &quot;&quot;, with unselected range collapsed at (detachedXmlTextNode, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedXmlTextNode.nodeValue += &quot;&quot;, with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.nodeValue += &quot;foo&quot;, with unselected range collapsed at (detachedXmlTextNode, 1) 
+FAIL detachedXmlTextNode.nodeValue += &quot;foo&quot;, with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.nodeValue += detachedXmlTextNode.nodeValue, with unselected range collapsed at (detachedXmlTextNode, 1) 
+FAIL detachedXmlTextNode.nodeValue += detachedXmlTextNode.nodeValue, with selected range collapsed at (detachedXmlTextNode, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.data = &quot;&quot;, with unselected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length 
+FAIL detachedXmlTextNode.data = &quot;&quot;, with selected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.data = &quot;foo&quot;, with unselected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length 
+FAIL detachedXmlTextNode.data = &quot;foo&quot;, with selected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.data = detachedXmlTextNode.data, with unselected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length assert_equals: Wrong end offset expected 0 but got 8
+FAIL detachedXmlTextNode.data = detachedXmlTextNode.data, with selected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.data += &quot;&quot;, with unselected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length assert_equals: Wrong end offset expected 0 but got 8
+FAIL detachedXmlTextNode.data += &quot;&quot;, with selected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.data += &quot;foo&quot;, with unselected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length 
+FAIL detachedXmlTextNode.data += &quot;foo&quot;, with selected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.data += detachedXmlTextNode.data, with unselected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length 
+FAIL detachedXmlTextNode.data += detachedXmlTextNode.data, with selected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.textContent = &quot;&quot;, with unselected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length 
+FAIL detachedXmlTextNode.textContent = &quot;&quot;, with selected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.textContent = &quot;foo&quot;, with unselected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length 
+FAIL detachedXmlTextNode.textContent = &quot;foo&quot;, with selected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.textContent = detachedXmlTextNode.textContent, with unselected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length assert_equals: Wrong end offset expected 0 but got 8
+FAIL detachedXmlTextNode.textContent = detachedXmlTextNode.textContent, with selected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.textContent += &quot;&quot;, with unselected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length assert_equals: Wrong end offset expected 0 but got 8
+FAIL detachedXmlTextNode.textContent += &quot;&quot;, with selected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.textContent += &quot;foo&quot;, with unselected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length 
+FAIL detachedXmlTextNode.textContent += &quot;foo&quot;, with selected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.textContent += detachedXmlTextNode.textContent, with unselected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length 
+FAIL detachedXmlTextNode.textContent += detachedXmlTextNode.textContent, with selected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.nodeValue = &quot;&quot;, with unselected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length 
+FAIL detachedXmlTextNode.nodeValue = &quot;&quot;, with selected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.nodeValue = &quot;foo&quot;, with unselected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length 
+FAIL detachedXmlTextNode.nodeValue = &quot;foo&quot;, with selected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.nodeValue = detachedXmlTextNode.nodeValue, with unselected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length assert_equals: Wrong end offset expected 0 but got 8
+FAIL detachedXmlTextNode.nodeValue = detachedXmlTextNode.nodeValue, with selected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.nodeValue += &quot;&quot;, with unselected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length assert_equals: Wrong end offset expected 0 but got 8
+FAIL detachedXmlTextNode.nodeValue += &quot;&quot;, with selected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.nodeValue += &quot;foo&quot;, with unselected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length 
+FAIL detachedXmlTextNode.nodeValue += &quot;foo&quot;, with selected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.nodeValue += detachedXmlTextNode.nodeValue, with unselected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length 
+FAIL detachedXmlTextNode.nodeValue += detachedXmlTextNode.nodeValue, with selected range on detachedXmlTextNode from 0 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.data = &quot;&quot;, with unselected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length 
+FAIL detachedXmlTextNode.data = &quot;&quot;, with selected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.data = &quot;foo&quot;, with unselected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length 
+FAIL detachedXmlTextNode.data = &quot;foo&quot;, with selected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.data = detachedXmlTextNode.data, with unselected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedXmlTextNode.data = detachedXmlTextNode.data, with selected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.data += &quot;&quot;, with unselected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedXmlTextNode.data += &quot;&quot;, with selected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.data += &quot;foo&quot;, with unselected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length 
+FAIL detachedXmlTextNode.data += &quot;foo&quot;, with selected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.data += detachedXmlTextNode.data, with unselected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length 
+FAIL detachedXmlTextNode.data += detachedXmlTextNode.data, with selected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.textContent = &quot;&quot;, with unselected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length 
+FAIL detachedXmlTextNode.textContent = &quot;&quot;, with selected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.textContent = &quot;foo&quot;, with unselected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length 
+FAIL detachedXmlTextNode.textContent = &quot;foo&quot;, with selected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.textContent = detachedXmlTextNode.textContent, with unselected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedXmlTextNode.textContent = detachedXmlTextNode.textContent, with selected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.textContent += &quot;&quot;, with unselected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedXmlTextNode.textContent += &quot;&quot;, with selected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.textContent += &quot;foo&quot;, with unselected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length 
+FAIL detachedXmlTextNode.textContent += &quot;foo&quot;, with selected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.textContent += detachedXmlTextNode.textContent, with unselected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length 
+FAIL detachedXmlTextNode.textContent += detachedXmlTextNode.textContent, with selected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.nodeValue = &quot;&quot;, with unselected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length 
+FAIL detachedXmlTextNode.nodeValue = &quot;&quot;, with selected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.nodeValue = &quot;foo&quot;, with unselected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length 
+FAIL detachedXmlTextNode.nodeValue = &quot;foo&quot;, with selected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.nodeValue = detachedXmlTextNode.nodeValue, with unselected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedXmlTextNode.nodeValue = detachedXmlTextNode.nodeValue, with selected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.nodeValue += &quot;&quot;, with unselected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedXmlTextNode.nodeValue += &quot;&quot;, with selected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.nodeValue += &quot;foo&quot;, with unselected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length 
+FAIL detachedXmlTextNode.nodeValue += &quot;foo&quot;, with selected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.nodeValue += detachedXmlTextNode.nodeValue, with unselected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length 
+FAIL detachedXmlTextNode.nodeValue += detachedXmlTextNode.nodeValue, with selected range on detachedXmlTextNode from 1 to detachedXmlTextNode.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.data = &quot;&quot;, with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) 
+FAIL detachedXmlTextNode.data = &quot;&quot;, with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.data = &quot;foo&quot;, with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) 
+FAIL detachedXmlTextNode.data = &quot;foo&quot;, with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.data = detachedXmlTextNode.data, with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Wrong start offset expected 0 but got 8
+FAIL detachedXmlTextNode.data = detachedXmlTextNode.data, with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.data += &quot;&quot;, with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Wrong start offset expected 0 but got 8
+FAIL detachedXmlTextNode.data += &quot;&quot;, with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.data += &quot;foo&quot;, with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) 
+FAIL detachedXmlTextNode.data += &quot;foo&quot;, with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.data += detachedXmlTextNode.data, with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) 
+FAIL detachedXmlTextNode.data += detachedXmlTextNode.data, with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.textContent = &quot;&quot;, with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) 
+FAIL detachedXmlTextNode.textContent = &quot;&quot;, with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.textContent = &quot;foo&quot;, with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) 
+FAIL detachedXmlTextNode.textContent = &quot;foo&quot;, with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.textContent = detachedXmlTextNode.textContent, with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Wrong start offset expected 0 but got 8
+FAIL detachedXmlTextNode.textContent = detachedXmlTextNode.textContent, with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.textContent += &quot;&quot;, with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Wrong start offset expected 0 but got 8
+FAIL detachedXmlTextNode.textContent += &quot;&quot;, with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.textContent += &quot;foo&quot;, with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) 
+FAIL detachedXmlTextNode.textContent += &quot;foo&quot;, with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.textContent += detachedXmlTextNode.textContent, with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) 
+FAIL detachedXmlTextNode.textContent += detachedXmlTextNode.textContent, with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.nodeValue = &quot;&quot;, with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) 
+FAIL detachedXmlTextNode.nodeValue = &quot;&quot;, with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.nodeValue = &quot;foo&quot;, with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) 
+FAIL detachedXmlTextNode.nodeValue = &quot;foo&quot;, with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.nodeValue = detachedXmlTextNode.nodeValue, with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Wrong start offset expected 0 but got 8
+FAIL detachedXmlTextNode.nodeValue = detachedXmlTextNode.nodeValue, with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlTextNode.nodeValue += &quot;&quot;, with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Wrong start offset expected 0 but got 8
+FAIL detachedXmlTextNode.nodeValue += &quot;&quot;, with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.nodeValue += &quot;foo&quot;, with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) 
+FAIL detachedXmlTextNode.nodeValue += &quot;foo&quot;, with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlTextNode.nodeValue += detachedXmlTextNode.nodeValue, with unselected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) 
+FAIL detachedXmlTextNode.nodeValue += detachedXmlTextNode.nodeValue, with selected range collapsed at (detachedXmlTextNode, detachedXmlTextNode.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS comment.data = &quot;&quot;, with unselected range collapsed at (comment, 0) 
+FAIL comment.data = &quot;&quot;, with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.data = &quot;foo&quot;, with unselected range collapsed at (comment, 0) 
+FAIL comment.data = &quot;foo&quot;, with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.data = comment.data, with unselected range collapsed at (comment, 0) 
+FAIL comment.data = comment.data, with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.data += &quot;&quot;, with unselected range collapsed at (comment, 0) 
+FAIL comment.data += &quot;&quot;, with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.data += &quot;foo&quot;, with unselected range collapsed at (comment, 0) 
+FAIL comment.data += &quot;foo&quot;, with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.data += comment.data, with unselected range collapsed at (comment, 0) 
+FAIL comment.data += comment.data, with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.textContent = &quot;&quot;, with unselected range collapsed at (comment, 0) 
+FAIL comment.textContent = &quot;&quot;, with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.textContent = &quot;foo&quot;, with unselected range collapsed at (comment, 0) 
+FAIL comment.textContent = &quot;foo&quot;, with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.textContent = comment.textContent, with unselected range collapsed at (comment, 0) 
+FAIL comment.textContent = comment.textContent, with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.textContent += &quot;&quot;, with unselected range collapsed at (comment, 0) 
+FAIL comment.textContent += &quot;&quot;, with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.textContent += &quot;foo&quot;, with unselected range collapsed at (comment, 0) 
+FAIL comment.textContent += &quot;foo&quot;, with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.textContent += comment.textContent, with unselected range collapsed at (comment, 0) 
+FAIL comment.textContent += comment.textContent, with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.nodeValue = &quot;&quot;, with unselected range collapsed at (comment, 0) 
+FAIL comment.nodeValue = &quot;&quot;, with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.nodeValue = &quot;foo&quot;, with unselected range collapsed at (comment, 0) 
+FAIL comment.nodeValue = &quot;foo&quot;, with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.nodeValue = comment.nodeValue, with unselected range collapsed at (comment, 0) 
+FAIL comment.nodeValue = comment.nodeValue, with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.nodeValue += &quot;&quot;, with unselected range collapsed at (comment, 0) 
+FAIL comment.nodeValue += &quot;&quot;, with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.nodeValue += &quot;foo&quot;, with unselected range collapsed at (comment, 0) 
+FAIL comment.nodeValue += &quot;foo&quot;, with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.nodeValue += comment.nodeValue, with unselected range collapsed at (comment, 0) 
+FAIL comment.nodeValue += comment.nodeValue, with selected range collapsed at (comment, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.data = &quot;&quot;, with unselected range on comment from 0 to 1 
+FAIL comment.data = &quot;&quot;, with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.data = &quot;foo&quot;, with unselected range on comment from 0 to 1 
+FAIL comment.data = &quot;foo&quot;, with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.data = comment.data, with unselected range on comment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL comment.data = comment.data, with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.data += &quot;&quot;, with unselected range on comment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL comment.data += &quot;&quot;, with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.data += &quot;foo&quot;, with unselected range on comment from 0 to 1 
+FAIL comment.data += &quot;foo&quot;, with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.data += comment.data, with unselected range on comment from 0 to 1 
+FAIL comment.data += comment.data, with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.textContent = &quot;&quot;, with unselected range on comment from 0 to 1 
+FAIL comment.textContent = &quot;&quot;, with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.textContent = &quot;foo&quot;, with unselected range on comment from 0 to 1 
+FAIL comment.textContent = &quot;foo&quot;, with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.textContent = comment.textContent, with unselected range on comment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL comment.textContent = comment.textContent, with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.textContent += &quot;&quot;, with unselected range on comment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL comment.textContent += &quot;&quot;, with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.textContent += &quot;foo&quot;, with unselected range on comment from 0 to 1 
+FAIL comment.textContent += &quot;foo&quot;, with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.textContent += comment.textContent, with unselected range on comment from 0 to 1 
+FAIL comment.textContent += comment.textContent, with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.nodeValue = &quot;&quot;, with unselected range on comment from 0 to 1 
+FAIL comment.nodeValue = &quot;&quot;, with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.nodeValue = &quot;foo&quot;, with unselected range on comment from 0 to 1 
+FAIL comment.nodeValue = &quot;foo&quot;, with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.nodeValue = comment.nodeValue, with unselected range on comment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL comment.nodeValue = comment.nodeValue, with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.nodeValue += &quot;&quot;, with unselected range on comment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL comment.nodeValue += &quot;&quot;, with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.nodeValue += &quot;foo&quot;, with unselected range on comment from 0 to 1 
+FAIL comment.nodeValue += &quot;foo&quot;, with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.nodeValue += comment.nodeValue, with unselected range on comment from 0 to 1 
+FAIL comment.nodeValue += comment.nodeValue, with selected range on comment from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.data = &quot;&quot;, with unselected range collapsed at (comment, 1) 
+FAIL comment.data = &quot;&quot;, with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.data = &quot;foo&quot;, with unselected range collapsed at (comment, 1) 
+FAIL comment.data = &quot;foo&quot;, with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.data = comment.data, with unselected range collapsed at (comment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL comment.data = comment.data, with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.data += &quot;&quot;, with unselected range collapsed at (comment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL comment.data += &quot;&quot;, with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.data += &quot;foo&quot;, with unselected range collapsed at (comment, 1) 
+FAIL comment.data += &quot;foo&quot;, with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.data += comment.data, with unselected range collapsed at (comment, 1) 
+FAIL comment.data += comment.data, with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.textContent = &quot;&quot;, with unselected range collapsed at (comment, 1) 
+FAIL comment.textContent = &quot;&quot;, with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.textContent = &quot;foo&quot;, with unselected range collapsed at (comment, 1) 
+FAIL comment.textContent = &quot;foo&quot;, with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.textContent = comment.textContent, with unselected range collapsed at (comment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL comment.textContent = comment.textContent, with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.textContent += &quot;&quot;, with unselected range collapsed at (comment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL comment.textContent += &quot;&quot;, with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.textContent += &quot;foo&quot;, with unselected range collapsed at (comment, 1) 
+FAIL comment.textContent += &quot;foo&quot;, with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.textContent += comment.textContent, with unselected range collapsed at (comment, 1) 
+FAIL comment.textContent += comment.textContent, with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.nodeValue = &quot;&quot;, with unselected range collapsed at (comment, 1) 
+FAIL comment.nodeValue = &quot;&quot;, with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.nodeValue = &quot;foo&quot;, with unselected range collapsed at (comment, 1) 
+FAIL comment.nodeValue = &quot;foo&quot;, with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.nodeValue = comment.nodeValue, with unselected range collapsed at (comment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL comment.nodeValue = comment.nodeValue, with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.nodeValue += &quot;&quot;, with unselected range collapsed at (comment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL comment.nodeValue += &quot;&quot;, with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.nodeValue += &quot;foo&quot;, with unselected range collapsed at (comment, 1) 
+FAIL comment.nodeValue += &quot;foo&quot;, with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.nodeValue += comment.nodeValue, with unselected range collapsed at (comment, 1) 
+FAIL comment.nodeValue += comment.nodeValue, with selected range collapsed at (comment, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.data = &quot;&quot;, with unselected range on comment from 0 to comment.length 
+FAIL comment.data = &quot;&quot;, with selected range on comment from 0 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.data = &quot;foo&quot;, with unselected range on comment from 0 to comment.length 
+FAIL comment.data = &quot;foo&quot;, with selected range on comment from 0 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.data = comment.data, with unselected range on comment from 0 to comment.length assert_equals: Wrong end offset expected 0 but got 14
+FAIL comment.data = comment.data, with selected range on comment from 0 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.data += &quot;&quot;, with unselected range on comment from 0 to comment.length assert_equals: Wrong end offset expected 0 but got 14
+FAIL comment.data += &quot;&quot;, with selected range on comment from 0 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.data += &quot;foo&quot;, with unselected range on comment from 0 to comment.length 
+FAIL comment.data += &quot;foo&quot;, with selected range on comment from 0 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.data += comment.data, with unselected range on comment from 0 to comment.length 
+FAIL comment.data += comment.data, with selected range on comment from 0 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.textContent = &quot;&quot;, with unselected range on comment from 0 to comment.length 
+FAIL comment.textContent = &quot;&quot;, with selected range on comment from 0 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.textContent = &quot;foo&quot;, with unselected range on comment from 0 to comment.length 
+FAIL comment.textContent = &quot;foo&quot;, with selected range on comment from 0 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.textContent = comment.textContent, with unselected range on comment from 0 to comment.length assert_equals: Wrong end offset expected 0 but got 14
+FAIL comment.textContent = comment.textContent, with selected range on comment from 0 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.textContent += &quot;&quot;, with unselected range on comment from 0 to comment.length assert_equals: Wrong end offset expected 0 but got 14
+FAIL comment.textContent += &quot;&quot;, with selected range on comment from 0 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.textContent += &quot;foo&quot;, with unselected range on comment from 0 to comment.length 
+FAIL comment.textContent += &quot;foo&quot;, with selected range on comment from 0 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.textContent += comment.textContent, with unselected range on comment from 0 to comment.length 
+FAIL comment.textContent += comment.textContent, with selected range on comment from 0 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.nodeValue = &quot;&quot;, with unselected range on comment from 0 to comment.length 
+FAIL comment.nodeValue = &quot;&quot;, with selected range on comment from 0 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.nodeValue = &quot;foo&quot;, with unselected range on comment from 0 to comment.length 
+FAIL comment.nodeValue = &quot;foo&quot;, with selected range on comment from 0 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.nodeValue = comment.nodeValue, with unselected range on comment from 0 to comment.length assert_equals: Wrong end offset expected 0 but got 14
+FAIL comment.nodeValue = comment.nodeValue, with selected range on comment from 0 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.nodeValue += &quot;&quot;, with unselected range on comment from 0 to comment.length assert_equals: Wrong end offset expected 0 but got 14
+FAIL comment.nodeValue += &quot;&quot;, with selected range on comment from 0 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.nodeValue += &quot;foo&quot;, with unselected range on comment from 0 to comment.length 
+FAIL comment.nodeValue += &quot;foo&quot;, with selected range on comment from 0 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.nodeValue += comment.nodeValue, with unselected range on comment from 0 to comment.length 
+FAIL comment.nodeValue += comment.nodeValue, with selected range on comment from 0 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.data = &quot;&quot;, with unselected range on comment from 1 to comment.length 
+FAIL comment.data = &quot;&quot;, with selected range on comment from 1 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.data = &quot;foo&quot;, with unselected range on comment from 1 to comment.length 
+FAIL comment.data = &quot;foo&quot;, with selected range on comment from 1 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.data = comment.data, with unselected range on comment from 1 to comment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL comment.data = comment.data, with selected range on comment from 1 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.data += &quot;&quot;, with unselected range on comment from 1 to comment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL comment.data += &quot;&quot;, with selected range on comment from 1 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.data += &quot;foo&quot;, with unselected range on comment from 1 to comment.length 
+FAIL comment.data += &quot;foo&quot;, with selected range on comment from 1 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.data += comment.data, with unselected range on comment from 1 to comment.length 
+FAIL comment.data += comment.data, with selected range on comment from 1 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.textContent = &quot;&quot;, with unselected range on comment from 1 to comment.length 
+FAIL comment.textContent = &quot;&quot;, with selected range on comment from 1 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.textContent = &quot;foo&quot;, with unselected range on comment from 1 to comment.length 
+FAIL comment.textContent = &quot;foo&quot;, with selected range on comment from 1 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.textContent = comment.textContent, with unselected range on comment from 1 to comment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL comment.textContent = comment.textContent, with selected range on comment from 1 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.textContent += &quot;&quot;, with unselected range on comment from 1 to comment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL comment.textContent += &quot;&quot;, with selected range on comment from 1 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.textContent += &quot;foo&quot;, with unselected range on comment from 1 to comment.length 
+FAIL comment.textContent += &quot;foo&quot;, with selected range on comment from 1 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.textContent += comment.textContent, with unselected range on comment from 1 to comment.length 
+FAIL comment.textContent += comment.textContent, with selected range on comment from 1 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.nodeValue = &quot;&quot;, with unselected range on comment from 1 to comment.length 
+FAIL comment.nodeValue = &quot;&quot;, with selected range on comment from 1 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.nodeValue = &quot;foo&quot;, with unselected range on comment from 1 to comment.length 
+FAIL comment.nodeValue = &quot;foo&quot;, with selected range on comment from 1 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.nodeValue = comment.nodeValue, with unselected range on comment from 1 to comment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL comment.nodeValue = comment.nodeValue, with selected range on comment from 1 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.nodeValue += &quot;&quot;, with unselected range on comment from 1 to comment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL comment.nodeValue += &quot;&quot;, with selected range on comment from 1 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.nodeValue += &quot;foo&quot;, with unselected range on comment from 1 to comment.length 
+FAIL comment.nodeValue += &quot;foo&quot;, with selected range on comment from 1 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.nodeValue += comment.nodeValue, with unselected range on comment from 1 to comment.length 
+FAIL comment.nodeValue += comment.nodeValue, with selected range on comment from 1 to comment.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.data = &quot;&quot;, with unselected range collapsed at (comment, comment.length) 
+FAIL comment.data = &quot;&quot;, with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.data = &quot;foo&quot;, with unselected range collapsed at (comment, comment.length) 
+FAIL comment.data = &quot;foo&quot;, with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.data = comment.data, with unselected range collapsed at (comment, comment.length) assert_equals: Wrong start offset expected 0 but got 14
+FAIL comment.data = comment.data, with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.data += &quot;&quot;, with unselected range collapsed at (comment, comment.length) assert_equals: Wrong start offset expected 0 but got 14
+FAIL comment.data += &quot;&quot;, with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.data += &quot;foo&quot;, with unselected range collapsed at (comment, comment.length) 
+FAIL comment.data += &quot;foo&quot;, with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.data += comment.data, with unselected range collapsed at (comment, comment.length) 
+FAIL comment.data += comment.data, with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.textContent = &quot;&quot;, with unselected range collapsed at (comment, comment.length) 
+FAIL comment.textContent = &quot;&quot;, with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.textContent = &quot;foo&quot;, with unselected range collapsed at (comment, comment.length) 
+FAIL comment.textContent = &quot;foo&quot;, with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.textContent = comment.textContent, with unselected range collapsed at (comment, comment.length) assert_equals: Wrong start offset expected 0 but got 14
+FAIL comment.textContent = comment.textContent, with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.textContent += &quot;&quot;, with unselected range collapsed at (comment, comment.length) assert_equals: Wrong start offset expected 0 but got 14
+FAIL comment.textContent += &quot;&quot;, with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.textContent += &quot;foo&quot;, with unselected range collapsed at (comment, comment.length) 
+FAIL comment.textContent += &quot;foo&quot;, with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.textContent += comment.textContent, with unselected range collapsed at (comment, comment.length) 
+FAIL comment.textContent += comment.textContent, with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.nodeValue = &quot;&quot;, with unselected range collapsed at (comment, comment.length) 
+FAIL comment.nodeValue = &quot;&quot;, with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.nodeValue = &quot;foo&quot;, with unselected range collapsed at (comment, comment.length) 
+FAIL comment.nodeValue = &quot;foo&quot;, with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.nodeValue = comment.nodeValue, with unselected range collapsed at (comment, comment.length) assert_equals: Wrong start offset expected 0 but got 14
+FAIL comment.nodeValue = comment.nodeValue, with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL comment.nodeValue += &quot;&quot;, with unselected range collapsed at (comment, comment.length) assert_equals: Wrong start offset expected 0 but got 14
+FAIL comment.nodeValue += &quot;&quot;, with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.nodeValue += &quot;foo&quot;, with unselected range collapsed at (comment, comment.length) 
+FAIL comment.nodeValue += &quot;foo&quot;, with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS comment.nodeValue += comment.nodeValue, with unselected range collapsed at (comment, comment.length) 
+FAIL comment.nodeValue += comment.nodeValue, with selected range collapsed at (comment, comment.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS foreignComment.data = &quot;&quot;, with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.data = &quot;&quot;, with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.data = &quot;foo&quot;, with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.data = &quot;foo&quot;, with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.data = foreignComment.data, with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.data = foreignComment.data, with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.data += &quot;&quot;, with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.data += &quot;&quot;, with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.data += &quot;foo&quot;, with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.data += &quot;foo&quot;, with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.data += foreignComment.data, with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.data += foreignComment.data, with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.textContent = &quot;&quot;, with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.textContent = &quot;&quot;, with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.textContent = &quot;foo&quot;, with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.textContent = &quot;foo&quot;, with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.textContent = foreignComment.textContent, with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.textContent = foreignComment.textContent, with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.textContent += &quot;&quot;, with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.textContent += &quot;&quot;, with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.textContent += &quot;foo&quot;, with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.textContent += &quot;foo&quot;, with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.textContent += foreignComment.textContent, with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.textContent += foreignComment.textContent, with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.nodeValue = &quot;&quot;, with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.nodeValue = &quot;&quot;, with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.nodeValue = &quot;foo&quot;, with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.nodeValue = &quot;foo&quot;, with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.nodeValue = foreignComment.nodeValue, with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.nodeValue = foreignComment.nodeValue, with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.nodeValue += &quot;&quot;, with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.nodeValue += &quot;&quot;, with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.nodeValue += &quot;foo&quot;, with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.nodeValue += &quot;foo&quot;, with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.nodeValue += foreignComment.nodeValue, with unselected range collapsed at (foreignComment, 0) 
+FAIL foreignComment.nodeValue += foreignComment.nodeValue, with selected range collapsed at (foreignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.data = &quot;&quot;, with unselected range on foreignComment from 0 to 1 
+FAIL foreignComment.data = &quot;&quot;, with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.data = &quot;foo&quot;, with unselected range on foreignComment from 0 to 1 
+FAIL foreignComment.data = &quot;foo&quot;, with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.data = foreignComment.data, with unselected range on foreignComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL foreignComment.data = foreignComment.data, with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.data += &quot;&quot;, with unselected range on foreignComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL foreignComment.data += &quot;&quot;, with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.data += &quot;foo&quot;, with unselected range on foreignComment from 0 to 1 
+FAIL foreignComment.data += &quot;foo&quot;, with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.data += foreignComment.data, with unselected range on foreignComment from 0 to 1 
+FAIL foreignComment.data += foreignComment.data, with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.textContent = &quot;&quot;, with unselected range on foreignComment from 0 to 1 
+FAIL foreignComment.textContent = &quot;&quot;, with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.textContent = &quot;foo&quot;, with unselected range on foreignComment from 0 to 1 
+FAIL foreignComment.textContent = &quot;foo&quot;, with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.textContent = foreignComment.textContent, with unselected range on foreignComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL foreignComment.textContent = foreignComment.textContent, with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.textContent += &quot;&quot;, with unselected range on foreignComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL foreignComment.textContent += &quot;&quot;, with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.textContent += &quot;foo&quot;, with unselected range on foreignComment from 0 to 1 
+FAIL foreignComment.textContent += &quot;foo&quot;, with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.textContent += foreignComment.textContent, with unselected range on foreignComment from 0 to 1 
+FAIL foreignComment.textContent += foreignComment.textContent, with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.nodeValue = &quot;&quot;, with unselected range on foreignComment from 0 to 1 
+FAIL foreignComment.nodeValue = &quot;&quot;, with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.nodeValue = &quot;foo&quot;, with unselected range on foreignComment from 0 to 1 
+FAIL foreignComment.nodeValue = &quot;foo&quot;, with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.nodeValue = foreignComment.nodeValue, with unselected range on foreignComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL foreignComment.nodeValue = foreignComment.nodeValue, with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.nodeValue += &quot;&quot;, with unselected range on foreignComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL foreignComment.nodeValue += &quot;&quot;, with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.nodeValue += &quot;foo&quot;, with unselected range on foreignComment from 0 to 1 
+FAIL foreignComment.nodeValue += &quot;foo&quot;, with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.nodeValue += foreignComment.nodeValue, with unselected range on foreignComment from 0 to 1 
+FAIL foreignComment.nodeValue += foreignComment.nodeValue, with selected range on foreignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.data = &quot;&quot;, with unselected range collapsed at (foreignComment, 1) 
+FAIL foreignComment.data = &quot;&quot;, with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.data = &quot;foo&quot;, with unselected range collapsed at (foreignComment, 1) 
+FAIL foreignComment.data = &quot;foo&quot;, with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.data = foreignComment.data, with unselected range collapsed at (foreignComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL foreignComment.data = foreignComment.data, with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.data += &quot;&quot;, with unselected range collapsed at (foreignComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL foreignComment.data += &quot;&quot;, with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.data += &quot;foo&quot;, with unselected range collapsed at (foreignComment, 1) 
+FAIL foreignComment.data += &quot;foo&quot;, with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.data += foreignComment.data, with unselected range collapsed at (foreignComment, 1) 
+FAIL foreignComment.data += foreignComment.data, with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.textContent = &quot;&quot;, with unselected range collapsed at (foreignComment, 1) 
+FAIL foreignComment.textContent = &quot;&quot;, with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.textContent = &quot;foo&quot;, with unselected range collapsed at (foreignComment, 1) 
+FAIL foreignComment.textContent = &quot;foo&quot;, with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.textContent = foreignComment.textContent, with unselected range collapsed at (foreignComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL foreignComment.textContent = foreignComment.textContent, with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.textContent += &quot;&quot;, with unselected range collapsed at (foreignComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL foreignComment.textContent += &quot;&quot;, with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.textContent += &quot;foo&quot;, with unselected range collapsed at (foreignComment, 1) 
+FAIL foreignComment.textContent += &quot;foo&quot;, with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.textContent += foreignComment.textContent, with unselected range collapsed at (foreignComment, 1) 
+FAIL foreignComment.textContent += foreignComment.textContent, with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.nodeValue = &quot;&quot;, with unselected range collapsed at (foreignComment, 1) 
+FAIL foreignComment.nodeValue = &quot;&quot;, with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.nodeValue = &quot;foo&quot;, with unselected range collapsed at (foreignComment, 1) 
+FAIL foreignComment.nodeValue = &quot;foo&quot;, with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.nodeValue = foreignComment.nodeValue, with unselected range collapsed at (foreignComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL foreignComment.nodeValue = foreignComment.nodeValue, with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.nodeValue += &quot;&quot;, with unselected range collapsed at (foreignComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL foreignComment.nodeValue += &quot;&quot;, with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.nodeValue += &quot;foo&quot;, with unselected range collapsed at (foreignComment, 1) 
+FAIL foreignComment.nodeValue += &quot;foo&quot;, with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.nodeValue += foreignComment.nodeValue, with unselected range collapsed at (foreignComment, 1) 
+FAIL foreignComment.nodeValue += foreignComment.nodeValue, with selected range collapsed at (foreignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.data = &quot;&quot;, with unselected range on foreignComment from 0 to foreignComment.length 
+FAIL foreignComment.data = &quot;&quot;, with selected range on foreignComment from 0 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.data = &quot;foo&quot;, with unselected range on foreignComment from 0 to foreignComment.length 
+FAIL foreignComment.data = &quot;foo&quot;, with selected range on foreignComment from 0 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.data = foreignComment.data, with unselected range on foreignComment from 0 to foreignComment.length assert_equals: Wrong end offset expected 0 but got 100
+FAIL foreignComment.data = foreignComment.data, with selected range on foreignComment from 0 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.data += &quot;&quot;, with unselected range on foreignComment from 0 to foreignComment.length assert_equals: Wrong end offset expected 0 but got 100
+FAIL foreignComment.data += &quot;&quot;, with selected range on foreignComment from 0 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.data += &quot;foo&quot;, with unselected range on foreignComment from 0 to foreignComment.length 
+FAIL foreignComment.data += &quot;foo&quot;, with selected range on foreignComment from 0 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.data += foreignComment.data, with unselected range on foreignComment from 0 to foreignComment.length 
+FAIL foreignComment.data += foreignComment.data, with selected range on foreignComment from 0 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.textContent = &quot;&quot;, with unselected range on foreignComment from 0 to foreignComment.length 
+FAIL foreignComment.textContent = &quot;&quot;, with selected range on foreignComment from 0 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.textContent = &quot;foo&quot;, with unselected range on foreignComment from 0 to foreignComment.length 
+FAIL foreignComment.textContent = &quot;foo&quot;, with selected range on foreignComment from 0 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.textContent = foreignComment.textContent, with unselected range on foreignComment from 0 to foreignComment.length assert_equals: Wrong end offset expected 0 but got 100
+FAIL foreignComment.textContent = foreignComment.textContent, with selected range on foreignComment from 0 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.textContent += &quot;&quot;, with unselected range on foreignComment from 0 to foreignComment.length assert_equals: Wrong end offset expected 0 but got 100
+FAIL foreignComment.textContent += &quot;&quot;, with selected range on foreignComment from 0 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.textContent += &quot;foo&quot;, with unselected range on foreignComment from 0 to foreignComment.length 
+FAIL foreignComment.textContent += &quot;foo&quot;, with selected range on foreignComment from 0 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.textContent += foreignComment.textContent, with unselected range on foreignComment from 0 to foreignComment.length 
+FAIL foreignComment.textContent += foreignComment.textContent, with selected range on foreignComment from 0 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.nodeValue = &quot;&quot;, with unselected range on foreignComment from 0 to foreignComment.length 
+FAIL foreignComment.nodeValue = &quot;&quot;, with selected range on foreignComment from 0 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.nodeValue = &quot;foo&quot;, with unselected range on foreignComment from 0 to foreignComment.length 
+FAIL foreignComment.nodeValue = &quot;foo&quot;, with selected range on foreignComment from 0 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.nodeValue = foreignComment.nodeValue, with unselected range on foreignComment from 0 to foreignComment.length assert_equals: Wrong end offset expected 0 but got 100
+FAIL foreignComment.nodeValue = foreignComment.nodeValue, with selected range on foreignComment from 0 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.nodeValue += &quot;&quot;, with unselected range on foreignComment from 0 to foreignComment.length assert_equals: Wrong end offset expected 0 but got 100
+FAIL foreignComment.nodeValue += &quot;&quot;, with selected range on foreignComment from 0 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.nodeValue += &quot;foo&quot;, with unselected range on foreignComment from 0 to foreignComment.length 
+FAIL foreignComment.nodeValue += &quot;foo&quot;, with selected range on foreignComment from 0 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.nodeValue += foreignComment.nodeValue, with unselected range on foreignComment from 0 to foreignComment.length 
+FAIL foreignComment.nodeValue += foreignComment.nodeValue, with selected range on foreignComment from 0 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.data = &quot;&quot;, with unselected range on foreignComment from 1 to foreignComment.length 
+FAIL foreignComment.data = &quot;&quot;, with selected range on foreignComment from 1 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.data = &quot;foo&quot;, with unselected range on foreignComment from 1 to foreignComment.length 
+FAIL foreignComment.data = &quot;foo&quot;, with selected range on foreignComment from 1 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.data = foreignComment.data, with unselected range on foreignComment from 1 to foreignComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL foreignComment.data = foreignComment.data, with selected range on foreignComment from 1 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.data += &quot;&quot;, with unselected range on foreignComment from 1 to foreignComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL foreignComment.data += &quot;&quot;, with selected range on foreignComment from 1 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.data += &quot;foo&quot;, with unselected range on foreignComment from 1 to foreignComment.length 
+FAIL foreignComment.data += &quot;foo&quot;, with selected range on foreignComment from 1 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.data += foreignComment.data, with unselected range on foreignComment from 1 to foreignComment.length 
+FAIL foreignComment.data += foreignComment.data, with selected range on foreignComment from 1 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.textContent = &quot;&quot;, with unselected range on foreignComment from 1 to foreignComment.length 
+FAIL foreignComment.textContent = &quot;&quot;, with selected range on foreignComment from 1 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.textContent = &quot;foo&quot;, with unselected range on foreignComment from 1 to foreignComment.length 
+FAIL foreignComment.textContent = &quot;foo&quot;, with selected range on foreignComment from 1 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.textContent = foreignComment.textContent, with unselected range on foreignComment from 1 to foreignComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL foreignComment.textContent = foreignComment.textContent, with selected range on foreignComment from 1 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.textContent += &quot;&quot;, with unselected range on foreignComment from 1 to foreignComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL foreignComment.textContent += &quot;&quot;, with selected range on foreignComment from 1 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.textContent += &quot;foo&quot;, with unselected range on foreignComment from 1 to foreignComment.length 
+FAIL foreignComment.textContent += &quot;foo&quot;, with selected range on foreignComment from 1 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.textContent += foreignComment.textContent, with unselected range on foreignComment from 1 to foreignComment.length 
+FAIL foreignComment.textContent += foreignComment.textContent, with selected range on foreignComment from 1 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.nodeValue = &quot;&quot;, with unselected range on foreignComment from 1 to foreignComment.length 
+FAIL foreignComment.nodeValue = &quot;&quot;, with selected range on foreignComment from 1 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.nodeValue = &quot;foo&quot;, with unselected range on foreignComment from 1 to foreignComment.length 
+FAIL foreignComment.nodeValue = &quot;foo&quot;, with selected range on foreignComment from 1 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.nodeValue = foreignComment.nodeValue, with unselected range on foreignComment from 1 to foreignComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL foreignComment.nodeValue = foreignComment.nodeValue, with selected range on foreignComment from 1 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.nodeValue += &quot;&quot;, with unselected range on foreignComment from 1 to foreignComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL foreignComment.nodeValue += &quot;&quot;, with selected range on foreignComment from 1 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.nodeValue += &quot;foo&quot;, with unselected range on foreignComment from 1 to foreignComment.length 
+FAIL foreignComment.nodeValue += &quot;foo&quot;, with selected range on foreignComment from 1 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.nodeValue += foreignComment.nodeValue, with unselected range on foreignComment from 1 to foreignComment.length 
+FAIL foreignComment.nodeValue += foreignComment.nodeValue, with selected range on foreignComment from 1 to foreignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.data = &quot;&quot;, with unselected range collapsed at (foreignComment, foreignComment.length) 
+FAIL foreignComment.data = &quot;&quot;, with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.data = &quot;foo&quot;, with unselected range collapsed at (foreignComment, foreignComment.length) 
+FAIL foreignComment.data = &quot;foo&quot;, with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.data = foreignComment.data, with unselected range collapsed at (foreignComment, foreignComment.length) assert_equals: Wrong start offset expected 0 but got 100
+FAIL foreignComment.data = foreignComment.data, with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.data += &quot;&quot;, with unselected range collapsed at (foreignComment, foreignComment.length) assert_equals: Wrong start offset expected 0 but got 100
+FAIL foreignComment.data += &quot;&quot;, with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.data += &quot;foo&quot;, with unselected range collapsed at (foreignComment, foreignComment.length) 
+FAIL foreignComment.data += &quot;foo&quot;, with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.data += foreignComment.data, with unselected range collapsed at (foreignComment, foreignComment.length) 
+FAIL foreignComment.data += foreignComment.data, with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.textContent = &quot;&quot;, with unselected range collapsed at (foreignComment, foreignComment.length) 
+FAIL foreignComment.textContent = &quot;&quot;, with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.textContent = &quot;foo&quot;, with unselected range collapsed at (foreignComment, foreignComment.length) 
+FAIL foreignComment.textContent = &quot;foo&quot;, with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.textContent = foreignComment.textContent, with unselected range collapsed at (foreignComment, foreignComment.length) assert_equals: Wrong start offset expected 0 but got 100
+FAIL foreignComment.textContent = foreignComment.textContent, with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.textContent += &quot;&quot;, with unselected range collapsed at (foreignComment, foreignComment.length) assert_equals: Wrong start offset expected 0 but got 100
+FAIL foreignComment.textContent += &quot;&quot;, with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.textContent += &quot;foo&quot;, with unselected range collapsed at (foreignComment, foreignComment.length) 
+FAIL foreignComment.textContent += &quot;foo&quot;, with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.textContent += foreignComment.textContent, with unselected range collapsed at (foreignComment, foreignComment.length) 
+FAIL foreignComment.textContent += foreignComment.textContent, with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.nodeValue = &quot;&quot;, with unselected range collapsed at (foreignComment, foreignComment.length) 
+FAIL foreignComment.nodeValue = &quot;&quot;, with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.nodeValue = &quot;foo&quot;, with unselected range collapsed at (foreignComment, foreignComment.length) 
+FAIL foreignComment.nodeValue = &quot;foo&quot;, with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.nodeValue = foreignComment.nodeValue, with unselected range collapsed at (foreignComment, foreignComment.length) assert_equals: Wrong start offset expected 0 but got 100
+FAIL foreignComment.nodeValue = foreignComment.nodeValue, with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL foreignComment.nodeValue += &quot;&quot;, with unselected range collapsed at (foreignComment, foreignComment.length) assert_equals: Wrong start offset expected 0 but got 100
+FAIL foreignComment.nodeValue += &quot;&quot;, with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.nodeValue += &quot;foo&quot;, with unselected range collapsed at (foreignComment, foreignComment.length) 
+FAIL foreignComment.nodeValue += &quot;foo&quot;, with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignComment.nodeValue += foreignComment.nodeValue, with unselected range collapsed at (foreignComment, foreignComment.length) 
+FAIL foreignComment.nodeValue += foreignComment.nodeValue, with selected range collapsed at (foreignComment, foreignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.data = &quot;&quot;, with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.data = &quot;&quot;, with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.data = &quot;foo&quot;, with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.data = &quot;foo&quot;, with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.data = xmlComment.data, with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.data = xmlComment.data, with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.data += &quot;&quot;, with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.data += &quot;&quot;, with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.data += &quot;foo&quot;, with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.data += &quot;foo&quot;, with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.data += xmlComment.data, with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.data += xmlComment.data, with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.textContent = &quot;&quot;, with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.textContent = &quot;&quot;, with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.textContent = &quot;foo&quot;, with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.textContent = &quot;foo&quot;, with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.textContent = xmlComment.textContent, with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.textContent = xmlComment.textContent, with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.textContent += &quot;&quot;, with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.textContent += &quot;&quot;, with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.textContent += &quot;foo&quot;, with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.textContent += &quot;foo&quot;, with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.textContent += xmlComment.textContent, with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.textContent += xmlComment.textContent, with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.nodeValue = &quot;&quot;, with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.nodeValue = &quot;&quot;, with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.nodeValue = &quot;foo&quot;, with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.nodeValue = &quot;foo&quot;, with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.nodeValue = xmlComment.nodeValue, with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.nodeValue = xmlComment.nodeValue, with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.nodeValue += &quot;&quot;, with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.nodeValue += &quot;&quot;, with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.nodeValue += &quot;foo&quot;, with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.nodeValue += &quot;foo&quot;, with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.nodeValue += xmlComment.nodeValue, with unselected range collapsed at (xmlComment, 0) 
+FAIL xmlComment.nodeValue += xmlComment.nodeValue, with selected range collapsed at (xmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.data = &quot;&quot;, with unselected range on xmlComment from 0 to 1 
+FAIL xmlComment.data = &quot;&quot;, with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.data = &quot;foo&quot;, with unselected range on xmlComment from 0 to 1 
+FAIL xmlComment.data = &quot;foo&quot;, with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.data = xmlComment.data, with unselected range on xmlComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL xmlComment.data = xmlComment.data, with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.data += &quot;&quot;, with unselected range on xmlComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL xmlComment.data += &quot;&quot;, with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.data += &quot;foo&quot;, with unselected range on xmlComment from 0 to 1 
+FAIL xmlComment.data += &quot;foo&quot;, with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.data += xmlComment.data, with unselected range on xmlComment from 0 to 1 
+FAIL xmlComment.data += xmlComment.data, with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.textContent = &quot;&quot;, with unselected range on xmlComment from 0 to 1 
+FAIL xmlComment.textContent = &quot;&quot;, with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.textContent = &quot;foo&quot;, with unselected range on xmlComment from 0 to 1 
+FAIL xmlComment.textContent = &quot;foo&quot;, with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.textContent = xmlComment.textContent, with unselected range on xmlComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL xmlComment.textContent = xmlComment.textContent, with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.textContent += &quot;&quot;, with unselected range on xmlComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL xmlComment.textContent += &quot;&quot;, with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.textContent += &quot;foo&quot;, with unselected range on xmlComment from 0 to 1 
+FAIL xmlComment.textContent += &quot;foo&quot;, with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.textContent += xmlComment.textContent, with unselected range on xmlComment from 0 to 1 
+FAIL xmlComment.textContent += xmlComment.textContent, with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.nodeValue = &quot;&quot;, with unselected range on xmlComment from 0 to 1 
+FAIL xmlComment.nodeValue = &quot;&quot;, with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.nodeValue = &quot;foo&quot;, with unselected range on xmlComment from 0 to 1 
+FAIL xmlComment.nodeValue = &quot;foo&quot;, with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.nodeValue = xmlComment.nodeValue, with unselected range on xmlComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL xmlComment.nodeValue = xmlComment.nodeValue, with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.nodeValue += &quot;&quot;, with unselected range on xmlComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL xmlComment.nodeValue += &quot;&quot;, with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.nodeValue += &quot;foo&quot;, with unselected range on xmlComment from 0 to 1 
+FAIL xmlComment.nodeValue += &quot;foo&quot;, with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.nodeValue += xmlComment.nodeValue, with unselected range on xmlComment from 0 to 1 
+FAIL xmlComment.nodeValue += xmlComment.nodeValue, with selected range on xmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.data = &quot;&quot;, with unselected range collapsed at (xmlComment, 1) 
+FAIL xmlComment.data = &quot;&quot;, with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.data = &quot;foo&quot;, with unselected range collapsed at (xmlComment, 1) 
+FAIL xmlComment.data = &quot;foo&quot;, with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.data = xmlComment.data, with unselected range collapsed at (xmlComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL xmlComment.data = xmlComment.data, with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.data += &quot;&quot;, with unselected range collapsed at (xmlComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL xmlComment.data += &quot;&quot;, with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.data += &quot;foo&quot;, with unselected range collapsed at (xmlComment, 1) 
+FAIL xmlComment.data += &quot;foo&quot;, with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.data += xmlComment.data, with unselected range collapsed at (xmlComment, 1) 
+FAIL xmlComment.data += xmlComment.data, with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.textContent = &quot;&quot;, with unselected range collapsed at (xmlComment, 1) 
+FAIL xmlComment.textContent = &quot;&quot;, with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.textContent = &quot;foo&quot;, with unselected range collapsed at (xmlComment, 1) 
+FAIL xmlComment.textContent = &quot;foo&quot;, with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.textContent = xmlComment.textContent, with unselected range collapsed at (xmlComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL xmlComment.textContent = xmlComment.textContent, with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.textContent += &quot;&quot;, with unselected range collapsed at (xmlComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL xmlComment.textContent += &quot;&quot;, with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.textContent += &quot;foo&quot;, with unselected range collapsed at (xmlComment, 1) 
+FAIL xmlComment.textContent += &quot;foo&quot;, with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.textContent += xmlComment.textContent, with unselected range collapsed at (xmlComment, 1) 
+FAIL xmlComment.textContent += xmlComment.textContent, with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.nodeValue = &quot;&quot;, with unselected range collapsed at (xmlComment, 1) 
+FAIL xmlComment.nodeValue = &quot;&quot;, with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.nodeValue = &quot;foo&quot;, with unselected range collapsed at (xmlComment, 1) 
+FAIL xmlComment.nodeValue = &quot;foo&quot;, with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.nodeValue = xmlComment.nodeValue, with unselected range collapsed at (xmlComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL xmlComment.nodeValue = xmlComment.nodeValue, with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.nodeValue += &quot;&quot;, with unselected range collapsed at (xmlComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL xmlComment.nodeValue += &quot;&quot;, with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.nodeValue += &quot;foo&quot;, with unselected range collapsed at (xmlComment, 1) 
+FAIL xmlComment.nodeValue += &quot;foo&quot;, with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.nodeValue += xmlComment.nodeValue, with unselected range collapsed at (xmlComment, 1) 
+FAIL xmlComment.nodeValue += xmlComment.nodeValue, with selected range collapsed at (xmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.data = &quot;&quot;, with unselected range on xmlComment from 0 to xmlComment.length 
+FAIL xmlComment.data = &quot;&quot;, with selected range on xmlComment from 0 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.data = &quot;foo&quot;, with unselected range on xmlComment from 0 to xmlComment.length 
+FAIL xmlComment.data = &quot;foo&quot;, with selected range on xmlComment from 0 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.data = xmlComment.data, with unselected range on xmlComment from 0 to xmlComment.length assert_equals: Wrong end offset expected 0 but got 143
+FAIL xmlComment.data = xmlComment.data, with selected range on xmlComment from 0 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.data += &quot;&quot;, with unselected range on xmlComment from 0 to xmlComment.length assert_equals: Wrong end offset expected 0 but got 143
+FAIL xmlComment.data += &quot;&quot;, with selected range on xmlComment from 0 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.data += &quot;foo&quot;, with unselected range on xmlComment from 0 to xmlComment.length 
+FAIL xmlComment.data += &quot;foo&quot;, with selected range on xmlComment from 0 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.data += xmlComment.data, with unselected range on xmlComment from 0 to xmlComment.length 
+FAIL xmlComment.data += xmlComment.data, with selected range on xmlComment from 0 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.textContent = &quot;&quot;, with unselected range on xmlComment from 0 to xmlComment.length 
+FAIL xmlComment.textContent = &quot;&quot;, with selected range on xmlComment from 0 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.textContent = &quot;foo&quot;, with unselected range on xmlComment from 0 to xmlComment.length 
+FAIL xmlComment.textContent = &quot;foo&quot;, with selected range on xmlComment from 0 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.textContent = xmlComment.textContent, with unselected range on xmlComment from 0 to xmlComment.length assert_equals: Wrong end offset expected 0 but got 143
+FAIL xmlComment.textContent = xmlComment.textContent, with selected range on xmlComment from 0 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.textContent += &quot;&quot;, with unselected range on xmlComment from 0 to xmlComment.length assert_equals: Wrong end offset expected 0 but got 143
+FAIL xmlComment.textContent += &quot;&quot;, with selected range on xmlComment from 0 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.textContent += &quot;foo&quot;, with unselected range on xmlComment from 0 to xmlComment.length 
+FAIL xmlComment.textContent += &quot;foo&quot;, with selected range on xmlComment from 0 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.textContent += xmlComment.textContent, with unselected range on xmlComment from 0 to xmlComment.length 
+FAIL xmlComment.textContent += xmlComment.textContent, with selected range on xmlComment from 0 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.nodeValue = &quot;&quot;, with unselected range on xmlComment from 0 to xmlComment.length 
+FAIL xmlComment.nodeValue = &quot;&quot;, with selected range on xmlComment from 0 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.nodeValue = &quot;foo&quot;, with unselected range on xmlComment from 0 to xmlComment.length 
+FAIL xmlComment.nodeValue = &quot;foo&quot;, with selected range on xmlComment from 0 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.nodeValue = xmlComment.nodeValue, with unselected range on xmlComment from 0 to xmlComment.length assert_equals: Wrong end offset expected 0 but got 143
+FAIL xmlComment.nodeValue = xmlComment.nodeValue, with selected range on xmlComment from 0 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.nodeValue += &quot;&quot;, with unselected range on xmlComment from 0 to xmlComment.length assert_equals: Wrong end offset expected 0 but got 143
+FAIL xmlComment.nodeValue += &quot;&quot;, with selected range on xmlComment from 0 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.nodeValue += &quot;foo&quot;, with unselected range on xmlComment from 0 to xmlComment.length 
+FAIL xmlComment.nodeValue += &quot;foo&quot;, with selected range on xmlComment from 0 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.nodeValue += xmlComment.nodeValue, with unselected range on xmlComment from 0 to xmlComment.length 
+FAIL xmlComment.nodeValue += xmlComment.nodeValue, with selected range on xmlComment from 0 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.data = &quot;&quot;, with unselected range on xmlComment from 1 to xmlComment.length 
+FAIL xmlComment.data = &quot;&quot;, with selected range on xmlComment from 1 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.data = &quot;foo&quot;, with unselected range on xmlComment from 1 to xmlComment.length 
+FAIL xmlComment.data = &quot;foo&quot;, with selected range on xmlComment from 1 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.data = xmlComment.data, with unselected range on xmlComment from 1 to xmlComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL xmlComment.data = xmlComment.data, with selected range on xmlComment from 1 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.data += &quot;&quot;, with unselected range on xmlComment from 1 to xmlComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL xmlComment.data += &quot;&quot;, with selected range on xmlComment from 1 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.data += &quot;foo&quot;, with unselected range on xmlComment from 1 to xmlComment.length 
+FAIL xmlComment.data += &quot;foo&quot;, with selected range on xmlComment from 1 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.data += xmlComment.data, with unselected range on xmlComment from 1 to xmlComment.length 
+FAIL xmlComment.data += xmlComment.data, with selected range on xmlComment from 1 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.textContent = &quot;&quot;, with unselected range on xmlComment from 1 to xmlComment.length 
+FAIL xmlComment.textContent = &quot;&quot;, with selected range on xmlComment from 1 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.textContent = &quot;foo&quot;, with unselected range on xmlComment from 1 to xmlComment.length 
+FAIL xmlComment.textContent = &quot;foo&quot;, with selected range on xmlComment from 1 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.textContent = xmlComment.textContent, with unselected range on xmlComment from 1 to xmlComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL xmlComment.textContent = xmlComment.textContent, with selected range on xmlComment from 1 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.textContent += &quot;&quot;, with unselected range on xmlComment from 1 to xmlComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL xmlComment.textContent += &quot;&quot;, with selected range on xmlComment from 1 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.textContent += &quot;foo&quot;, with unselected range on xmlComment from 1 to xmlComment.length 
+FAIL xmlComment.textContent += &quot;foo&quot;, with selected range on xmlComment from 1 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.textContent += xmlComment.textContent, with unselected range on xmlComment from 1 to xmlComment.length 
+FAIL xmlComment.textContent += xmlComment.textContent, with selected range on xmlComment from 1 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.nodeValue = &quot;&quot;, with unselected range on xmlComment from 1 to xmlComment.length 
+FAIL xmlComment.nodeValue = &quot;&quot;, with selected range on xmlComment from 1 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.nodeValue = &quot;foo&quot;, with unselected range on xmlComment from 1 to xmlComment.length 
+FAIL xmlComment.nodeValue = &quot;foo&quot;, with selected range on xmlComment from 1 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.nodeValue = xmlComment.nodeValue, with unselected range on xmlComment from 1 to xmlComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL xmlComment.nodeValue = xmlComment.nodeValue, with selected range on xmlComment from 1 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.nodeValue += &quot;&quot;, with unselected range on xmlComment from 1 to xmlComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL xmlComment.nodeValue += &quot;&quot;, with selected range on xmlComment from 1 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.nodeValue += &quot;foo&quot;, with unselected range on xmlComment from 1 to xmlComment.length 
+FAIL xmlComment.nodeValue += &quot;foo&quot;, with selected range on xmlComment from 1 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.nodeValue += xmlComment.nodeValue, with unselected range on xmlComment from 1 to xmlComment.length 
+FAIL xmlComment.nodeValue += xmlComment.nodeValue, with selected range on xmlComment from 1 to xmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.data = &quot;&quot;, with unselected range collapsed at (xmlComment, xmlComment.length) 
+FAIL xmlComment.data = &quot;&quot;, with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.data = &quot;foo&quot;, with unselected range collapsed at (xmlComment, xmlComment.length) 
+FAIL xmlComment.data = &quot;foo&quot;, with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.data = xmlComment.data, with unselected range collapsed at (xmlComment, xmlComment.length) assert_equals: Wrong start offset expected 0 but got 143
+FAIL xmlComment.data = xmlComment.data, with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.data += &quot;&quot;, with unselected range collapsed at (xmlComment, xmlComment.length) assert_equals: Wrong start offset expected 0 but got 143
+FAIL xmlComment.data += &quot;&quot;, with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.data += &quot;foo&quot;, with unselected range collapsed at (xmlComment, xmlComment.length) 
+FAIL xmlComment.data += &quot;foo&quot;, with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.data += xmlComment.data, with unselected range collapsed at (xmlComment, xmlComment.length) 
+FAIL xmlComment.data += xmlComment.data, with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.textContent = &quot;&quot;, with unselected range collapsed at (xmlComment, xmlComment.length) 
+FAIL xmlComment.textContent = &quot;&quot;, with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.textContent = &quot;foo&quot;, with unselected range collapsed at (xmlComment, xmlComment.length) 
+FAIL xmlComment.textContent = &quot;foo&quot;, with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.textContent = xmlComment.textContent, with unselected range collapsed at (xmlComment, xmlComment.length) assert_equals: Wrong start offset expected 0 but got 143
+FAIL xmlComment.textContent = xmlComment.textContent, with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.textContent += &quot;&quot;, with unselected range collapsed at (xmlComment, xmlComment.length) assert_equals: Wrong start offset expected 0 but got 143
+FAIL xmlComment.textContent += &quot;&quot;, with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.textContent += &quot;foo&quot;, with unselected range collapsed at (xmlComment, xmlComment.length) 
+FAIL xmlComment.textContent += &quot;foo&quot;, with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.textContent += xmlComment.textContent, with unselected range collapsed at (xmlComment, xmlComment.length) 
+FAIL xmlComment.textContent += xmlComment.textContent, with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.nodeValue = &quot;&quot;, with unselected range collapsed at (xmlComment, xmlComment.length) 
+FAIL xmlComment.nodeValue = &quot;&quot;, with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.nodeValue = &quot;foo&quot;, with unselected range collapsed at (xmlComment, xmlComment.length) 
+FAIL xmlComment.nodeValue = &quot;foo&quot;, with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.nodeValue = xmlComment.nodeValue, with unselected range collapsed at (xmlComment, xmlComment.length) assert_equals: Wrong start offset expected 0 but got 143
+FAIL xmlComment.nodeValue = xmlComment.nodeValue, with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL xmlComment.nodeValue += &quot;&quot;, with unselected range collapsed at (xmlComment, xmlComment.length) assert_equals: Wrong start offset expected 0 but got 143
+FAIL xmlComment.nodeValue += &quot;&quot;, with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.nodeValue += &quot;foo&quot;, with unselected range collapsed at (xmlComment, xmlComment.length) 
+FAIL xmlComment.nodeValue += &quot;foo&quot;, with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS xmlComment.nodeValue += xmlComment.nodeValue, with unselected range collapsed at (xmlComment, xmlComment.length) 
+FAIL xmlComment.nodeValue += xmlComment.nodeValue, with selected range collapsed at (xmlComment, xmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.data = &quot;&quot;, with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.data = &quot;&quot;, with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.data = &quot;foo&quot;, with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.data = &quot;foo&quot;, with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.data = detachedComment.data, with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.data = detachedComment.data, with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.data += &quot;&quot;, with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.data += &quot;&quot;, with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.data += &quot;foo&quot;, with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.data += &quot;foo&quot;, with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.data += detachedComment.data, with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.data += detachedComment.data, with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.textContent = &quot;&quot;, with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.textContent = &quot;&quot;, with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.textContent = &quot;foo&quot;, with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.textContent = &quot;foo&quot;, with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.textContent = detachedComment.textContent, with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.textContent = detachedComment.textContent, with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.textContent += &quot;&quot;, with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.textContent += &quot;&quot;, with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.textContent += &quot;foo&quot;, with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.textContent += &quot;foo&quot;, with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.textContent += detachedComment.textContent, with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.textContent += detachedComment.textContent, with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.nodeValue = &quot;&quot;, with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.nodeValue = &quot;&quot;, with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.nodeValue = &quot;foo&quot;, with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.nodeValue = &quot;foo&quot;, with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.nodeValue = detachedComment.nodeValue, with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.nodeValue = detachedComment.nodeValue, with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.nodeValue += &quot;&quot;, with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.nodeValue += &quot;&quot;, with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.nodeValue += &quot;foo&quot;, with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.nodeValue += &quot;foo&quot;, with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.nodeValue += detachedComment.nodeValue, with unselected range collapsed at (detachedComment, 0) 
+FAIL detachedComment.nodeValue += detachedComment.nodeValue, with selected range collapsed at (detachedComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.data = &quot;&quot;, with unselected range on detachedComment from 0 to 1 
+FAIL detachedComment.data = &quot;&quot;, with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.data = &quot;foo&quot;, with unselected range on detachedComment from 0 to 1 
+FAIL detachedComment.data = &quot;foo&quot;, with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.data = detachedComment.data, with unselected range on detachedComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedComment.data = detachedComment.data, with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.data += &quot;&quot;, with unselected range on detachedComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedComment.data += &quot;&quot;, with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.data += &quot;foo&quot;, with unselected range on detachedComment from 0 to 1 
+FAIL detachedComment.data += &quot;foo&quot;, with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.data += detachedComment.data, with unselected range on detachedComment from 0 to 1 
+FAIL detachedComment.data += detachedComment.data, with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.textContent = &quot;&quot;, with unselected range on detachedComment from 0 to 1 
+FAIL detachedComment.textContent = &quot;&quot;, with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.textContent = &quot;foo&quot;, with unselected range on detachedComment from 0 to 1 
+FAIL detachedComment.textContent = &quot;foo&quot;, with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.textContent = detachedComment.textContent, with unselected range on detachedComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedComment.textContent = detachedComment.textContent, with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.textContent += &quot;&quot;, with unselected range on detachedComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedComment.textContent += &quot;&quot;, with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.textContent += &quot;foo&quot;, with unselected range on detachedComment from 0 to 1 
+FAIL detachedComment.textContent += &quot;foo&quot;, with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.textContent += detachedComment.textContent, with unselected range on detachedComment from 0 to 1 
+FAIL detachedComment.textContent += detachedComment.textContent, with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.nodeValue = &quot;&quot;, with unselected range on detachedComment from 0 to 1 
+FAIL detachedComment.nodeValue = &quot;&quot;, with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.nodeValue = &quot;foo&quot;, with unselected range on detachedComment from 0 to 1 
+FAIL detachedComment.nodeValue = &quot;foo&quot;, with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.nodeValue = detachedComment.nodeValue, with unselected range on detachedComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedComment.nodeValue = detachedComment.nodeValue, with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.nodeValue += &quot;&quot;, with unselected range on detachedComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedComment.nodeValue += &quot;&quot;, with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.nodeValue += &quot;foo&quot;, with unselected range on detachedComment from 0 to 1 
+FAIL detachedComment.nodeValue += &quot;foo&quot;, with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.nodeValue += detachedComment.nodeValue, with unselected range on detachedComment from 0 to 1 
+FAIL detachedComment.nodeValue += detachedComment.nodeValue, with selected range on detachedComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.data = &quot;&quot;, with unselected range collapsed at (detachedComment, 1) 
+FAIL detachedComment.data = &quot;&quot;, with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.data = &quot;foo&quot;, with unselected range collapsed at (detachedComment, 1) 
+FAIL detachedComment.data = &quot;foo&quot;, with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.data = detachedComment.data, with unselected range collapsed at (detachedComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedComment.data = detachedComment.data, with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.data += &quot;&quot;, with unselected range collapsed at (detachedComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedComment.data += &quot;&quot;, with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.data += &quot;foo&quot;, with unselected range collapsed at (detachedComment, 1) 
+FAIL detachedComment.data += &quot;foo&quot;, with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.data += detachedComment.data, with unselected range collapsed at (detachedComment, 1) 
+FAIL detachedComment.data += detachedComment.data, with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.textContent = &quot;&quot;, with unselected range collapsed at (detachedComment, 1) 
+FAIL detachedComment.textContent = &quot;&quot;, with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.textContent = &quot;foo&quot;, with unselected range collapsed at (detachedComment, 1) 
+FAIL detachedComment.textContent = &quot;foo&quot;, with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.textContent = detachedComment.textContent, with unselected range collapsed at (detachedComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedComment.textContent = detachedComment.textContent, with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.textContent += &quot;&quot;, with unselected range collapsed at (detachedComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedComment.textContent += &quot;&quot;, with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.textContent += &quot;foo&quot;, with unselected range collapsed at (detachedComment, 1) 
+FAIL detachedComment.textContent += &quot;foo&quot;, with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.textContent += detachedComment.textContent, with unselected range collapsed at (detachedComment, 1) 
+FAIL detachedComment.textContent += detachedComment.textContent, with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.nodeValue = &quot;&quot;, with unselected range collapsed at (detachedComment, 1) 
+FAIL detachedComment.nodeValue = &quot;&quot;, with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.nodeValue = &quot;foo&quot;, with unselected range collapsed at (detachedComment, 1) 
+FAIL detachedComment.nodeValue = &quot;foo&quot;, with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.nodeValue = detachedComment.nodeValue, with unselected range collapsed at (detachedComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedComment.nodeValue = detachedComment.nodeValue, with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.nodeValue += &quot;&quot;, with unselected range collapsed at (detachedComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedComment.nodeValue += &quot;&quot;, with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.nodeValue += &quot;foo&quot;, with unselected range collapsed at (detachedComment, 1) 
+FAIL detachedComment.nodeValue += &quot;foo&quot;, with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.nodeValue += detachedComment.nodeValue, with unselected range collapsed at (detachedComment, 1) 
+FAIL detachedComment.nodeValue += detachedComment.nodeValue, with selected range collapsed at (detachedComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.data = &quot;&quot;, with unselected range on detachedComment from 0 to detachedComment.length 
+FAIL detachedComment.data = &quot;&quot;, with selected range on detachedComment from 0 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.data = &quot;foo&quot;, with unselected range on detachedComment from 0 to detachedComment.length 
+FAIL detachedComment.data = &quot;foo&quot;, with selected range on detachedComment from 0 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.data = detachedComment.data, with unselected range on detachedComment from 0 to detachedComment.length assert_equals: Wrong end offset expected 0 but got 8
+FAIL detachedComment.data = detachedComment.data, with selected range on detachedComment from 0 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.data += &quot;&quot;, with unselected range on detachedComment from 0 to detachedComment.length assert_equals: Wrong end offset expected 0 but got 8
+FAIL detachedComment.data += &quot;&quot;, with selected range on detachedComment from 0 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.data += &quot;foo&quot;, with unselected range on detachedComment from 0 to detachedComment.length 
+FAIL detachedComment.data += &quot;foo&quot;, with selected range on detachedComment from 0 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.data += detachedComment.data, with unselected range on detachedComment from 0 to detachedComment.length 
+FAIL detachedComment.data += detachedComment.data, with selected range on detachedComment from 0 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.textContent = &quot;&quot;, with unselected range on detachedComment from 0 to detachedComment.length 
+FAIL detachedComment.textContent = &quot;&quot;, with selected range on detachedComment from 0 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.textContent = &quot;foo&quot;, with unselected range on detachedComment from 0 to detachedComment.length 
+FAIL detachedComment.textContent = &quot;foo&quot;, with selected range on detachedComment from 0 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.textContent = detachedComment.textContent, with unselected range on detachedComment from 0 to detachedComment.length assert_equals: Wrong end offset expected 0 but got 8
+FAIL detachedComment.textContent = detachedComment.textContent, with selected range on detachedComment from 0 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.textContent += &quot;&quot;, with unselected range on detachedComment from 0 to detachedComment.length assert_equals: Wrong end offset expected 0 but got 8
+FAIL detachedComment.textContent += &quot;&quot;, with selected range on detachedComment from 0 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.textContent += &quot;foo&quot;, with unselected range on detachedComment from 0 to detachedComment.length 
+FAIL detachedComment.textContent += &quot;foo&quot;, with selected range on detachedComment from 0 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.textContent += detachedComment.textContent, with unselected range on detachedComment from 0 to detachedComment.length 
+FAIL detachedComment.textContent += detachedComment.textContent, with selected range on detachedComment from 0 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.nodeValue = &quot;&quot;, with unselected range on detachedComment from 0 to detachedComment.length 
+FAIL detachedComment.nodeValue = &quot;&quot;, with selected range on detachedComment from 0 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.nodeValue = &quot;foo&quot;, with unselected range on detachedComment from 0 to detachedComment.length 
+FAIL detachedComment.nodeValue = &quot;foo&quot;, with selected range on detachedComment from 0 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.nodeValue = detachedComment.nodeValue, with unselected range on detachedComment from 0 to detachedComment.length assert_equals: Wrong end offset expected 0 but got 8
+FAIL detachedComment.nodeValue = detachedComment.nodeValue, with selected range on detachedComment from 0 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.nodeValue += &quot;&quot;, with unselected range on detachedComment from 0 to detachedComment.length assert_equals: Wrong end offset expected 0 but got 8
+FAIL detachedComment.nodeValue += &quot;&quot;, with selected range on detachedComment from 0 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.nodeValue += &quot;foo&quot;, with unselected range on detachedComment from 0 to detachedComment.length 
+FAIL detachedComment.nodeValue += &quot;foo&quot;, with selected range on detachedComment from 0 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.nodeValue += detachedComment.nodeValue, with unselected range on detachedComment from 0 to detachedComment.length 
+FAIL detachedComment.nodeValue += detachedComment.nodeValue, with selected range on detachedComment from 0 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.data = &quot;&quot;, with unselected range on detachedComment from 1 to detachedComment.length 
+FAIL detachedComment.data = &quot;&quot;, with selected range on detachedComment from 1 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.data = &quot;foo&quot;, with unselected range on detachedComment from 1 to detachedComment.length 
+FAIL detachedComment.data = &quot;foo&quot;, with selected range on detachedComment from 1 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.data = detachedComment.data, with unselected range on detachedComment from 1 to detachedComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedComment.data = detachedComment.data, with selected range on detachedComment from 1 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.data += &quot;&quot;, with unselected range on detachedComment from 1 to detachedComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedComment.data += &quot;&quot;, with selected range on detachedComment from 1 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.data += &quot;foo&quot;, with unselected range on detachedComment from 1 to detachedComment.length 
+FAIL detachedComment.data += &quot;foo&quot;, with selected range on detachedComment from 1 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.data += detachedComment.data, with unselected range on detachedComment from 1 to detachedComment.length 
+FAIL detachedComment.data += detachedComment.data, with selected range on detachedComment from 1 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.textContent = &quot;&quot;, with unselected range on detachedComment from 1 to detachedComment.length 
+FAIL detachedComment.textContent = &quot;&quot;, with selected range on detachedComment from 1 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.textContent = &quot;foo&quot;, with unselected range on detachedComment from 1 to detachedComment.length 
+FAIL detachedComment.textContent = &quot;foo&quot;, with selected range on detachedComment from 1 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.textContent = detachedComment.textContent, with unselected range on detachedComment from 1 to detachedComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedComment.textContent = detachedComment.textContent, with selected range on detachedComment from 1 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.textContent += &quot;&quot;, with unselected range on detachedComment from 1 to detachedComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedComment.textContent += &quot;&quot;, with selected range on detachedComment from 1 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.textContent += &quot;foo&quot;, with unselected range on detachedComment from 1 to detachedComment.length 
+FAIL detachedComment.textContent += &quot;foo&quot;, with selected range on detachedComment from 1 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.textContent += detachedComment.textContent, with unselected range on detachedComment from 1 to detachedComment.length 
+FAIL detachedComment.textContent += detachedComment.textContent, with selected range on detachedComment from 1 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.nodeValue = &quot;&quot;, with unselected range on detachedComment from 1 to detachedComment.length 
+FAIL detachedComment.nodeValue = &quot;&quot;, with selected range on detachedComment from 1 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.nodeValue = &quot;foo&quot;, with unselected range on detachedComment from 1 to detachedComment.length 
+FAIL detachedComment.nodeValue = &quot;foo&quot;, with selected range on detachedComment from 1 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.nodeValue = detachedComment.nodeValue, with unselected range on detachedComment from 1 to detachedComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedComment.nodeValue = detachedComment.nodeValue, with selected range on detachedComment from 1 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.nodeValue += &quot;&quot;, with unselected range on detachedComment from 1 to detachedComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedComment.nodeValue += &quot;&quot;, with selected range on detachedComment from 1 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.nodeValue += &quot;foo&quot;, with unselected range on detachedComment from 1 to detachedComment.length 
+FAIL detachedComment.nodeValue += &quot;foo&quot;, with selected range on detachedComment from 1 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.nodeValue += detachedComment.nodeValue, with unselected range on detachedComment from 1 to detachedComment.length 
+FAIL detachedComment.nodeValue += detachedComment.nodeValue, with selected range on detachedComment from 1 to detachedComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.data = &quot;&quot;, with unselected range collapsed at (detachedComment, detachedComment.length) 
+FAIL detachedComment.data = &quot;&quot;, with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.data = &quot;foo&quot;, with unselected range collapsed at (detachedComment, detachedComment.length) 
+FAIL detachedComment.data = &quot;foo&quot;, with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.data = detachedComment.data, with unselected range collapsed at (detachedComment, detachedComment.length) assert_equals: Wrong start offset expected 0 but got 8
+FAIL detachedComment.data = detachedComment.data, with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.data += &quot;&quot;, with unselected range collapsed at (detachedComment, detachedComment.length) assert_equals: Wrong start offset expected 0 but got 8
+FAIL detachedComment.data += &quot;&quot;, with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.data += &quot;foo&quot;, with unselected range collapsed at (detachedComment, detachedComment.length) 
+FAIL detachedComment.data += &quot;foo&quot;, with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.data += detachedComment.data, with unselected range collapsed at (detachedComment, detachedComment.length) 
+FAIL detachedComment.data += detachedComment.data, with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.textContent = &quot;&quot;, with unselected range collapsed at (detachedComment, detachedComment.length) 
+FAIL detachedComment.textContent = &quot;&quot;, with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.textContent = &quot;foo&quot;, with unselected range collapsed at (detachedComment, detachedComment.length) 
+FAIL detachedComment.textContent = &quot;foo&quot;, with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.textContent = detachedComment.textContent, with unselected range collapsed at (detachedComment, detachedComment.length) assert_equals: Wrong start offset expected 0 but got 8
+FAIL detachedComment.textContent = detachedComment.textContent, with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.textContent += &quot;&quot;, with unselected range collapsed at (detachedComment, detachedComment.length) assert_equals: Wrong start offset expected 0 but got 8
+FAIL detachedComment.textContent += &quot;&quot;, with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.textContent += &quot;foo&quot;, with unselected range collapsed at (detachedComment, detachedComment.length) 
+FAIL detachedComment.textContent += &quot;foo&quot;, with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.textContent += detachedComment.textContent, with unselected range collapsed at (detachedComment, detachedComment.length) 
+FAIL detachedComment.textContent += detachedComment.textContent, with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.nodeValue = &quot;&quot;, with unselected range collapsed at (detachedComment, detachedComment.length) 
+FAIL detachedComment.nodeValue = &quot;&quot;, with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.nodeValue = &quot;foo&quot;, with unselected range collapsed at (detachedComment, detachedComment.length) 
+FAIL detachedComment.nodeValue = &quot;foo&quot;, with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.nodeValue = detachedComment.nodeValue, with unselected range collapsed at (detachedComment, detachedComment.length) assert_equals: Wrong start offset expected 0 but got 8
+FAIL detachedComment.nodeValue = detachedComment.nodeValue, with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedComment.nodeValue += &quot;&quot;, with unselected range collapsed at (detachedComment, detachedComment.length) assert_equals: Wrong start offset expected 0 but got 8
+FAIL detachedComment.nodeValue += &quot;&quot;, with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.nodeValue += &quot;foo&quot;, with unselected range collapsed at (detachedComment, detachedComment.length) 
+FAIL detachedComment.nodeValue += &quot;foo&quot;, with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedComment.nodeValue += detachedComment.nodeValue, with unselected range collapsed at (detachedComment, detachedComment.length) 
+FAIL detachedComment.nodeValue += detachedComment.nodeValue, with selected range collapsed at (detachedComment, detachedComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.data = &quot;&quot;, with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.data = &quot;&quot;, with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.data = &quot;foo&quot;, with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.data = &quot;foo&quot;, with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.data = detachedForeignComment.data, with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.data = detachedForeignComment.data, with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.data += &quot;&quot;, with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.data += &quot;&quot;, with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.data += &quot;foo&quot;, with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.data += &quot;foo&quot;, with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.data += detachedForeignComment.data, with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.data += detachedForeignComment.data, with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.textContent = &quot;&quot;, with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.textContent = &quot;&quot;, with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.textContent = &quot;foo&quot;, with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.textContent = &quot;foo&quot;, with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.textContent = detachedForeignComment.textContent, with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.textContent = detachedForeignComment.textContent, with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.textContent += &quot;&quot;, with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.textContent += &quot;&quot;, with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.textContent += &quot;foo&quot;, with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.textContent += &quot;foo&quot;, with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.textContent += detachedForeignComment.textContent, with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.textContent += detachedForeignComment.textContent, with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.nodeValue = &quot;&quot;, with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.nodeValue = &quot;&quot;, with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.nodeValue = &quot;foo&quot;, with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.nodeValue = &quot;foo&quot;, with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.nodeValue = detachedForeignComment.nodeValue, with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.nodeValue = detachedForeignComment.nodeValue, with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.nodeValue += &quot;&quot;, with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.nodeValue += &quot;&quot;, with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.nodeValue += &quot;foo&quot;, with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.nodeValue += &quot;foo&quot;, with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.nodeValue += detachedForeignComment.nodeValue, with unselected range collapsed at (detachedForeignComment, 0) 
+FAIL detachedForeignComment.nodeValue += detachedForeignComment.nodeValue, with selected range collapsed at (detachedForeignComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.data = &quot;&quot;, with unselected range on detachedForeignComment from 0 to 1 
+FAIL detachedForeignComment.data = &quot;&quot;, with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.data = &quot;foo&quot;, with unselected range on detachedForeignComment from 0 to 1 
+FAIL detachedForeignComment.data = &quot;foo&quot;, with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.data = detachedForeignComment.data, with unselected range on detachedForeignComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedForeignComment.data = detachedForeignComment.data, with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.data += &quot;&quot;, with unselected range on detachedForeignComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedForeignComment.data += &quot;&quot;, with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.data += &quot;foo&quot;, with unselected range on detachedForeignComment from 0 to 1 
+FAIL detachedForeignComment.data += &quot;foo&quot;, with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.data += detachedForeignComment.data, with unselected range on detachedForeignComment from 0 to 1 
+FAIL detachedForeignComment.data += detachedForeignComment.data, with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.textContent = &quot;&quot;, with unselected range on detachedForeignComment from 0 to 1 
+FAIL detachedForeignComment.textContent = &quot;&quot;, with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.textContent = &quot;foo&quot;, with unselected range on detachedForeignComment from 0 to 1 
+FAIL detachedForeignComment.textContent = &quot;foo&quot;, with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.textContent = detachedForeignComment.textContent, with unselected range on detachedForeignComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedForeignComment.textContent = detachedForeignComment.textContent, with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.textContent += &quot;&quot;, with unselected range on detachedForeignComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedForeignComment.textContent += &quot;&quot;, with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.textContent += &quot;foo&quot;, with unselected range on detachedForeignComment from 0 to 1 
+FAIL detachedForeignComment.textContent += &quot;foo&quot;, with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.textContent += detachedForeignComment.textContent, with unselected range on detachedForeignComment from 0 to 1 
+FAIL detachedForeignComment.textContent += detachedForeignComment.textContent, with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.nodeValue = &quot;&quot;, with unselected range on detachedForeignComment from 0 to 1 
+FAIL detachedForeignComment.nodeValue = &quot;&quot;, with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.nodeValue = &quot;foo&quot;, with unselected range on detachedForeignComment from 0 to 1 
+FAIL detachedForeignComment.nodeValue = &quot;foo&quot;, with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.nodeValue = detachedForeignComment.nodeValue, with unselected range on detachedForeignComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedForeignComment.nodeValue = detachedForeignComment.nodeValue, with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.nodeValue += &quot;&quot;, with unselected range on detachedForeignComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedForeignComment.nodeValue += &quot;&quot;, with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.nodeValue += &quot;foo&quot;, with unselected range on detachedForeignComment from 0 to 1 
+FAIL detachedForeignComment.nodeValue += &quot;foo&quot;, with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.nodeValue += detachedForeignComment.nodeValue, with unselected range on detachedForeignComment from 0 to 1 
+FAIL detachedForeignComment.nodeValue += detachedForeignComment.nodeValue, with selected range on detachedForeignComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.data = &quot;&quot;, with unselected range collapsed at (detachedForeignComment, 1) 
+FAIL detachedForeignComment.data = &quot;&quot;, with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.data = &quot;foo&quot;, with unselected range collapsed at (detachedForeignComment, 1) 
+FAIL detachedForeignComment.data = &quot;foo&quot;, with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.data = detachedForeignComment.data, with unselected range collapsed at (detachedForeignComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedForeignComment.data = detachedForeignComment.data, with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.data += &quot;&quot;, with unselected range collapsed at (detachedForeignComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedForeignComment.data += &quot;&quot;, with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.data += &quot;foo&quot;, with unselected range collapsed at (detachedForeignComment, 1) 
+FAIL detachedForeignComment.data += &quot;foo&quot;, with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.data += detachedForeignComment.data, with unselected range collapsed at (detachedForeignComment, 1) 
+FAIL detachedForeignComment.data += detachedForeignComment.data, with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.textContent = &quot;&quot;, with unselected range collapsed at (detachedForeignComment, 1) 
+FAIL detachedForeignComment.textContent = &quot;&quot;, with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.textContent = &quot;foo&quot;, with unselected range collapsed at (detachedForeignComment, 1) 
+FAIL detachedForeignComment.textContent = &quot;foo&quot;, with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.textContent = detachedForeignComment.textContent, with unselected range collapsed at (detachedForeignComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedForeignComment.textContent = detachedForeignComment.textContent, with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.textContent += &quot;&quot;, with unselected range collapsed at (detachedForeignComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedForeignComment.textContent += &quot;&quot;, with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.textContent += &quot;foo&quot;, with unselected range collapsed at (detachedForeignComment, 1) 
+FAIL detachedForeignComment.textContent += &quot;foo&quot;, with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.textContent += detachedForeignComment.textContent, with unselected range collapsed at (detachedForeignComment, 1) 
+FAIL detachedForeignComment.textContent += detachedForeignComment.textContent, with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.nodeValue = &quot;&quot;, with unselected range collapsed at (detachedForeignComment, 1) 
+FAIL detachedForeignComment.nodeValue = &quot;&quot;, with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.nodeValue = &quot;foo&quot;, with unselected range collapsed at (detachedForeignComment, 1) 
+FAIL detachedForeignComment.nodeValue = &quot;foo&quot;, with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.nodeValue = detachedForeignComment.nodeValue, with unselected range collapsed at (detachedForeignComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedForeignComment.nodeValue = detachedForeignComment.nodeValue, with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.nodeValue += &quot;&quot;, with unselected range collapsed at (detachedForeignComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedForeignComment.nodeValue += &quot;&quot;, with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.nodeValue += &quot;foo&quot;, with unselected range collapsed at (detachedForeignComment, 1) 
+FAIL detachedForeignComment.nodeValue += &quot;foo&quot;, with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.nodeValue += detachedForeignComment.nodeValue, with unselected range collapsed at (detachedForeignComment, 1) 
+FAIL detachedForeignComment.nodeValue += detachedForeignComment.nodeValue, with selected range collapsed at (detachedForeignComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.data = &quot;&quot;, with unselected range on detachedForeignComment from 0 to detachedForeignComment.length 
+FAIL detachedForeignComment.data = &quot;&quot;, with selected range on detachedForeignComment from 0 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.data = &quot;foo&quot;, with unselected range on detachedForeignComment from 0 to detachedForeignComment.length 
+FAIL detachedForeignComment.data = &quot;foo&quot;, with selected range on detachedForeignComment from 0 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.data = detachedForeignComment.data, with unselected range on detachedForeignComment from 0 to detachedForeignComment.length assert_equals: Wrong end offset expected 0 but got 19
+FAIL detachedForeignComment.data = detachedForeignComment.data, with selected range on detachedForeignComment from 0 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.data += &quot;&quot;, with unselected range on detachedForeignComment from 0 to detachedForeignComment.length assert_equals: Wrong end offset expected 0 but got 19
+FAIL detachedForeignComment.data += &quot;&quot;, with selected range on detachedForeignComment from 0 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.data += &quot;foo&quot;, with unselected range on detachedForeignComment from 0 to detachedForeignComment.length 
+FAIL detachedForeignComment.data += &quot;foo&quot;, with selected range on detachedForeignComment from 0 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.data += detachedForeignComment.data, with unselected range on detachedForeignComment from 0 to detachedForeignComment.length 
+FAIL detachedForeignComment.data += detachedForeignComment.data, with selected range on detachedForeignComment from 0 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.textContent = &quot;&quot;, with unselected range on detachedForeignComment from 0 to detachedForeignComment.length 
+FAIL detachedForeignComment.textContent = &quot;&quot;, with selected range on detachedForeignComment from 0 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.textContent = &quot;foo&quot;, with unselected range on detachedForeignComment from 0 to detachedForeignComment.length 
+FAIL detachedForeignComment.textContent = &quot;foo&quot;, with selected range on detachedForeignComment from 0 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.textContent = detachedForeignComment.textContent, with unselected range on detachedForeignComment from 0 to detachedForeignComment.length assert_equals: Wrong end offset expected 0 but got 19
+FAIL detachedForeignComment.textContent = detachedForeignComment.textContent, with selected range on detachedForeignComment from 0 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.textContent += &quot;&quot;, with unselected range on detachedForeignComment from 0 to detachedForeignComment.length assert_equals: Wrong end offset expected 0 but got 19
+FAIL detachedForeignComment.textContent += &quot;&quot;, with selected range on detachedForeignComment from 0 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.textContent += &quot;foo&quot;, with unselected range on detachedForeignComment from 0 to detachedForeignComment.length 
+FAIL detachedForeignComment.textContent += &quot;foo&quot;, with selected range on detachedForeignComment from 0 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.textContent += detachedForeignComment.textContent, with unselected range on detachedForeignComment from 0 to detachedForeignComment.length 
+FAIL detachedForeignComment.textContent += detachedForeignComment.textContent, with selected range on detachedForeignComment from 0 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.nodeValue = &quot;&quot;, with unselected range on detachedForeignComment from 0 to detachedForeignComment.length 
+FAIL detachedForeignComment.nodeValue = &quot;&quot;, with selected range on detachedForeignComment from 0 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.nodeValue = &quot;foo&quot;, with unselected range on detachedForeignComment from 0 to detachedForeignComment.length 
+FAIL detachedForeignComment.nodeValue = &quot;foo&quot;, with selected range on detachedForeignComment from 0 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.nodeValue = detachedForeignComment.nodeValue, with unselected range on detachedForeignComment from 0 to detachedForeignComment.length assert_equals: Wrong end offset expected 0 but got 19
+FAIL detachedForeignComment.nodeValue = detachedForeignComment.nodeValue, with selected range on detachedForeignComment from 0 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.nodeValue += &quot;&quot;, with unselected range on detachedForeignComment from 0 to detachedForeignComment.length assert_equals: Wrong end offset expected 0 but got 19
+FAIL detachedForeignComment.nodeValue += &quot;&quot;, with selected range on detachedForeignComment from 0 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.nodeValue += &quot;foo&quot;, with unselected range on detachedForeignComment from 0 to detachedForeignComment.length 
+FAIL detachedForeignComment.nodeValue += &quot;foo&quot;, with selected range on detachedForeignComment from 0 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.nodeValue += detachedForeignComment.nodeValue, with unselected range on detachedForeignComment from 0 to detachedForeignComment.length 
+FAIL detachedForeignComment.nodeValue += detachedForeignComment.nodeValue, with selected range on detachedForeignComment from 0 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.data = &quot;&quot;, with unselected range on detachedForeignComment from 1 to detachedForeignComment.length 
+FAIL detachedForeignComment.data = &quot;&quot;, with selected range on detachedForeignComment from 1 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.data = &quot;foo&quot;, with unselected range on detachedForeignComment from 1 to detachedForeignComment.length 
+FAIL detachedForeignComment.data = &quot;foo&quot;, with selected range on detachedForeignComment from 1 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.data = detachedForeignComment.data, with unselected range on detachedForeignComment from 1 to detachedForeignComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedForeignComment.data = detachedForeignComment.data, with selected range on detachedForeignComment from 1 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.data += &quot;&quot;, with unselected range on detachedForeignComment from 1 to detachedForeignComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedForeignComment.data += &quot;&quot;, with selected range on detachedForeignComment from 1 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.data += &quot;foo&quot;, with unselected range on detachedForeignComment from 1 to detachedForeignComment.length 
+FAIL detachedForeignComment.data += &quot;foo&quot;, with selected range on detachedForeignComment from 1 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.data += detachedForeignComment.data, with unselected range on detachedForeignComment from 1 to detachedForeignComment.length 
+FAIL detachedForeignComment.data += detachedForeignComment.data, with selected range on detachedForeignComment from 1 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.textContent = &quot;&quot;, with unselected range on detachedForeignComment from 1 to detachedForeignComment.length 
+FAIL detachedForeignComment.textContent = &quot;&quot;, with selected range on detachedForeignComment from 1 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.textContent = &quot;foo&quot;, with unselected range on detachedForeignComment from 1 to detachedForeignComment.length 
+FAIL detachedForeignComment.textContent = &quot;foo&quot;, with selected range on detachedForeignComment from 1 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.textContent = detachedForeignComment.textContent, with unselected range on detachedForeignComment from 1 to detachedForeignComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedForeignComment.textContent = detachedForeignComment.textContent, with selected range on detachedForeignComment from 1 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.textContent += &quot;&quot;, with unselected range on detachedForeignComment from 1 to detachedForeignComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedForeignComment.textContent += &quot;&quot;, with selected range on detachedForeignComment from 1 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.textContent += &quot;foo&quot;, with unselected range on detachedForeignComment from 1 to detachedForeignComment.length 
+FAIL detachedForeignComment.textContent += &quot;foo&quot;, with selected range on detachedForeignComment from 1 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.textContent += detachedForeignComment.textContent, with unselected range on detachedForeignComment from 1 to detachedForeignComment.length 
+FAIL detachedForeignComment.textContent += detachedForeignComment.textContent, with selected range on detachedForeignComment from 1 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.nodeValue = &quot;&quot;, with unselected range on detachedForeignComment from 1 to detachedForeignComment.length 
+FAIL detachedForeignComment.nodeValue = &quot;&quot;, with selected range on detachedForeignComment from 1 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.nodeValue = &quot;foo&quot;, with unselected range on detachedForeignComment from 1 to detachedForeignComment.length 
+FAIL detachedForeignComment.nodeValue = &quot;foo&quot;, with selected range on detachedForeignComment from 1 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.nodeValue = detachedForeignComment.nodeValue, with unselected range on detachedForeignComment from 1 to detachedForeignComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedForeignComment.nodeValue = detachedForeignComment.nodeValue, with selected range on detachedForeignComment from 1 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.nodeValue += &quot;&quot;, with unselected range on detachedForeignComment from 1 to detachedForeignComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedForeignComment.nodeValue += &quot;&quot;, with selected range on detachedForeignComment from 1 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.nodeValue += &quot;foo&quot;, with unselected range on detachedForeignComment from 1 to detachedForeignComment.length 
+FAIL detachedForeignComment.nodeValue += &quot;foo&quot;, with selected range on detachedForeignComment from 1 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.nodeValue += detachedForeignComment.nodeValue, with unselected range on detachedForeignComment from 1 to detachedForeignComment.length 
+FAIL detachedForeignComment.nodeValue += detachedForeignComment.nodeValue, with selected range on detachedForeignComment from 1 to detachedForeignComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.data = &quot;&quot;, with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) 
+FAIL detachedForeignComment.data = &quot;&quot;, with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.data = &quot;foo&quot;, with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) 
+FAIL detachedForeignComment.data = &quot;foo&quot;, with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.data = detachedForeignComment.data, with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Wrong start offset expected 0 but got 19
+FAIL detachedForeignComment.data = detachedForeignComment.data, with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.data += &quot;&quot;, with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Wrong start offset expected 0 but got 19
+FAIL detachedForeignComment.data += &quot;&quot;, with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.data += &quot;foo&quot;, with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) 
+FAIL detachedForeignComment.data += &quot;foo&quot;, with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.data += detachedForeignComment.data, with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) 
+FAIL detachedForeignComment.data += detachedForeignComment.data, with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.textContent = &quot;&quot;, with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) 
+FAIL detachedForeignComment.textContent = &quot;&quot;, with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.textContent = &quot;foo&quot;, with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) 
+FAIL detachedForeignComment.textContent = &quot;foo&quot;, with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.textContent = detachedForeignComment.textContent, with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Wrong start offset expected 0 but got 19
+FAIL detachedForeignComment.textContent = detachedForeignComment.textContent, with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.textContent += &quot;&quot;, with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Wrong start offset expected 0 but got 19
+FAIL detachedForeignComment.textContent += &quot;&quot;, with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.textContent += &quot;foo&quot;, with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) 
+FAIL detachedForeignComment.textContent += &quot;foo&quot;, with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.textContent += detachedForeignComment.textContent, with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) 
+FAIL detachedForeignComment.textContent += detachedForeignComment.textContent, with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.nodeValue = &quot;&quot;, with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) 
+FAIL detachedForeignComment.nodeValue = &quot;&quot;, with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.nodeValue = &quot;foo&quot;, with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) 
+FAIL detachedForeignComment.nodeValue = &quot;foo&quot;, with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.nodeValue = detachedForeignComment.nodeValue, with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Wrong start offset expected 0 but got 19
+FAIL detachedForeignComment.nodeValue = detachedForeignComment.nodeValue, with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedForeignComment.nodeValue += &quot;&quot;, with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Wrong start offset expected 0 but got 19
+FAIL detachedForeignComment.nodeValue += &quot;&quot;, with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.nodeValue += &quot;foo&quot;, with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) 
+FAIL detachedForeignComment.nodeValue += &quot;foo&quot;, with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedForeignComment.nodeValue += detachedForeignComment.nodeValue, with unselected range collapsed at (detachedForeignComment, detachedForeignComment.length) 
+FAIL detachedForeignComment.nodeValue += detachedForeignComment.nodeValue, with selected range collapsed at (detachedForeignComment, detachedForeignComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.data = &quot;&quot;, with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.data = &quot;&quot;, with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.data = &quot;foo&quot;, with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.data = &quot;foo&quot;, with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.data = detachedXmlComment.data, with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.data = detachedXmlComment.data, with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.data += &quot;&quot;, with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.data += &quot;&quot;, with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.data += &quot;foo&quot;, with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.data += &quot;foo&quot;, with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.data += detachedXmlComment.data, with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.data += detachedXmlComment.data, with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.textContent = &quot;&quot;, with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.textContent = &quot;&quot;, with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.textContent = &quot;foo&quot;, with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.textContent = &quot;foo&quot;, with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.textContent = detachedXmlComment.textContent, with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.textContent = detachedXmlComment.textContent, with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.textContent += &quot;&quot;, with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.textContent += &quot;&quot;, with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.textContent += &quot;foo&quot;, with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.textContent += &quot;foo&quot;, with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.textContent += detachedXmlComment.textContent, with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.textContent += detachedXmlComment.textContent, with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.nodeValue = &quot;&quot;, with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.nodeValue = &quot;&quot;, with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.nodeValue = &quot;foo&quot;, with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.nodeValue = &quot;foo&quot;, with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.nodeValue = detachedXmlComment.nodeValue, with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.nodeValue = detachedXmlComment.nodeValue, with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.nodeValue += &quot;&quot;, with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.nodeValue += &quot;&quot;, with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.nodeValue += &quot;foo&quot;, with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.nodeValue += &quot;foo&quot;, with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.nodeValue += detachedXmlComment.nodeValue, with unselected range collapsed at (detachedXmlComment, 0) 
+FAIL detachedXmlComment.nodeValue += detachedXmlComment.nodeValue, with selected range collapsed at (detachedXmlComment, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.data = &quot;&quot;, with unselected range on detachedXmlComment from 0 to 1 
+FAIL detachedXmlComment.data = &quot;&quot;, with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.data = &quot;foo&quot;, with unselected range on detachedXmlComment from 0 to 1 
+FAIL detachedXmlComment.data = &quot;foo&quot;, with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.data = detachedXmlComment.data, with unselected range on detachedXmlComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedXmlComment.data = detachedXmlComment.data, with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.data += &quot;&quot;, with unselected range on detachedXmlComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedXmlComment.data += &quot;&quot;, with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.data += &quot;foo&quot;, with unselected range on detachedXmlComment from 0 to 1 
+FAIL detachedXmlComment.data += &quot;foo&quot;, with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.data += detachedXmlComment.data, with unselected range on detachedXmlComment from 0 to 1 
+FAIL detachedXmlComment.data += detachedXmlComment.data, with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.textContent = &quot;&quot;, with unselected range on detachedXmlComment from 0 to 1 
+FAIL detachedXmlComment.textContent = &quot;&quot;, with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.textContent = &quot;foo&quot;, with unselected range on detachedXmlComment from 0 to 1 
+FAIL detachedXmlComment.textContent = &quot;foo&quot;, with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.textContent = detachedXmlComment.textContent, with unselected range on detachedXmlComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedXmlComment.textContent = detachedXmlComment.textContent, with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.textContent += &quot;&quot;, with unselected range on detachedXmlComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedXmlComment.textContent += &quot;&quot;, with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.textContent += &quot;foo&quot;, with unselected range on detachedXmlComment from 0 to 1 
+FAIL detachedXmlComment.textContent += &quot;foo&quot;, with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.textContent += detachedXmlComment.textContent, with unselected range on detachedXmlComment from 0 to 1 
+FAIL detachedXmlComment.textContent += detachedXmlComment.textContent, with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.nodeValue = &quot;&quot;, with unselected range on detachedXmlComment from 0 to 1 
+FAIL detachedXmlComment.nodeValue = &quot;&quot;, with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.nodeValue = &quot;foo&quot;, with unselected range on detachedXmlComment from 0 to 1 
+FAIL detachedXmlComment.nodeValue = &quot;foo&quot;, with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.nodeValue = detachedXmlComment.nodeValue, with unselected range on detachedXmlComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedXmlComment.nodeValue = detachedXmlComment.nodeValue, with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.nodeValue += &quot;&quot;, with unselected range on detachedXmlComment from 0 to 1 assert_equals: Wrong end offset expected 0 but got 1
+FAIL detachedXmlComment.nodeValue += &quot;&quot;, with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.nodeValue += &quot;foo&quot;, with unselected range on detachedXmlComment from 0 to 1 
+FAIL detachedXmlComment.nodeValue += &quot;foo&quot;, with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.nodeValue += detachedXmlComment.nodeValue, with unselected range on detachedXmlComment from 0 to 1 
+FAIL detachedXmlComment.nodeValue += detachedXmlComment.nodeValue, with selected range on detachedXmlComment from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.data = &quot;&quot;, with unselected range collapsed at (detachedXmlComment, 1) 
+FAIL detachedXmlComment.data = &quot;&quot;, with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.data = &quot;foo&quot;, with unselected range collapsed at (detachedXmlComment, 1) 
+FAIL detachedXmlComment.data = &quot;foo&quot;, with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.data = detachedXmlComment.data, with unselected range collapsed at (detachedXmlComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedXmlComment.data = detachedXmlComment.data, with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.data += &quot;&quot;, with unselected range collapsed at (detachedXmlComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedXmlComment.data += &quot;&quot;, with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.data += &quot;foo&quot;, with unselected range collapsed at (detachedXmlComment, 1) 
+FAIL detachedXmlComment.data += &quot;foo&quot;, with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.data += detachedXmlComment.data, with unselected range collapsed at (detachedXmlComment, 1) 
+FAIL detachedXmlComment.data += detachedXmlComment.data, with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.textContent = &quot;&quot;, with unselected range collapsed at (detachedXmlComment, 1) 
+FAIL detachedXmlComment.textContent = &quot;&quot;, with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.textContent = &quot;foo&quot;, with unselected range collapsed at (detachedXmlComment, 1) 
+FAIL detachedXmlComment.textContent = &quot;foo&quot;, with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.textContent = detachedXmlComment.textContent, with unselected range collapsed at (detachedXmlComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedXmlComment.textContent = detachedXmlComment.textContent, with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.textContent += &quot;&quot;, with unselected range collapsed at (detachedXmlComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedXmlComment.textContent += &quot;&quot;, with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.textContent += &quot;foo&quot;, with unselected range collapsed at (detachedXmlComment, 1) 
+FAIL detachedXmlComment.textContent += &quot;foo&quot;, with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.textContent += detachedXmlComment.textContent, with unselected range collapsed at (detachedXmlComment, 1) 
+FAIL detachedXmlComment.textContent += detachedXmlComment.textContent, with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.nodeValue = &quot;&quot;, with unselected range collapsed at (detachedXmlComment, 1) 
+FAIL detachedXmlComment.nodeValue = &quot;&quot;, with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.nodeValue = &quot;foo&quot;, with unselected range collapsed at (detachedXmlComment, 1) 
+FAIL detachedXmlComment.nodeValue = &quot;foo&quot;, with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.nodeValue = detachedXmlComment.nodeValue, with unselected range collapsed at (detachedXmlComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedXmlComment.nodeValue = detachedXmlComment.nodeValue, with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.nodeValue += &quot;&quot;, with unselected range collapsed at (detachedXmlComment, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedXmlComment.nodeValue += &quot;&quot;, with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.nodeValue += &quot;foo&quot;, with unselected range collapsed at (detachedXmlComment, 1) 
+FAIL detachedXmlComment.nodeValue += &quot;foo&quot;, with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.nodeValue += detachedXmlComment.nodeValue, with unselected range collapsed at (detachedXmlComment, 1) 
+FAIL detachedXmlComment.nodeValue += detachedXmlComment.nodeValue, with selected range collapsed at (detachedXmlComment, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.data = &quot;&quot;, with unselected range on detachedXmlComment from 0 to detachedXmlComment.length 
+FAIL detachedXmlComment.data = &quot;&quot;, with selected range on detachedXmlComment from 0 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.data = &quot;foo&quot;, with unselected range on detachedXmlComment from 0 to detachedXmlComment.length 
+FAIL detachedXmlComment.data = &quot;foo&quot;, with selected range on detachedXmlComment from 0 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.data = detachedXmlComment.data, with unselected range on detachedXmlComment from 0 to detachedXmlComment.length assert_equals: Wrong end offset expected 0 but got 26
+FAIL detachedXmlComment.data = detachedXmlComment.data, with selected range on detachedXmlComment from 0 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.data += &quot;&quot;, with unselected range on detachedXmlComment from 0 to detachedXmlComment.length assert_equals: Wrong end offset expected 0 but got 26
+FAIL detachedXmlComment.data += &quot;&quot;, with selected range on detachedXmlComment from 0 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.data += &quot;foo&quot;, with unselected range on detachedXmlComment from 0 to detachedXmlComment.length 
+FAIL detachedXmlComment.data += &quot;foo&quot;, with selected range on detachedXmlComment from 0 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.data += detachedXmlComment.data, with unselected range on detachedXmlComment from 0 to detachedXmlComment.length 
+FAIL detachedXmlComment.data += detachedXmlComment.data, with selected range on detachedXmlComment from 0 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.textContent = &quot;&quot;, with unselected range on detachedXmlComment from 0 to detachedXmlComment.length 
+FAIL detachedXmlComment.textContent = &quot;&quot;, with selected range on detachedXmlComment from 0 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.textContent = &quot;foo&quot;, with unselected range on detachedXmlComment from 0 to detachedXmlComment.length 
+FAIL detachedXmlComment.textContent = &quot;foo&quot;, with selected range on detachedXmlComment from 0 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.textContent = detachedXmlComment.textContent, with unselected range on detachedXmlComment from 0 to detachedXmlComment.length assert_equals: Wrong end offset expected 0 but got 26
+FAIL detachedXmlComment.textContent = detachedXmlComment.textContent, with selected range on detachedXmlComment from 0 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.textContent += &quot;&quot;, with unselected range on detachedXmlComment from 0 to detachedXmlComment.length assert_equals: Wrong end offset expected 0 but got 26
+FAIL detachedXmlComment.textContent += &quot;&quot;, with selected range on detachedXmlComment from 0 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.textContent += &quot;foo&quot;, with unselected range on detachedXmlComment from 0 to detachedXmlComment.length 
+FAIL detachedXmlComment.textContent += &quot;foo&quot;, with selected range on detachedXmlComment from 0 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.textContent += detachedXmlComment.textContent, with unselected range on detachedXmlComment from 0 to detachedXmlComment.length 
+FAIL detachedXmlComment.textContent += detachedXmlComment.textContent, with selected range on detachedXmlComment from 0 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.nodeValue = &quot;&quot;, with unselected range on detachedXmlComment from 0 to detachedXmlComment.length 
+FAIL detachedXmlComment.nodeValue = &quot;&quot;, with selected range on detachedXmlComment from 0 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.nodeValue = &quot;foo&quot;, with unselected range on detachedXmlComment from 0 to detachedXmlComment.length 
+FAIL detachedXmlComment.nodeValue = &quot;foo&quot;, with selected range on detachedXmlComment from 0 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.nodeValue = detachedXmlComment.nodeValue, with unselected range on detachedXmlComment from 0 to detachedXmlComment.length assert_equals: Wrong end offset expected 0 but got 26
+FAIL detachedXmlComment.nodeValue = detachedXmlComment.nodeValue, with selected range on detachedXmlComment from 0 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.nodeValue += &quot;&quot;, with unselected range on detachedXmlComment from 0 to detachedXmlComment.length assert_equals: Wrong end offset expected 0 but got 26
+FAIL detachedXmlComment.nodeValue += &quot;&quot;, with selected range on detachedXmlComment from 0 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.nodeValue += &quot;foo&quot;, with unselected range on detachedXmlComment from 0 to detachedXmlComment.length 
+FAIL detachedXmlComment.nodeValue += &quot;foo&quot;, with selected range on detachedXmlComment from 0 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.nodeValue += detachedXmlComment.nodeValue, with unselected range on detachedXmlComment from 0 to detachedXmlComment.length 
+FAIL detachedXmlComment.nodeValue += detachedXmlComment.nodeValue, with selected range on detachedXmlComment from 0 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.data = &quot;&quot;, with unselected range on detachedXmlComment from 1 to detachedXmlComment.length 
+FAIL detachedXmlComment.data = &quot;&quot;, with selected range on detachedXmlComment from 1 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.data = &quot;foo&quot;, with unselected range on detachedXmlComment from 1 to detachedXmlComment.length 
+FAIL detachedXmlComment.data = &quot;foo&quot;, with selected range on detachedXmlComment from 1 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.data = detachedXmlComment.data, with unselected range on detachedXmlComment from 1 to detachedXmlComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedXmlComment.data = detachedXmlComment.data, with selected range on detachedXmlComment from 1 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.data += &quot;&quot;, with unselected range on detachedXmlComment from 1 to detachedXmlComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedXmlComment.data += &quot;&quot;, with selected range on detachedXmlComment from 1 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.data += &quot;foo&quot;, with unselected range on detachedXmlComment from 1 to detachedXmlComment.length 
+FAIL detachedXmlComment.data += &quot;foo&quot;, with selected range on detachedXmlComment from 1 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.data += detachedXmlComment.data, with unselected range on detachedXmlComment from 1 to detachedXmlComment.length 
+FAIL detachedXmlComment.data += detachedXmlComment.data, with selected range on detachedXmlComment from 1 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.textContent = &quot;&quot;, with unselected range on detachedXmlComment from 1 to detachedXmlComment.length 
+FAIL detachedXmlComment.textContent = &quot;&quot;, with selected range on detachedXmlComment from 1 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.textContent = &quot;foo&quot;, with unselected range on detachedXmlComment from 1 to detachedXmlComment.length 
+FAIL detachedXmlComment.textContent = &quot;foo&quot;, with selected range on detachedXmlComment from 1 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.textContent = detachedXmlComment.textContent, with unselected range on detachedXmlComment from 1 to detachedXmlComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedXmlComment.textContent = detachedXmlComment.textContent, with selected range on detachedXmlComment from 1 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.textContent += &quot;&quot;, with unselected range on detachedXmlComment from 1 to detachedXmlComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedXmlComment.textContent += &quot;&quot;, with selected range on detachedXmlComment from 1 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.textContent += &quot;foo&quot;, with unselected range on detachedXmlComment from 1 to detachedXmlComment.length 
+FAIL detachedXmlComment.textContent += &quot;foo&quot;, with selected range on detachedXmlComment from 1 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.textContent += detachedXmlComment.textContent, with unselected range on detachedXmlComment from 1 to detachedXmlComment.length 
+FAIL detachedXmlComment.textContent += detachedXmlComment.textContent, with selected range on detachedXmlComment from 1 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.nodeValue = &quot;&quot;, with unselected range on detachedXmlComment from 1 to detachedXmlComment.length 
+FAIL detachedXmlComment.nodeValue = &quot;&quot;, with selected range on detachedXmlComment from 1 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.nodeValue = &quot;foo&quot;, with unselected range on detachedXmlComment from 1 to detachedXmlComment.length 
+FAIL detachedXmlComment.nodeValue = &quot;foo&quot;, with selected range on detachedXmlComment from 1 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.nodeValue = detachedXmlComment.nodeValue, with unselected range on detachedXmlComment from 1 to detachedXmlComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedXmlComment.nodeValue = detachedXmlComment.nodeValue, with selected range on detachedXmlComment from 1 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.nodeValue += &quot;&quot;, with unselected range on detachedXmlComment from 1 to detachedXmlComment.length assert_equals: Wrong start offset expected 0 but got 1
+FAIL detachedXmlComment.nodeValue += &quot;&quot;, with selected range on detachedXmlComment from 1 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.nodeValue += &quot;foo&quot;, with unselected range on detachedXmlComment from 1 to detachedXmlComment.length 
+FAIL detachedXmlComment.nodeValue += &quot;foo&quot;, with selected range on detachedXmlComment from 1 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.nodeValue += detachedXmlComment.nodeValue, with unselected range on detachedXmlComment from 1 to detachedXmlComment.length 
+FAIL detachedXmlComment.nodeValue += detachedXmlComment.nodeValue, with selected range on detachedXmlComment from 1 to detachedXmlComment.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.data = &quot;&quot;, with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) 
+FAIL detachedXmlComment.data = &quot;&quot;, with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.data = &quot;foo&quot;, with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) 
+FAIL detachedXmlComment.data = &quot;foo&quot;, with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.data = detachedXmlComment.data, with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Wrong start offset expected 0 but got 26
+FAIL detachedXmlComment.data = detachedXmlComment.data, with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.data += &quot;&quot;, with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Wrong start offset expected 0 but got 26
+FAIL detachedXmlComment.data += &quot;&quot;, with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.data += &quot;foo&quot;, with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) 
+FAIL detachedXmlComment.data += &quot;foo&quot;, with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.data += detachedXmlComment.data, with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) 
+FAIL detachedXmlComment.data += detachedXmlComment.data, with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.textContent = &quot;&quot;, with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) 
+FAIL detachedXmlComment.textContent = &quot;&quot;, with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.textContent = &quot;foo&quot;, with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) 
+FAIL detachedXmlComment.textContent = &quot;foo&quot;, with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.textContent = detachedXmlComment.textContent, with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Wrong start offset expected 0 but got 26
+FAIL detachedXmlComment.textContent = detachedXmlComment.textContent, with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.textContent += &quot;&quot;, with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Wrong start offset expected 0 but got 26
+FAIL detachedXmlComment.textContent += &quot;&quot;, with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.textContent += &quot;foo&quot;, with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) 
+FAIL detachedXmlComment.textContent += &quot;foo&quot;, with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.textContent += detachedXmlComment.textContent, with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) 
+FAIL detachedXmlComment.textContent += detachedXmlComment.textContent, with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.nodeValue = &quot;&quot;, with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) 
+FAIL detachedXmlComment.nodeValue = &quot;&quot;, with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.nodeValue = &quot;foo&quot;, with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) 
+FAIL detachedXmlComment.nodeValue = &quot;foo&quot;, with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.nodeValue = detachedXmlComment.nodeValue, with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Wrong start offset expected 0 but got 26
+FAIL detachedXmlComment.nodeValue = detachedXmlComment.nodeValue, with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedXmlComment.nodeValue += &quot;&quot;, with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Wrong start offset expected 0 but got 26
+FAIL detachedXmlComment.nodeValue += &quot;&quot;, with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.nodeValue += &quot;foo&quot;, with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) 
+FAIL detachedXmlComment.nodeValue += &quot;foo&quot;, with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedXmlComment.nodeValue += detachedXmlComment.nodeValue, with unselected range collapsed at (detachedXmlComment, detachedXmlComment.length) 
+FAIL detachedXmlComment.nodeValue += detachedXmlComment.nodeValue, with selected range collapsed at (detachedXmlComment, detachedXmlComment.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL testDiv.insertBefore(paras[0], paras[1]), with unselected range collapsed at (paras[0], 0) assert_equals: Wrong start container expected Element node &lt;div id=&quot;test&quot;&gt;&lt;p id=&quot;a&quot;&gt;Äb̈c̈d̈ëf̈g̈ḧ
+&lt;/p&gt;&lt;p id=&quot;b&quot; s... but got Element node &lt;p id=&quot;a&quot;&gt;Äb̈c̈d̈ëf̈g̈ḧ
+&lt;/p&gt;
+FAIL testDiv.insertBefore(paras[0], paras[1]), with selected range collapsed at (paras[0], 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL testDiv.insertBefore(paras[0], paras[1]), with unselected range on paras[0] from 0 to 1 assert_equals: Wrong start container expected Element node &lt;div id=&quot;test&quot;&gt;&lt;p id=&quot;a&quot;&gt;Äb̈c̈d̈ëf̈g̈ḧ
+&lt;/p&gt;&lt;p id=&quot;b&quot; s... but got Element node &lt;p id=&quot;a&quot;&gt;Äb̈c̈d̈ëf̈g̈ḧ
+&lt;/p&gt;
+FAIL testDiv.insertBefore(paras[0], paras[1]), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+FAIL testDiv.insertBefore(paras[0], paras[1]), with unselected range collapsed at (paras[0], 1) assert_equals: Wrong start container expected Element node &lt;div id=&quot;test&quot;&gt;&lt;p id=&quot;a&quot;&gt;Äb̈c̈d̈ëf̈g̈ḧ
+&lt;/p&gt;&lt;p id=&quot;b&quot; s... but got Element node &lt;p id=&quot;a&quot;&gt;Äb̈c̈d̈ëf̈g̈ḧ
+&lt;/p&gt;
+FAIL testDiv.insertBefore(paras[0], paras[1]), with selected range collapsed at (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS testDiv.insertBefore(paras[0], paras[1]), with unselected range on testDiv from 0 to 2 
+FAIL testDiv.insertBefore(paras[0], paras[1]), with selected range on testDiv from 0 to 2 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+Ijklmnop
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+Ijklmnop
+&quot;
+FAIL testDiv.insertBefore(paras[0], paras[1]), with unselected range collapsed at (testDiv, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL testDiv.insertBefore(paras[0], paras[1]), with selected range collapsed at (testDiv, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL testDiv.insertBefore(paras[0], paras[1]), with unselected range on testDiv from 1 to 2 assert_equals: Wrong start offset expected 0 but got 1
+FAIL testDiv.insertBefore(paras[0], paras[1]), with selected range on testDiv from 1 to 2 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ijklmnop
+&quot; but got object &quot;&quot;
+PASS testDiv.insertBefore(paras[0], paras[1]), with unselected range collapsed at (testDiv, 2) 
+FAIL testDiv.insertBefore(paras[0], paras[1]), with selected range collapsed at (testDiv, 2) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].insertBefore(paras[1], paras[0].firstChild), with unselected range collapsed at (paras[0], 0) 
+FAIL paras[0].insertBefore(paras[1], paras[0].firstChild), with selected range collapsed at (paras[0], 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].insertBefore(paras[1], paras[0].firstChild), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].insertBefore(paras[1], paras[0].firstChild), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].insertBefore(paras[1], paras[0].firstChild), with unselected range collapsed at (paras[0], 1) 
+FAIL paras[0].insertBefore(paras[1], paras[0].firstChild), with selected range collapsed at (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].insertBefore(paras[1], paras[0].firstChild), with unselected range on testDiv from 0 to 1 
+FAIL paras[0].insertBefore(paras[1], paras[0].firstChild), with selected range on testDiv from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+Ijklmnop
+&quot;
+PASS paras[0].insertBefore(paras[1], paras[0].firstChild), with unselected range on testDiv from 0 to 2 
+FAIL paras[0].insertBefore(paras[1], paras[0].firstChild), with selected range on testDiv from 0 to 2 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+Ijklmnop
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+Ijklmnop
+&quot;
+PASS paras[0].insertBefore(paras[1], paras[0].firstChild), with unselected range collapsed at (testDiv, 1) 
+FAIL paras[0].insertBefore(paras[1], paras[0].firstChild), with selected range collapsed at (testDiv, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].insertBefore(paras[1], paras[0].firstChild), with unselected range on testDiv from 1 to 2 
+FAIL paras[0].insertBefore(paras[1], paras[0].firstChild), with selected range on testDiv from 1 to 2 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ijklmnop
+&quot; but got object &quot;&quot;
+PASS paras[0].insertBefore(paras[1], null), with unselected range collapsed at (paras[0], 0) 
+FAIL paras[0].insertBefore(paras[1], null), with selected range collapsed at (paras[0], 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].insertBefore(paras[1], null), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].insertBefore(paras[1], null), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].insertBefore(paras[1], null), with unselected range collapsed at (paras[0], 1) 
+FAIL paras[0].insertBefore(paras[1], null), with selected range collapsed at (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].insertBefore(paras[1], null), with unselected range on testDiv from 0 to 1 
+FAIL paras[0].insertBefore(paras[1], null), with selected range on testDiv from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+Ijklmnop
+&quot;
+PASS paras[0].insertBefore(paras[1], null), with unselected range on testDiv from 0 to 2 
+FAIL paras[0].insertBefore(paras[1], null), with selected range on testDiv from 0 to 2 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+Ijklmnop
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+Ijklmnop
+&quot;
+PASS paras[0].insertBefore(paras[1], null), with unselected range collapsed at (testDiv, 1) 
+FAIL paras[0].insertBefore(paras[1], null), with selected range collapsed at (testDiv, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].insertBefore(paras[1], null), with unselected range on testDiv from 1 to 2 
+FAIL paras[0].insertBefore(paras[1], null), with selected range on testDiv from 1 to 2 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ijklmnop
+&quot; but got object &quot;&quot;
+PASS foreignDoc.insertBefore(detachedComment, foreignDoc.documentElement), with unselected range collapsed at (foreignDoc, 0) 
+FAIL foreignDoc.insertBefore(detachedComment, foreignDoc.documentElement), with selected range collapsed at (foreignDoc, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignDoc.insertBefore(detachedComment, foreignDoc.documentElement), with unselected range on foreignDoc from 0 to 1 
+FAIL foreignDoc.insertBefore(detachedComment, foreignDoc.documentElement), with selected range on foreignDoc from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignDoc.insertBefore(detachedComment, foreignDoc.documentElement), with unselected range on foreignDoc from 0 to 2 
+FAIL foreignDoc.insertBefore(detachedComment, foreignDoc.documentElement), with selected range on foreignDoc from 0 to 2 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignDoc.insertBefore(detachedComment, foreignDoc.documentElement), with unselected range collapsed at (foreignDoc, 1) 
+FAIL foreignDoc.insertBefore(detachedComment, foreignDoc.documentElement), with selected range collapsed at (foreignDoc, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignDoc.insertBefore(detachedComment, foreignDoc.doctype), with unselected range collapsed at (foreignDoc, 0) 
+FAIL foreignDoc.insertBefore(detachedComment, foreignDoc.doctype), with selected range collapsed at (foreignDoc, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignDoc.insertBefore(detachedComment, foreignDoc.doctype), with unselected range on foreignDoc from 0 to 1 
+FAIL foreignDoc.insertBefore(detachedComment, foreignDoc.doctype), with selected range on foreignDoc from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignDoc.insertBefore(detachedComment, foreignDoc.doctype), with unselected range on foreignDoc from 0 to 2 
+FAIL foreignDoc.insertBefore(detachedComment, foreignDoc.doctype), with selected range on foreignDoc from 0 to 2 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignDoc.insertBefore(detachedComment, foreignDoc.doctype), with unselected range collapsed at (foreignDoc, 1) 
+FAIL foreignDoc.insertBefore(detachedComment, foreignDoc.doctype), with selected range collapsed at (foreignDoc, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignDoc.insertBefore(detachedComment, null), with unselected range on foreignDoc from 0 to 1 
+FAIL foreignDoc.insertBefore(detachedComment, null), with selected range on foreignDoc from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS paras[0].insertBefore(xmlTextNode, paras[0].firstChild), with unselected range collapsed at (paras[0], 0) 
+FAIL paras[0].insertBefore(xmlTextNode, paras[0].firstChild), with selected range collapsed at (paras[0], 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].insertBefore(xmlTextNode, paras[0].firstChild), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].insertBefore(xmlTextNode, paras[0].firstChild), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].insertBefore(xmlTextNode, paras[0].firstChild), with unselected range collapsed at (paras[0], 1) 
+FAIL paras[0].insertBefore(xmlTextNode, paras[0].firstChild), with selected range collapsed at (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].insertBefore(paras[0], paras[0].firstChild), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].insertBefore(paras[0], paras[0].firstChild), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].insertBefore(testDiv, paras[0].firstChild), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].insertBefore(testDiv, paras[0].firstChild), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].insertBefore(document, paras[0].firstChild), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].insertBefore(document, paras[0].firstChild), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].insertBefore(foreignDoc, paras[0].firstChild), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].insertBefore(foreignDoc, paras[0].firstChild), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].insertBefore(document.doctype, paras[0].firstChild), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].insertBefore(document.doctype, paras[0].firstChild), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+FAIL testDiv.replaceChild(paras[0], paras[0]), with unselected range collapsed at (paras[0], 0) assert_equals: Wrong start container expected Element node &lt;div id=&quot;test&quot;&gt;&lt;p id=&quot;a&quot;&gt;Äb̈c̈d̈ëf̈g̈ḧ
+&lt;/p&gt;&lt;p id=&quot;b&quot; s... but got Element node &lt;p id=&quot;a&quot;&gt;Äb̈c̈d̈ëf̈g̈ḧ
+&lt;/p&gt;
+FAIL testDiv.replaceChild(paras[0], paras[0]), with selected range collapsed at (paras[0], 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL testDiv.replaceChild(paras[0], paras[0]), with unselected range on paras[0] from 0 to 1 assert_equals: Wrong start container expected Element node &lt;div id=&quot;test&quot;&gt;&lt;p id=&quot;a&quot;&gt;Äb̈c̈d̈ëf̈g̈ḧ
+&lt;/p&gt;&lt;p id=&quot;b&quot; s... but got Element node &lt;p id=&quot;a&quot;&gt;Äb̈c̈d̈ëf̈g̈ḧ
+&lt;/p&gt;
+FAIL testDiv.replaceChild(paras[0], paras[0]), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+FAIL testDiv.replaceChild(paras[0], paras[0]), with unselected range collapsed at (paras[0], 1) assert_equals: Wrong start container expected Element node &lt;div id=&quot;test&quot;&gt;&lt;p id=&quot;a&quot;&gt;Äb̈c̈d̈ëf̈g̈ḧ
+&lt;/p&gt;&lt;p id=&quot;b&quot; s... but got Element node &lt;p id=&quot;a&quot;&gt;Äb̈c̈d̈ëf̈g̈ḧ
+&lt;/p&gt;
+FAIL testDiv.replaceChild(paras[0], paras[0]), with selected range collapsed at (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS testDiv.replaceChild(paras[0], paras[0]), with unselected range on testDiv from 0 to 2 
+FAIL testDiv.replaceChild(paras[0], paras[0]), with selected range on testDiv from 0 to 2 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+Ijklmnop
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+Ijklmnop
+&quot;
+FAIL testDiv.replaceChild(paras[0], paras[0]), with unselected range collapsed at (testDiv, 1) assert_equals: Wrong start offset expected 0 but got 1
+FAIL testDiv.replaceChild(paras[0], paras[0]), with selected range collapsed at (testDiv, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL testDiv.replaceChild(paras[0], paras[0]), with unselected range on testDiv from 1 to 2 assert_equals: Wrong start offset expected 0 but got 1
+FAIL testDiv.replaceChild(paras[0], paras[0]), with selected range on testDiv from 1 to 2 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ijklmnop
+&quot; but got object &quot;&quot;
+PASS testDiv.replaceChild(paras[0], paras[0]), with unselected range collapsed at (testDiv, 2) 
+FAIL testDiv.replaceChild(paras[0], paras[0]), with selected range collapsed at (testDiv, 2) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].replaceChild(paras[1], paras[0].firstChild), with unselected range collapsed at (paras[0], 0) 
+FAIL paras[0].replaceChild(paras[1], paras[0].firstChild), with selected range collapsed at (paras[0], 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].replaceChild(paras[1], paras[0].firstChild), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].replaceChild(paras[1], paras[0].firstChild), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].replaceChild(paras[1], paras[0].firstChild), with unselected range collapsed at (paras[0], 1) 
+FAIL paras[0].replaceChild(paras[1], paras[0].firstChild), with selected range collapsed at (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].replaceChild(paras[1], paras[0].firstChild), with unselected range on testDiv from 0 to 1 
+FAIL paras[0].replaceChild(paras[1], paras[0].firstChild), with selected range on testDiv from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+Ijklmnop
+&quot;
+PASS paras[0].replaceChild(paras[1], paras[0].firstChild), with unselected range on testDiv from 0 to 2 
+FAIL paras[0].replaceChild(paras[1], paras[0].firstChild), with selected range on testDiv from 0 to 2 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+Ijklmnop
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+Ijklmnop
+&quot;
+PASS paras[0].replaceChild(paras[1], paras[0].firstChild), with unselected range collapsed at (testDiv, 1) 
+FAIL paras[0].replaceChild(paras[1], paras[0].firstChild), with selected range collapsed at (testDiv, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].replaceChild(paras[1], paras[0].firstChild), with unselected range on testDiv from 1 to 2 
+FAIL paras[0].replaceChild(paras[1], paras[0].firstChild), with selected range on testDiv from 1 to 2 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ijklmnop
+&quot; but got object &quot;&quot;
+PASS foreignDoc.replaceChild(detachedComment, foreignDoc.documentElement), with unselected range collapsed at (foreignDoc, 0) 
+FAIL foreignDoc.replaceChild(detachedComment, foreignDoc.documentElement), with selected range collapsed at (foreignDoc, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignDoc.replaceChild(detachedComment, foreignDoc.documentElement), with unselected range on foreignDoc from 0 to 1 
+FAIL foreignDoc.replaceChild(detachedComment, foreignDoc.documentElement), with selected range on foreignDoc from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignDoc.replaceChild(detachedComment, foreignDoc.documentElement), with unselected range on foreignDoc from 0 to 2 
+FAIL foreignDoc.replaceChild(detachedComment, foreignDoc.documentElement), with selected range on foreignDoc from 0 to 2 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignDoc.replaceChild(detachedComment, foreignDoc.documentElement), with unselected range collapsed at (foreignDoc, 1) 
+FAIL foreignDoc.replaceChild(detachedComment, foreignDoc.documentElement), with selected range collapsed at (foreignDoc, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignDoc.replaceChild(detachedComment, foreignDoc.doctype), with unselected range collapsed at (foreignDoc, 0) 
+FAIL foreignDoc.replaceChild(detachedComment, foreignDoc.doctype), with selected range collapsed at (foreignDoc, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignDoc.replaceChild(detachedComment, foreignDoc.doctype), with unselected range on foreignDoc from 0 to 1 
+FAIL foreignDoc.replaceChild(detachedComment, foreignDoc.doctype), with selected range on foreignDoc from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignDoc.replaceChild(detachedComment, foreignDoc.doctype), with unselected range on foreignDoc from 0 to 2 
+FAIL foreignDoc.replaceChild(detachedComment, foreignDoc.doctype), with selected range on foreignDoc from 0 to 2 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignDoc.replaceChild(detachedComment, foreignDoc.doctype), with unselected range collapsed at (foreignDoc, 1) 
+FAIL foreignDoc.replaceChild(detachedComment, foreignDoc.doctype), with selected range collapsed at (foreignDoc, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS paras[0].replaceChild(xmlTextNode, paras[0].firstChild), with unselected range collapsed at (paras[0], 0) 
+FAIL paras[0].replaceChild(xmlTextNode, paras[0].firstChild), with selected range collapsed at (paras[0], 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].replaceChild(xmlTextNode, paras[0].firstChild), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].replaceChild(xmlTextNode, paras[0].firstChild), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].replaceChild(xmlTextNode, paras[0].firstChild), with unselected range collapsed at (paras[0], 1) 
+FAIL paras[0].replaceChild(xmlTextNode, paras[0].firstChild), with selected range collapsed at (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].replaceChild(paras[0], paras[0].firstChild), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].replaceChild(paras[0], paras[0].firstChild), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].replaceChild(testDiv, paras[0].firstChild), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].replaceChild(testDiv, paras[0].firstChild), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].replaceChild(document, paras[0].firstChild), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].replaceChild(document, paras[0].firstChild), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].replaceChild(foreignDoc, paras[0].firstChild), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].replaceChild(foreignDoc, paras[0].firstChild), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].replaceChild(document.doctype, paras[0].firstChild), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].replaceChild(document.doctype, paras[0].firstChild), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+FAIL testDiv.appendChild(testDiv.lastChild), with unselected range collapsed at (testDiv.lastChild, 0) assert_equals: Wrong start container expected Element node &lt;div id=&quot;test&quot;&gt;&lt;p id=&quot;a&quot;&gt;Äb̈c̈d̈ëf̈g̈ḧ
+&lt;/p&gt;&lt;p id=&quot;b&quot; s... but got Comment node &lt;!--Alphabet soup?--&gt;
+FAIL testDiv.appendChild(testDiv.lastChild), with selected range collapsed at (testDiv.lastChild, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL testDiv.appendChild(testDiv.lastChild), with unselected range on testDiv.lastChild from 0 to 1 assert_equals: Wrong start container expected Element node &lt;div id=&quot;test&quot;&gt;&lt;p id=&quot;a&quot;&gt;Äb̈c̈d̈ëf̈g̈ḧ
+&lt;/p&gt;&lt;p id=&quot;b&quot; s... but got Comment node &lt;!--Alphabet soup?--&gt;
+FAIL testDiv.appendChild(testDiv.lastChild), with selected range on testDiv.lastChild from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL testDiv.appendChild(testDiv.lastChild), with unselected range collapsed at (testDiv.lastChild, 1) assert_equals: Wrong start container expected Element node &lt;div id=&quot;test&quot;&gt;&lt;p id=&quot;a&quot;&gt;Äb̈c̈d̈ëf̈g̈ḧ
+&lt;/p&gt;&lt;p id=&quot;b&quot; s... but got Comment node &lt;!--Alphabet soup?--&gt;
+FAIL testDiv.appendChild(testDiv.lastChild), with selected range collapsed at (testDiv.lastChild, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL testDiv.appendChild(testDiv.lastChild), with unselected range on testDiv from testDiv.childNodes.length - 2 to testDiv.childNodes.length assert_equals: Wrong end offset expected 5 but got 6
+FAIL testDiv.appendChild(testDiv.lastChild), with selected range on testDiv from testDiv.childNodes.length - 2 to testDiv.childNodes.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ghijklmn&quot; but got object &quot;&quot;
+PASS testDiv.appendChild(testDiv.lastChild), with unselected range on testDiv from testDiv.childNodes.length - 2 to testDiv.childNodes.length - 1 
+FAIL testDiv.appendChild(testDiv.lastChild), with selected range on testDiv from testDiv.childNodes.length - 2 to testDiv.childNodes.length - 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ghijklmn&quot; but got object &quot;&quot;
+FAIL testDiv.appendChild(testDiv.lastChild), with unselected range on testDiv from testDiv.childNodes.length - 1 to testDiv.childNodes.length assert_equals: Wrong end offset expected 5 but got 6
+FAIL testDiv.appendChild(testDiv.lastChild), with selected range on testDiv from testDiv.childNodes.length - 1 to testDiv.childNodes.length assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS testDiv.appendChild(testDiv.lastChild), with unselected range collapsed at (testDiv, testDiv.childNodes.length - 1) 
+FAIL testDiv.appendChild(testDiv.lastChild), with selected range collapsed at (testDiv, testDiv.childNodes.length - 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL testDiv.appendChild(testDiv.lastChild), with unselected range collapsed at (testDiv, testDiv.childNodes.length) assert_equals: Wrong start offset expected 5 but got 6
+FAIL testDiv.appendChild(testDiv.lastChild), with selected range collapsed at (testDiv, testDiv.childNodes.length) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+FAIL detachedDiv.appendChild(detachedDiv.lastChild), with unselected range collapsed at (detachedDiv.lastChild, 0) assert_equals: Wrong start container expected Element node &lt;div&gt;&lt;p&gt;Opqrstuv&lt;/p&gt;&lt;p&gt;Wxyzabcd&lt;/p&gt;&lt;/div&gt; but got Element node &lt;p&gt;Wxyzabcd&lt;/p&gt;
+FAIL detachedDiv.appendChild(detachedDiv.lastChild), with selected range collapsed at (detachedDiv.lastChild, 0) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedDiv.appendChild(detachedDiv.lastChild), with unselected range on detachedDiv.lastChild from 0 to 1 assert_equals: Wrong start container expected Element node &lt;div&gt;&lt;p&gt;Opqrstuv&lt;/p&gt;&lt;p&gt;Wxyzabcd&lt;/p&gt;&lt;/div&gt; but got Element node &lt;p&gt;Wxyzabcd&lt;/p&gt;
+FAIL detachedDiv.appendChild(detachedDiv.lastChild), with selected range on detachedDiv.lastChild from 0 to 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedDiv.appendChild(detachedDiv.lastChild), with unselected range collapsed at (detachedDiv.lastChild, 1) assert_equals: Wrong start container expected Element node &lt;div&gt;&lt;p&gt;Opqrstuv&lt;/p&gt;&lt;p&gt;Wxyzabcd&lt;/p&gt;&lt;/div&gt; but got Element node &lt;p&gt;Wxyzabcd&lt;/p&gt;
+FAIL detachedDiv.appendChild(detachedDiv.lastChild), with selected range collapsed at (detachedDiv.lastChild, 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedDiv.appendChild(detachedDiv.lastChild), with unselected range on detachedDiv from detachedDiv.childNodes.length - 2 to detachedDiv.childNodes.length assert_equals: Wrong end offset expected 1 but got 2
+FAIL detachedDiv.appendChild(detachedDiv.lastChild), with selected range on detachedDiv from detachedDiv.childNodes.length - 2 to detachedDiv.childNodes.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedDiv.appendChild(detachedDiv.lastChild), with unselected range on detachedDiv from detachedDiv.childNodes.length - 2 to detachedDiv.childNodes.length - 1 
+FAIL detachedDiv.appendChild(detachedDiv.lastChild), with selected range on detachedDiv from detachedDiv.childNodes.length - 2 to detachedDiv.childNodes.length - 1 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedDiv.appendChild(detachedDiv.lastChild), with unselected range on detachedDiv from detachedDiv.childNodes.length - 1 to detachedDiv.childNodes.length assert_equals: Wrong end offset expected 1 but got 2
+FAIL detachedDiv.appendChild(detachedDiv.lastChild), with selected range on detachedDiv from detachedDiv.childNodes.length - 1 to detachedDiv.childNodes.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS detachedDiv.appendChild(detachedDiv.lastChild), with unselected range collapsed at (detachedDiv, detachedDiv.childNodes.length - 1) 
+FAIL detachedDiv.appendChild(detachedDiv.lastChild), with selected range collapsed at (detachedDiv, detachedDiv.childNodes.length - 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+FAIL detachedDiv.appendChild(detachedDiv.lastChild), with unselected range collapsed at (detachedDiv, detachedDiv.childNodes.length) assert_equals: Wrong start offset expected 1 but got 2
+FAIL detachedDiv.appendChild(detachedDiv.lastChild), with selected range collapsed at (detachedDiv, detachedDiv.childNodes.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS paras[0].appendChild(paras[1]), with unselected range collapsed at (paras[0], 0) 
+FAIL paras[0].appendChild(paras[1]), with selected range collapsed at (paras[0], 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].appendChild(paras[1]), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].appendChild(paras[1]), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].appendChild(paras[1]), with unselected range collapsed at (paras[0], 1) 
+FAIL paras[0].appendChild(paras[1]), with selected range collapsed at (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].appendChild(paras[1]), with unselected range on testDiv from 0 to 1 
+FAIL paras[0].appendChild(paras[1]), with selected range on testDiv from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+Ijklmnop
+&quot;
+PASS paras[0].appendChild(paras[1]), with unselected range on testDiv from 0 to 2 
+FAIL paras[0].appendChild(paras[1]), with selected range on testDiv from 0 to 2 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+Ijklmnop
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+Ijklmnop
+&quot;
+PASS paras[0].appendChild(paras[1]), with unselected range collapsed at (testDiv, 1) 
+FAIL paras[0].appendChild(paras[1]), with selected range collapsed at (testDiv, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].appendChild(paras[1]), with unselected range on testDiv from 1 to 2 
+FAIL paras[0].appendChild(paras[1]), with selected range on testDiv from 1 to 2 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ijklmnop
+&quot; but got object &quot;&quot;
+PASS foreignDoc.appendChild(detachedComment), with unselected range on foreignDoc from foreignDoc.childNodes.length - 1 to foreignDoc.childNodes.length 
+FAIL foreignDoc.appendChild(detachedComment), with selected range on foreignDoc from foreignDoc.childNodes.length - 1 to foreignDoc.childNodes.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignDoc.appendChild(detachedComment), with unselected range collapsed at (foreignDoc, foreignDoc.childNodes.length - 1) 
+FAIL foreignDoc.appendChild(detachedComment), with selected range collapsed at (foreignDoc, foreignDoc.childNodes.length - 1) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignDoc.appendChild(detachedComment), with unselected range collapsed at (foreignDoc, foreignDoc.childNodes.length) 
+FAIL foreignDoc.appendChild(detachedComment), with selected range collapsed at (foreignDoc, foreignDoc.childNodes.length) assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS foreignDoc.appendChild(detachedComment), with unselected range on detachedComment from 0 to 5 
+FAIL foreignDoc.appendChild(detachedComment), with selected range on detachedComment from 0 to 5 assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+PASS paras[0].appendChild(xmlTextNode), with unselected range collapsed at (paras[0], 0) 
+FAIL paras[0].appendChild(xmlTextNode), with selected range collapsed at (paras[0], 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].appendChild(xmlTextNode), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].appendChild(xmlTextNode), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].appendChild(xmlTextNode), with unselected range collapsed at (paras[0], 1) 
+FAIL paras[0].appendChild(xmlTextNode), with selected range collapsed at (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].appendChild(paras[0]), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].appendChild(paras[0]), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].appendChild(testDiv), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].appendChild(testDiv), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].appendChild(document), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].appendChild(document), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].appendChild(foreignDoc), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].appendChild(foreignDoc), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].appendChild(document.doctype), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].appendChild(document.doctype), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].parentNode.removeChild(paras[0]), with unselected range collapsed at (paras[0], 0) 
+FAIL paras[0].parentNode.removeChild(paras[0]), with selected range collapsed at (paras[0], 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].parentNode.removeChild(paras[0]), with unselected range on paras[0] from 0 to 1 
+FAIL paras[0].parentNode.removeChild(paras[0]), with selected range on paras[0] from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ&quot;
+PASS paras[0].parentNode.removeChild(paras[0]), with unselected range collapsed at (paras[0], 1) 
+FAIL paras[0].parentNode.removeChild(paras[0]), with selected range collapsed at (paras[0], 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].parentNode.removeChild(paras[0]), with unselected range collapsed at (testDiv, 0) 
+FAIL paras[0].parentNode.removeChild(paras[0]), with selected range collapsed at (testDiv, 0) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].parentNode.removeChild(paras[0]), with unselected range on testDiv from 0 to 1 
+FAIL paras[0].parentNode.removeChild(paras[0]), with selected range on testDiv from 0 to 1 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+Ijklmnop
+&quot;
+PASS paras[0].parentNode.removeChild(paras[0]), with unselected range collapsed at (testDiv, 1) 
+FAIL paras[0].parentNode.removeChild(paras[0]), with selected range collapsed at (testDiv, 1) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS paras[0].parentNode.removeChild(paras[0]), with unselected range on testDiv from 0 to 2 
+FAIL paras[0].parentNode.removeChild(paras[0]), with selected range on testDiv from 0 to 2 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+Ijklmnop
+&quot; but got object &quot;Äb̈c̈d̈ëf̈g̈ḧ
+Ijklmnop
+&quot;
+PASS paras[0].parentNode.removeChild(paras[0]), with unselected range on testDiv from 1 to 2 
+FAIL paras[0].parentNode.removeChild(paras[0]), with selected range on testDiv from 1 to 2 assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;Ijklmnop
+&quot; but got object &quot;&quot;
+PASS paras[0].parentNode.removeChild(paras[0]), with unselected range collapsed at (testDiv, 2) 
+FAIL paras[0].parentNode.removeChild(paras[0]), with selected range collapsed at (testDiv, 2) assert_equals: Sanity check: selection's range must initially be the same as the range we added expected object &quot;&quot; but got object &quot;&quot;
+PASS foreignDoc.documentElement.parentNode.removeChild(foreignDoc.documentElement), with unselected range on foreignDoc from 0 to foreignDoc.childNodes.length 
+FAIL foreignDoc.documentElement.parentNode.removeChild(foreignDoc.documentElement), with selected range on foreignDoc from 0 to foreignDoc.childNodes.length assert_equals: Sanity check: selection must have exactly one range after adding the range expected 1 but got 0
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangemutationshtmlfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangemutationshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-mutations.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-mutations.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-mutations.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-mutations.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,959 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Range mutation tests&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Aryeh Gregor&quot; href=ayg@aryeh.name&gt;
+&lt;meta name=timeout content=long&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;script src=../common.js&gt;&lt;/script&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+
+// These tests probably use too much abstraction and too little copy-paste.
+// Reader beware.
+//
+// TODO:
+//
+// * replaceWholeText() tests
+// * Lots and lots and lots more different types of ranges
+// * insertBefore() with DocumentFragments
+// * Fill out other insert/remove tests
+// * normalize() (https://www.w3.org/Bugs/Public/show_bug.cgi?id=13843)
+
+// Give a textual description of the range we're testing, for the test names.
+function describeRange(startContainer, startOffset, endContainer, endOffset) {
+  if (startContainer == endContainer &amp;&amp; startOffset == endOffset) {
+    return &quot;range collapsed at (&quot; + startContainer + &quot;, &quot; + startOffset + &quot;)&quot;;
+  } else if (startContainer == endContainer) {
+    return &quot;range on &quot; + startContainer + &quot; from &quot; + startOffset + &quot; to &quot; + endOffset;
+  } else {
+    return &quot;range from (&quot; + startContainer + &quot;, &quot; + startOffset + &quot;) to (&quot; + endContainer + &quot;, &quot; + endOffset + &quot;)&quot;;
+  }
+}
+
+// Lists of the various types of nodes we'll want to use.  We use strings that
+// we can later eval(), so that we can produce legible test names.
+var textNodes = [
+  &quot;paras[0].firstChild&quot;,
+  &quot;paras[1].firstChild&quot;,
+  &quot;foreignTextNode&quot;,
+  &quot;xmlTextNode&quot;,
+  &quot;detachedTextNode&quot;,
+  &quot;detachedForeignTextNode&quot;,
+  &quot;detachedXmlTextNode&quot;,
+];
+var commentNodes = [
+  &quot;comment&quot;,
+  &quot;foreignComment&quot;,
+  &quot;xmlComment&quot;,
+  &quot;detachedComment&quot;,
+  &quot;detachedForeignComment&quot;,
+  &quot;detachedXmlComment&quot;,
+];
+var characterDataNodes = textNodes.concat(commentNodes);
+
+// This function is slightly scary, but it works well enough, so . . .
+// sourceTests is an array of test data that will be altered in mysterious ways
+// before being passed off to doTest, descFn is something that takes an element
+// of sourceTests and produces the first part of a human-readable description
+// of the test, testFn is the function that doTest will call to do the actual
+// work and tell it what results to expect.
+function doTests(sourceTests, descFn, testFn) {
+  var tests = [];
+  for (var i = 0; i &lt; sourceTests.length; i++) {
+    var params = sourceTests[i];
+    var len = params.length;
+    tests.push([
+      descFn(params) + &quot;, with unselected &quot; + describeRange(params[len - 4], params[len - 3], params[len - 2], params[len - 1]),
+      // The closure here ensures that the params that testFn get are the
+      // current version of params, not the version from the last
+      // iteration of this loop.  We test that none of the parameters
+      // evaluate to undefined to catch bugs in our eval'ing, like
+      // mistyping a property name.
+      function(params) { return function() {
+        var evaledParams = params.map(eval);
+        for (var i = 0; i &lt; evaledParams.length; i++) {
+          assert_true(typeof evaledParams[i] != &quot;undefined&quot;,
+            &quot;Test bug: &quot; + params[i] + &quot; is undefined&quot;);
+        }
+        return testFn.apply(null, evaledParams);
+      } }(params),
+      false,
+      params[len - 4],
+      params[len - 3],
+      params[len - 2],
+      params[len - 1]
+    ]);
+    tests.push([
+      descFn(params) + &quot;, with selected &quot; + describeRange(params[len - 4], params[len - 3], params[len - 2], params[len - 1]),
+      function(params) { return function() {
+        var evaledParams = params.map(eval);
+        for (var i = 0; i &lt; evaledParams.length; i++) {
+          assert_true(typeof evaledParams[i] != &quot;undefined&quot;,
+            &quot;Test bug: &quot; + params[i] + &quot; is undefined&quot;);
+        }
+        return testFn.apply(null, evaledParams);
+      } }(params),
+      true,
+      params[len - 4],
+      params[len - 3],
+      params[len - 2],
+      params[len - 1]
+    ]);
+  }
+  generate_tests(doTest, tests);
+}
+
+// Set up the range, call the callback function to do the DOM modification and
+// tell us what to expect.  The callback function needs to return a
+// four-element array with the expected start/end containers/offsets, and
+// receives no arguments.  useSelection tells us whether the Range should be
+// added to a Selection and the Selection tested to ensure that the mutation
+// affects user selections as well as other ranges; every test is run with this
+// both false and true, because when it's set to true WebKit and Opera fail all
+// tests' sanity checks, which is unhelpful.  The last four parameters just
+// tell us what range to build.
+function doTest(callback, useSelection, startContainer, startOffset, endContainer, endOffset) {
+  // Recreate all the test nodes in case they were altered by the last test
+  // run.
+  setupRangeTests();
+  startContainer = eval(startContainer);
+  startOffset = eval(startOffset);
+  endContainer = eval(endContainer);
+  endOffset = eval(endOffset);
+
+  var ownerDoc = startContainer.nodeType == Node.DOCUMENT_NODE
+    ? startContainer
+    : startContainer.ownerDocument;
+  var range = ownerDoc.createRange();
+  range.setStart(startContainer, startOffset);
+  range.setEnd(endContainer, endOffset);
+
+  if (useSelection) {
+    getSelection().removeAllRanges();
+    getSelection().addRange(range);
+
+    assert_equals(getSelection().rangeCount, 1,
+      &quot;Sanity check: selection must have exactly one range after adding the range&quot;);
+    assert_equals(getSelection().getRangeAt(0), range,
+      &quot;Sanity check: selection's range must initially be the same as the range we added&quot;);
+    assert_equals(range.startContainer, startContainer,
+      &quot;Sanity check: range's startContainer must initially be the one we set&quot;);
+    assert_equals(range.endContainer, endContainer,
+      &quot;Sanity check: range's endContainer must initially be the one we set&quot;);
+    assert_equals(range.startOffset, startOffset,
+      &quot;Sanity check: range's startOffset must initially be the one we set&quot;);
+    assert_equals(range.endOffset, endOffset,
+      &quot;Sanity check: range's endOffset must initially be the one we set&quot;);
+  }
+
+  var expected = callback();
+
+  if (useSelection) {
+    assert_equals(getSelection().getRangeAt(0), range,
+      &quot;The range we added must not be removed from the selection&quot;);
+  }
+  assert_equals(range.startContainer, expected[0],
+    &quot;Wrong start container&quot;);
+  assert_equals(range.startOffset, expected[1],
+    &quot;Wrong start offset&quot;);
+  assert_equals(range.endContainer, expected[2],
+    &quot;Wrong end container&quot;);
+  assert_equals(range.endOffset, expected[3],
+    &quot;Wrong end offset&quot;);
+}
+
+
+// Now we get to the specific tests.
+
+function testSplitText(oldNode, offset, startContainer, startOffset, endContainer, endOffset) {
+  // Save these for later
+  var originalStartOffset = startOffset;
+  var originalEndOffset = endOffset;
+  var originalLength = oldNode.length;
+
+  var newNode;
+  try {
+    newNode = oldNode.splitText(offset);
+  } catch (e) {
+    // Should only happen if offset is negative
+    return [startContainer, startOffset, endContainer, endOffset];
+  }
+
+  // First we adjust for replacing data:
+  //
+  // &quot;Replace data with offset offset, count count, and data the empty
+  // string.&quot;
+  //
+  // That translates to offset = offset, count = originalLength - offset,
+  // data = &quot;&quot;.  node is oldNode.
+  //
+  // &quot;For every boundary point whose node is node, and whose offset is
+  // greater than offset but less than or equal to offset plus count, set its
+  // offset to offset.&quot;
+  if (startContainer == oldNode
+  &amp;&amp; startOffset &gt; offset
+  &amp;&amp; startOffset &lt;= originalLength) {
+    startOffset = offset;
+  }
+
+  if (endContainer == oldNode
+  &amp;&amp; endOffset &gt; offset
+  &amp;&amp; endOffset &lt;= originalLength) {
+    endOffset = offset;
+  }
+
+  // &quot;For every boundary point whose node is node, and whose offset is
+  // greater than offset plus count, add the length of data to its offset,
+  // then subtract count from it.&quot;
+  //
+  // Can't happen: offset plus count is originalLength.
+
+  // Now we insert a node, if oldNode's parent isn't null: &quot;For each boundary
+  // point whose node is the new parent of the affected node and whose offset
+  // is greater than the new index of the affected node, add one to the
+  // boundary point's offset.&quot;
+  if (startContainer == oldNode.parentNode
+  &amp;&amp; startOffset &gt; 1 + indexOf(oldNode)) {
+    startOffset++;
+  }
+
+  if (endContainer == oldNode.parentNode
+  &amp;&amp; endOffset &gt; 1 + indexOf(oldNode)) {
+    endOffset++;
+  }
+
+  // Finally, the splitText stuff itself:
+  //
+  // &quot;If parent is not null, run these substeps:
+  //
+  //   * &quot;For each range whose start node is node and start offset is greater
+  //   than offset, set its start node to new node and decrease its start
+  //   offset by offset.
+  //
+  //   * &quot;For each range whose end node is node and end offset is greater
+  //   than offset, set its end node to new node and decrease its end offset
+  //   by offset.
+  //
+  //   * &quot;For each range whose start node is parent and start offset is equal
+  //   to the index of node + 1, increase its start offset by one.
+  //
+  //   * &quot;For each range whose end node is parent and end offset is equal to
+  //   the index of node + 1, increase its end offset by one.&quot;
+  if (oldNode.parentNode) {
+    if (startContainer == oldNode &amp;&amp; originalStartOffset &gt; offset) {
+      startContainer = newNode;
+      startOffset = originalStartOffset - offset;
+    }
+
+    if (endContainer == oldNode &amp;&amp; originalEndOffset &gt; offset) {
+      endContainer = newNode;
+      endOffset = originalEndOffset - offset;
+    }
+
+    if (startContainer == oldNode.parentNode
+    &amp;&amp; startOffset == 1 + indexOf(oldNode)) {
+      startOffset++;
+    }
+
+    if (endContainer == oldNode.parentNode
+    &amp;&amp; endOffset == 1 + indexOf(oldNode)) {
+      endOffset++;
+    }
+  }
+
+  return [startContainer, startOffset, endContainer, endOffset];
+}
+
+// The offset argument is unsigned, so per WebIDL -1 should wrap to 4294967295,
+// which is probably longer than the length, so it should throw an exception.
+// This is no different from the other cases where the offset is longer than
+// the length, and the wrapping complicates my testing slightly, so I won't
+// bother testing negative values here or in other cases.
+var splitTextTests = [];
+for (var i = 0; i &lt; textNodes.length; i++) {
+  var node = textNodes[i];
+  splitTextTests.push([node, 376, node, 0, node, 1]);
+  splitTextTests.push([node, 0, node, 0, node, 0]);
+  splitTextTests.push([node, 1, node, 1, node, 1]);
+  splitTextTests.push([node, node + &quot;.length&quot;, node, node + &quot;.length&quot;, node, node + &quot;.length&quot;]);
+  splitTextTests.push([node, 1, node, 1, node, 3]);
+  splitTextTests.push([node, 2, node, 1, node, 3]);
+  splitTextTests.push([node, 3, node, 1, node, 3]);
+}
+
+splitTextTests.push(
+  [&quot;paras[0].firstChild&quot;, 1, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 0],
+  [&quot;paras[0].firstChild&quot;, 1, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 1, &quot;paras[0]&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 1, &quot;paras[0].firstChild&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 2, &quot;paras[0].firstChild&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 3, &quot;paras[0].firstChild&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 1, &quot;paras[0]&quot;, 0, &quot;paras[0].firstChild&quot;, 3],
+  [&quot;paras[0].firstChild&quot;, 2, &quot;paras[0]&quot;, 0, &quot;paras[0].firstChild&quot;, 3],
+  [&quot;paras[0].firstChild&quot;, 3, &quot;paras[0]&quot;, 0, &quot;paras[0].firstChild&quot;, 3]
+);
+
+
+function testReplaceDataAlgorithm(node, offset, count, data, callback, startContainer, startOffset, endContainer, endOffset) {
+  // Mutation works the same any time DOM Core's &quot;replace data&quot; algorithm is
+  // invoked.  node, offset, count, data are as in that algorithm.  The
+  // callback is what does the actual setting.  Not to be confused with
+  // testReplaceData, which tests the replaceData() method.
+
+  // Barring any provision to the contrary, the containers and offsets must
+  // not change.
+  var expectedStartContainer = startContainer;
+  var expectedStartOffset = startOffset;
+  var expectedEndContainer = endContainer;
+  var expectedEndOffset = endOffset;
+
+  var originalParent = node.parentNode;
+  var originalData = node.data;
+
+  var exceptionThrown = false;
+  try {
+    callback();
+  } catch (e) {
+    // Should only happen if offset is greater than length
+    exceptionThrown = true;
+  }
+
+  assert_equals(node.parentNode, originalParent,
+    &quot;Sanity check failed: changing data changed the parent&quot;);
+
+  // &quot;User agents must run the following steps whenever they replace data of
+  // a CharacterData node, as though they were written in the specification
+  // for that algorithm after all other steps. In particular, the steps must
+  // not be executed if the algorithm threw an exception.&quot;
+  if (exceptionThrown) {
+    assert_equals(node.data, originalData,
+      &quot;Sanity check failed: exception thrown but data changed&quot;);
+  } else {
+    assert_equals(node.data,
+      originalData.substr(0, offset) + data + originalData.substr(offset + count),
+      &quot;Sanity check failed: data not changed as expected&quot;);
+  }
+
+  // &quot;For every boundary point whose node is node, and whose offset is
+  // greater than offset but less than or equal to offset plus count, set
+  // its offset to offset.&quot;
+  if (!exceptionThrown
+  &amp;&amp; startContainer == node
+  &amp;&amp; startOffset &gt; offset
+  &amp;&amp; startOffset &lt;= offset + count) {
+    expectedStartOffset = offset;
+  }
+
+  if (!exceptionThrown
+  &amp;&amp; endContainer == node
+  &amp;&amp; endOffset &gt; offset
+  &amp;&amp; endOffset &lt;= offset + count) {
+    expectedEndOffset = offset;
+  }
+
+  // &quot;For every boundary point whose node is node, and whose offset is
+  // greater than offset plus count, add the length of data to its offset,
+  // then subtract count from it.&quot;
+  if (!exceptionThrown
+  &amp;&amp; startContainer == node
+  &amp;&amp; startOffset &gt; offset + count) {
+    expectedStartOffset += data.length - count;
+  }
+
+  if (!exceptionThrown
+  &amp;&amp; endContainer == node
+  &amp;&amp; endOffset &gt; offset + count) {
+    expectedEndOffset += data.length - count;
+  }
+
+  return [expectedStartContainer, expectedStartOffset, expectedEndContainer, expectedEndOffset];
+}
+
+function testInsertData(node, offset, data, startContainer, startOffset, endContainer, endOffset) {
+  return testReplaceDataAlgorithm(node, offset, 0, data,
+    function() { node.insertData(offset, data) },
+    startContainer, startOffset, endContainer, endOffset);
+}
+
+var insertDataTests = [];
+for (var i = 0; i &lt; characterDataNodes.length; i++) {
+  var node = characterDataNodes[i];
+  insertDataTests.push([node, 376, '&quot;foo&quot;', node, 0, node, 1]);
+  insertDataTests.push([node, 0, '&quot;foo&quot;', node, 0, node, 0]);
+  insertDataTests.push([node, 1, '&quot;foo&quot;', node, 1, node, 1]);
+  insertDataTests.push([node, node + &quot;.length&quot;, '&quot;foo&quot;', node, node + &quot;.length&quot;, node, node + &quot;.length&quot;]);
+  insertDataTests.push([node, 1, '&quot;foo&quot;', node, 1, node, 3]);
+  insertDataTests.push([node, 2, '&quot;foo&quot;', node, 1, node, 3]);
+  insertDataTests.push([node, 3, '&quot;foo&quot;', node, 1, node, 3]);
+
+  insertDataTests.push([node, 376, '&quot;&quot;', node, 0, node, 1]);
+  insertDataTests.push([node, 0, '&quot;&quot;', node, 0, node, 0]);
+  insertDataTests.push([node, 1, '&quot;&quot;', node, 1, node, 1]);
+  insertDataTests.push([node, node + &quot;.length&quot;, '&quot;&quot;', node, node + &quot;.length&quot;, node, node + &quot;.length&quot;]);
+  insertDataTests.push([node, 1, '&quot;&quot;', node, 1, node, 3]);
+  insertDataTests.push([node, 2, '&quot;&quot;', node, 1, node, 3]);
+  insertDataTests.push([node, 3, '&quot;&quot;', node, 1, node, 3]);
+}
+
+insertDataTests.push(
+  [&quot;paras[0].firstChild&quot;, 1, '&quot;foo&quot;', &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 0],
+  [&quot;paras[0].firstChild&quot;, 1, '&quot;foo&quot;', &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 1, '&quot;foo&quot;', &quot;paras[0]&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 1, '&quot;foo&quot;', &quot;paras[0].firstChild&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 2, '&quot;foo&quot;', &quot;paras[0].firstChild&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 3, '&quot;foo&quot;', &quot;paras[0].firstChild&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 1, '&quot;foo&quot;', &quot;paras[0]&quot;, 0, &quot;paras[0].firstChild&quot;, 3],
+  [&quot;paras[0].firstChild&quot;, 2, '&quot;foo&quot;', &quot;paras[0]&quot;, 0, &quot;paras[0].firstChild&quot;, 3],
+  [&quot;paras[0].firstChild&quot;, 3, '&quot;foo&quot;', &quot;paras[0]&quot;, 0, &quot;paras[0].firstChild&quot;, 3]
+);
+
+
+function testAppendData(node, data, startContainer, startOffset, endContainer, endOffset) {
+  return testReplaceDataAlgorithm(node, node.length, 0, data,
+    function() { node.appendData(data) },
+    startContainer, startOffset, endContainer, endOffset);
+}
+
+var appendDataTests = [];
+for (var i = 0; i &lt; characterDataNodes.length; i++) {
+  var node = characterDataNodes[i];
+  appendDataTests.push([node, '&quot;foo&quot;', node, 0, node, 1]);
+  appendDataTests.push([node, '&quot;foo&quot;', node, 0, node, 0]);
+  appendDataTests.push([node, '&quot;foo&quot;', node, 1, node, 1]);
+  appendDataTests.push([node, '&quot;foo&quot;', node, 0, node, node + &quot;.length&quot;]);
+  appendDataTests.push([node, '&quot;foo&quot;', node, 1, node, node + &quot;.length&quot;]);
+  appendDataTests.push([node, '&quot;foo&quot;', node, node + &quot;.length&quot;, node, node + &quot;.length&quot;]);
+  appendDataTests.push([node, '&quot;foo&quot;', node, 1, node, 3]);
+
+  appendDataTests.push([node, '&quot;&quot;', node, 0, node, 1]);
+  appendDataTests.push([node, '&quot;&quot;', node, 0, node, 0]);
+  appendDataTests.push([node, '&quot;&quot;', node, 1, node, 1]);
+  appendDataTests.push([node, '&quot;&quot;', node, 0, node, node + &quot;.length&quot;]);
+  appendDataTests.push([node, '&quot;&quot;', node, 1, node, node + &quot;.length&quot;]);
+  appendDataTests.push([node, '&quot;&quot;', node, node + &quot;.length&quot;, node, node + &quot;.length&quot;]);
+  appendDataTests.push([node, '&quot;&quot;', node, 1, node, 3]);
+}
+
+appendDataTests.push(
+  [&quot;paras[0].firstChild&quot;, '&quot;&quot;', &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 0],
+  [&quot;paras[0].firstChild&quot;, '&quot;&quot;', &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, '&quot;&quot;', &quot;paras[0]&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, '&quot;&quot;', &quot;paras[0].firstChild&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, '&quot;&quot;', &quot;paras[0]&quot;, 0, &quot;paras[0].firstChild&quot;, 3],
+
+  [&quot;paras[0].firstChild&quot;, '&quot;foo&quot;', &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 0],
+  [&quot;paras[0].firstChild&quot;, '&quot;foo&quot;', &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, '&quot;foo&quot;', &quot;paras[0]&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, '&quot;foo&quot;', &quot;paras[0].firstChild&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, '&quot;foo&quot;', &quot;paras[0]&quot;, 0, &quot;paras[0].firstChild&quot;, 3]
+);
+
+
+function testDeleteData(node, offset, count, startContainer, startOffset, endContainer, endOffset) {
+  return testReplaceDataAlgorithm(node, offset, count, &quot;&quot;,
+    function() { node.deleteData(offset, count) },
+    startContainer, startOffset, endContainer, endOffset);
+}
+
+var deleteDataTests = [];
+for (var i = 0; i &lt; characterDataNodes.length; i++) {
+  var node = characterDataNodes[i];
+  deleteDataTests.push([node, 376, 2, node, 0, node, 1]);
+  deleteDataTests.push([node, 0, 2, node, 0, node, 0]);
+  deleteDataTests.push([node, 1, 2, node, 1, node, 1]);
+  deleteDataTests.push([node, node + &quot;.length&quot;, 2, node, node + &quot;.length&quot;, node, node + &quot;.length&quot;]);
+  deleteDataTests.push([node, 1, 2, node, 1, node, 3]);
+  deleteDataTests.push([node, 2, 2, node, 1, node, 3]);
+  deleteDataTests.push([node, 3, 2, node, 1, node, 3]);
+
+  deleteDataTests.push([node, 376, 0, node, 0, node, 1]);
+  deleteDataTests.push([node, 0, 0, node, 0, node, 0]);
+  deleteDataTests.push([node, 1, 0, node, 1, node, 1]);
+  deleteDataTests.push([node, node + &quot;.length&quot;, 0, node, node + &quot;.length&quot;, node, node + &quot;.length&quot;]);
+  deleteDataTests.push([node, 1, 0, node, 1, node, 3]);
+  deleteDataTests.push([node, 2, 0, node, 1, node, 3]);
+  deleteDataTests.push([node, 3, 0, node, 1, node, 3]);
+
+  deleteDataTests.push([node, 376, 631, node, 0, node, 1]);
+  deleteDataTests.push([node, 0, 631, node, 0, node, 0]);
+  deleteDataTests.push([node, 1, 631, node, 1, node, 1]);
+  deleteDataTests.push([node, node + &quot;.length&quot;, 631, node, node + &quot;.length&quot;, node, node + &quot;.length&quot;]);
+  deleteDataTests.push([node, 1, 631, node, 1, node, 3]);
+  deleteDataTests.push([node, 2, 631, node, 1, node, 3]);
+  deleteDataTests.push([node, 3, 631, node, 1, node, 3]);
+}
+
+deleteDataTests.push(
+  [&quot;paras[0].firstChild&quot;, 1, 2, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 0],
+  [&quot;paras[0].firstChild&quot;, 1, 2, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 1, 2, &quot;paras[0]&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 1, 2, &quot;paras[0].firstChild&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 2, 2, &quot;paras[0].firstChild&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 3, 2, &quot;paras[0].firstChild&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 1, 2, &quot;paras[0]&quot;, 0, &quot;paras[0].firstChild&quot;, 3],
+  [&quot;paras[0].firstChild&quot;, 2, 2, &quot;paras[0]&quot;, 0, &quot;paras[0].firstChild&quot;, 3],
+  [&quot;paras[0].firstChild&quot;, 3, 2, &quot;paras[0]&quot;, 0, &quot;paras[0].firstChild&quot;, 3]
+);
+
+
+function testReplaceData(node, offset, count, data, startContainer, startOffset, endContainer, endOffset) {
+  return testReplaceDataAlgorithm(node, offset, count, data,
+    function() { node.replaceData(offset, count, data) },
+    startContainer, startOffset, endContainer, endOffset);
+}
+
+var replaceDataTests = [];
+for (var i = 0; i &lt; characterDataNodes.length; i++) {
+  var node = characterDataNodes[i];
+  replaceDataTests.push([node, 376, 0, '&quot;foo&quot;', node, 0, node, 1]);
+  replaceDataTests.push([node, 0, 0, '&quot;foo&quot;', node, 0, node, 0]);
+  replaceDataTests.push([node, 1, 0, '&quot;foo&quot;', node, 1, node, 1]);
+  replaceDataTests.push([node, node + &quot;.length&quot;, 0, '&quot;foo&quot;', node, node + &quot;.length&quot;, node, node + &quot;.length&quot;]);
+  replaceDataTests.push([node, 1, 0, '&quot;foo&quot;', node, 1, node, 3]);
+  replaceDataTests.push([node, 2, 0, '&quot;foo&quot;', node, 1, node, 3]);
+  replaceDataTests.push([node, 3, 0, '&quot;foo&quot;', node, 1, node, 3]);
+
+  replaceDataTests.push([node, 376, 0, '&quot;&quot;', node, 0, node, 1]);
+  replaceDataTests.push([node, 0, 0, '&quot;&quot;', node, 0, node, 0]);
+  replaceDataTests.push([node, 1, 0, '&quot;&quot;', node, 1, node, 1]);
+  replaceDataTests.push([node, node + &quot;.length&quot;, 0, '&quot;&quot;', node, node + &quot;.length&quot;, node, node + &quot;.length&quot;]);
+  replaceDataTests.push([node, 1, 0, '&quot;&quot;', node, 1, node, 3]);
+  replaceDataTests.push([node, 2, 0, '&quot;&quot;', node, 1, node, 3]);
+  replaceDataTests.push([node, 3, 0, '&quot;&quot;', node, 1, node, 3]);
+
+  replaceDataTests.push([node, 376, 1, '&quot;foo&quot;', node, 0, node, 1]);
+  replaceDataTests.push([node, 0, 1, '&quot;foo&quot;', node, 0, node, 0]);
+  replaceDataTests.push([node, 1, 1, '&quot;foo&quot;', node, 1, node, 1]);
+  replaceDataTests.push([node, node + &quot;.length&quot;, 1, '&quot;foo&quot;', node, node + &quot;.length&quot;, node, node + &quot;.length&quot;]);
+  replaceDataTests.push([node, 1, 1, '&quot;foo&quot;', node, 1, node, 3]);
+  replaceDataTests.push([node, 2, 1, '&quot;foo&quot;', node, 1, node, 3]);
+  replaceDataTests.push([node, 3, 1, '&quot;foo&quot;', node, 1, node, 3]);
+
+  replaceDataTests.push([node, 376, 1, '&quot;&quot;', node, 0, node, 1]);
+  replaceDataTests.push([node, 0, 1, '&quot;&quot;', node, 0, node, 0]);
+  replaceDataTests.push([node, 1, 1, '&quot;&quot;', node, 1, node, 1]);
+  replaceDataTests.push([node, node + &quot;.length&quot;, 1, '&quot;&quot;', node, node + &quot;.length&quot;, node, node + &quot;.length&quot;]);
+  replaceDataTests.push([node, 1, 1, '&quot;&quot;', node, 1, node, 3]);
+  replaceDataTests.push([node, 2, 1, '&quot;&quot;', node, 1, node, 3]);
+  replaceDataTests.push([node, 3, 1, '&quot;&quot;', node, 1, node, 3]);
+
+  replaceDataTests.push([node, 376, 47, '&quot;foo&quot;', node, 0, node, 1]);
+  replaceDataTests.push([node, 0, 47, '&quot;foo&quot;', node, 0, node, 0]);
+  replaceDataTests.push([node, 1, 47, '&quot;foo&quot;', node, 1, node, 1]);
+  replaceDataTests.push([node, node + &quot;.length&quot;, 47, '&quot;foo&quot;', node, node + &quot;.length&quot;, node, node + &quot;.length&quot;]);
+  replaceDataTests.push([node, 1, 47, '&quot;foo&quot;', node, 1, node, 3]);
+  replaceDataTests.push([node, 2, 47, '&quot;foo&quot;', node, 1, node, 3]);
+  replaceDataTests.push([node, 3, 47, '&quot;foo&quot;', node, 1, node, 3]);
+
+  replaceDataTests.push([node, 376, 47, '&quot;&quot;', node, 0, node, 1]);
+  replaceDataTests.push([node, 0, 47, '&quot;&quot;', node, 0, node, 0]);
+  replaceDataTests.push([node, 1, 47, '&quot;&quot;', node, 1, node, 1]);
+  replaceDataTests.push([node, node + &quot;.length&quot;, 47, '&quot;&quot;', node, node + &quot;.length&quot;, node, node + &quot;.length&quot;]);
+  replaceDataTests.push([node, 1, 47, '&quot;&quot;', node, 1, node, 3]);
+  replaceDataTests.push([node, 2, 47, '&quot;&quot;', node, 1, node, 3]);
+  replaceDataTests.push([node, 3, 47, '&quot;&quot;', node, 1, node, 3]);
+}
+
+replaceDataTests.push(
+  [&quot;paras[0].firstChild&quot;, 1, 0, '&quot;foo&quot;', &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 0],
+  [&quot;paras[0].firstChild&quot;, 1, 0, '&quot;foo&quot;', &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 1, 0, '&quot;foo&quot;', &quot;paras[0]&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 1, 0, '&quot;foo&quot;', &quot;paras[0].firstChild&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 2, 0, '&quot;foo&quot;', &quot;paras[0].firstChild&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 3, 0, '&quot;foo&quot;', &quot;paras[0].firstChild&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 1, 0, '&quot;foo&quot;', &quot;paras[0]&quot;, 0, &quot;paras[0].firstChild&quot;, 3],
+  [&quot;paras[0].firstChild&quot;, 2, 0, '&quot;foo&quot;', &quot;paras[0]&quot;, 0, &quot;paras[0].firstChild&quot;, 3],
+  [&quot;paras[0].firstChild&quot;, 3, 0, '&quot;foo&quot;', &quot;paras[0]&quot;, 0, &quot;paras[0].firstChild&quot;, 3],
+
+  [&quot;paras[0].firstChild&quot;, 1, 1, '&quot;foo&quot;', &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 0],
+  [&quot;paras[0].firstChild&quot;, 1, 1, '&quot;foo&quot;', &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 1, 1, '&quot;foo&quot;', &quot;paras[0]&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 1, 1, '&quot;foo&quot;', &quot;paras[0].firstChild&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 2, 1, '&quot;foo&quot;', &quot;paras[0].firstChild&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 3, 1, '&quot;foo&quot;', &quot;paras[0].firstChild&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 1, 1, '&quot;foo&quot;', &quot;paras[0]&quot;, 0, &quot;paras[0].firstChild&quot;, 3],
+  [&quot;paras[0].firstChild&quot;, 2, 1, '&quot;foo&quot;', &quot;paras[0]&quot;, 0, &quot;paras[0].firstChild&quot;, 3],
+  [&quot;paras[0].firstChild&quot;, 3, 1, '&quot;foo&quot;', &quot;paras[0]&quot;, 0, &quot;paras[0].firstChild&quot;, 3],
+
+  [&quot;paras[0].firstChild&quot;, 1, 47, '&quot;foo&quot;', &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 0],
+  [&quot;paras[0].firstChild&quot;, 1, 47, '&quot;foo&quot;', &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 1, 47, '&quot;foo&quot;', &quot;paras[0]&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 1, 47, '&quot;foo&quot;', &quot;paras[0].firstChild&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 2, 47, '&quot;foo&quot;', &quot;paras[0].firstChild&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 3, 47, '&quot;foo&quot;', &quot;paras[0].firstChild&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0].firstChild&quot;, 1, 47, '&quot;foo&quot;', &quot;paras[0]&quot;, 0, &quot;paras[0].firstChild&quot;, 3],
+  [&quot;paras[0].firstChild&quot;, 2, 47, '&quot;foo&quot;', &quot;paras[0]&quot;, 0, &quot;paras[0].firstChild&quot;, 3],
+  [&quot;paras[0].firstChild&quot;, 3, 47, '&quot;foo&quot;', &quot;paras[0]&quot;, 0, &quot;paras[0].firstChild&quot;, 3]
+);
+
+
+// There are lots of ways to set data, so we pass a callback that does the
+// actual setting.
+function testDataChange(node, attr, op, rval, startContainer, startOffset, endContainer, endOffset) {
+  return testReplaceDataAlgorithm(node, 0, node.length, op == &quot;=&quot; ? rval : node[attr] + rval,
+    function() {
+      if (op == &quot;=&quot;) {
+        node[attr] = rval;
+      } else if (op == &quot;+=&quot;) {
+        node[attr] += rval;
+      } else {
+        throw &quot;Unknown op &quot; + op;
+      }
+    },
+    startContainer, startOffset, endContainer, endOffset);
+}
+
+var dataChangeTests = [];
+var dataChangeTestAttrs = [&quot;data&quot;, &quot;textContent&quot;, &quot;nodeValue&quot;];
+for (var i = 0; i &lt; characterDataNodes.length; i++) {
+  var node = characterDataNodes[i];
+  var dataChangeTestRanges = [
+    [node, 0, node, 0],
+    [node, 0, node, 1],
+    [node, 1, node, 1],
+    [node, 0, node, node + &quot;.length&quot;],
+    [node, 1, node, node + &quot;.length&quot;],
+    [node, node + &quot;.length&quot;, node, node + &quot;.length&quot;],
+  ];
+
+  for (var j = 0; j &lt; dataChangeTestRanges.length; j++) {
+    for (var k = 0; k &lt; dataChangeTestAttrs.length; k++) {
+      dataChangeTests.push([
+        node,
+        '&quot;' + dataChangeTestAttrs[k] + '&quot;',
+        '&quot;=&quot;',
+        '&quot;&quot;',
+      ].concat(dataChangeTestRanges[j]));
+
+      dataChangeTests.push([
+        node,
+        '&quot;' + dataChangeTestAttrs[k] + '&quot;',
+        '&quot;=&quot;',
+        '&quot;foo&quot;',
+      ].concat(dataChangeTestRanges[j]));
+
+      dataChangeTests.push([
+        node,
+        '&quot;' + dataChangeTestAttrs[k] + '&quot;',
+        '&quot;=&quot;',
+        node + &quot;.&quot; + dataChangeTestAttrs[k],
+      ].concat(dataChangeTestRanges[j]));
+
+      dataChangeTests.push([
+        node,
+        '&quot;' + dataChangeTestAttrs[k] + '&quot;',
+        '&quot;+=&quot;',
+        '&quot;&quot;',
+      ].concat(dataChangeTestRanges[j]));
+
+      dataChangeTests.push([
+        node,
+        '&quot;' + dataChangeTestAttrs[k] + '&quot;',
+        '&quot;+=&quot;',
+        '&quot;foo&quot;',
+      ].concat(dataChangeTestRanges[j]));
+
+      dataChangeTests.push([
+        node,
+        '&quot;' + dataChangeTestAttrs[k] + '&quot;',
+        '&quot;+=&quot;',
+        node + &quot;.&quot; + dataChangeTestAttrs[k]
+      ].concat(dataChangeTestRanges[j]));
+    }
+  }
+}
+
+
+// Now we test node insertions and deletions, as opposed to just data changes.
+// To avoid loads of repetition, we define modifyForRemove() and
+// modifyForInsert().
+
+// If we were to remove removedNode from its parent, what would the boundary
+// point [node, offset] become?  Returns [new node, new offset].  Must be
+// called BEFORE the node is actually removed, so its parent is not null.  (If
+// the parent is null, it will do nothing.)
+function modifyForRemove(removedNode, point) {
+  var oldParent = removedNode.parentNode;
+  var oldIndex = indexOf(removedNode);
+  if (!oldParent) {
+    return point;
+  }
+
+  // &quot;For each boundary point whose node is removed node or a descendant of
+  // it, set the boundary point to (old parent, old index).&quot;
+  if (point[0] == removedNode || isDescendant(point[0], removedNode)) {
+    return [oldParent, oldIndex];
+  }
+
+  // &quot;For each boundary point whose node is old parent and whose offset is
+  // greater than old index, subtract one from its offset.&quot;
+  if (point[0] == oldParent &amp;&amp; point[1] &gt; oldIndex) {
+    return [point[0], point[1] - 1];
+  }
+
+  return point;
+}
+
+// Update the given boundary point [node, offset] to account for the fact that
+// insertedNode was just inserted into its current position.  This must be
+// called AFTER insertedNode was already inserted.
+function modifyForInsert(insertedNode, point) {
+  // &quot;For each boundary point whose node is the new parent of the affected
+  // node and whose offset is greater than the new index of the affected
+  // node, add one to the boundary point's offset.&quot;
+  if (point[0] == insertedNode.parentNode &amp;&amp; point[1] &gt; indexOf(insertedNode)) {
+    return [point[0], point[1] + 1];
+  }
+
+  return point;
+}
+
+
+function testInsertBefore(newParent, affectedNode, refNode, startContainer, startOffset, endContainer, endOffset) {
+  var expectedStart = [startContainer, startOffset];
+  var expectedEnd = [endContainer, endOffset];
+
+  expectedStart = modifyForRemove(affectedNode, expectedStart);
+  expectedEnd = modifyForRemove(affectedNode, expectedEnd);
+
+  try {
+    newParent.insertBefore(affectedNode, refNode);
+  } catch (e) {
+    // For our purposes, assume that DOM Core is true -- i.e., ignore
+    // mutation events and similar.
+    return [startContainer, startOffset, endContainer, endOffset];
+  }
+
+  expectedStart = modifyForInsert(affectedNode, expectedStart);
+  expectedEnd = modifyForInsert(affectedNode, expectedEnd);
+
+  return expectedStart.concat(expectedEnd);
+}
+
+var insertBeforeTests = [
+  // Moving a node to its current position
+  [&quot;testDiv&quot;, &quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 0],
+  [&quot;testDiv&quot;, &quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;testDiv&quot;, &quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;paras[0]&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;testDiv&quot;, &quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;testDiv&quot;, 0, &quot;testDiv&quot;, 2],
+  [&quot;testDiv&quot;, &quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;testDiv&quot;, 1, &quot;testDiv&quot;, 1],
+  [&quot;testDiv&quot;, &quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;testDiv&quot;, 1, &quot;testDiv&quot;, 2],
+  [&quot;testDiv&quot;, &quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;testDiv&quot;, 2, &quot;testDiv&quot;, 2],
+
+  // Stuff that actually moves something.  Note that paras[0] and paras[1]
+  // are both children of testDiv.
+  [&quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;paras[0].firstChild&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 0],
+  [&quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;paras[0].firstChild&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;paras[0].firstChild&quot;, &quot;paras[0]&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;paras[0].firstChild&quot;, &quot;testDiv&quot;, 0, &quot;testDiv&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;paras[0].firstChild&quot;, &quot;testDiv&quot;, 0, &quot;testDiv&quot;, 2],
+  [&quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;paras[0].firstChild&quot;, &quot;testDiv&quot;, 1, &quot;testDiv&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;paras[0].firstChild&quot;, &quot;testDiv&quot;, 1, &quot;testDiv&quot;, 2],
+  [&quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;null&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 0],
+  [&quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;null&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;null&quot;, &quot;paras[0]&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;null&quot;, &quot;testDiv&quot;, 0, &quot;testDiv&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;null&quot;, &quot;testDiv&quot;, 0, &quot;testDiv&quot;, 2],
+  [&quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;null&quot;, &quot;testDiv&quot;, 1, &quot;testDiv&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;null&quot;, &quot;testDiv&quot;, 1, &quot;testDiv&quot;, 2],
+  [&quot;foreignDoc&quot;, &quot;detachedComment&quot;, &quot;foreignDoc.documentElement&quot;, &quot;foreignDoc&quot;, 0, &quot;foreignDoc&quot;, 0],
+  [&quot;foreignDoc&quot;, &quot;detachedComment&quot;, &quot;foreignDoc.documentElement&quot;, &quot;foreignDoc&quot;, 0, &quot;foreignDoc&quot;, 1],
+  [&quot;foreignDoc&quot;, &quot;detachedComment&quot;, &quot;foreignDoc.documentElement&quot;, &quot;foreignDoc&quot;, 0, &quot;foreignDoc&quot;, 2],
+  [&quot;foreignDoc&quot;, &quot;detachedComment&quot;, &quot;foreignDoc.documentElement&quot;, &quot;foreignDoc&quot;, 1, &quot;foreignDoc&quot;, 1],
+  [&quot;foreignDoc&quot;, &quot;detachedComment&quot;, &quot;foreignDoc.doctype&quot;, &quot;foreignDoc&quot;, 0, &quot;foreignDoc&quot;, 0],
+  [&quot;foreignDoc&quot;, &quot;detachedComment&quot;, &quot;foreignDoc.doctype&quot;, &quot;foreignDoc&quot;, 0, &quot;foreignDoc&quot;, 1],
+  [&quot;foreignDoc&quot;, &quot;detachedComment&quot;, &quot;foreignDoc.doctype&quot;, &quot;foreignDoc&quot;, 0, &quot;foreignDoc&quot;, 2],
+  [&quot;foreignDoc&quot;, &quot;detachedComment&quot;, &quot;foreignDoc.doctype&quot;, &quot;foreignDoc&quot;, 1, &quot;foreignDoc&quot;, 1],
+  [&quot;foreignDoc&quot;, &quot;detachedComment&quot;, &quot;null&quot;, &quot;foreignDoc&quot;, 0, &quot;foreignDoc&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;xmlTextNode&quot;, &quot;paras[0].firstChild&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 0],
+  [&quot;paras[0]&quot;, &quot;xmlTextNode&quot;, &quot;paras[0].firstChild&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;xmlTextNode&quot;, &quot;paras[0].firstChild&quot;, &quot;paras[0]&quot;, 1, &quot;paras[0]&quot;, 1],
+
+  // Stuff that throws exceptions
+  [&quot;paras[0]&quot;, &quot;paras[0]&quot;, &quot;paras[0].firstChild&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;testDiv&quot;, &quot;paras[0].firstChild&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;document&quot;, &quot;paras[0].firstChild&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;foreignDoc&quot;, &quot;paras[0].firstChild&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;document.doctype&quot;, &quot;paras[0].firstChild&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+];
+
+
+function testReplaceChild(newParent, newChild, oldChild, startContainer, startOffset, endContainer, endOffset) {
+  var expectedStart = [startContainer, startOffset];
+  var expectedEnd = [endContainer, endOffset];
+
+  expectedStart = modifyForRemove(oldChild, expectedStart);
+  expectedEnd = modifyForRemove(oldChild, expectedEnd);
+
+  if (newChild != oldChild) {
+    // Don't do this twice, if they're the same!
+    expectedStart = modifyForRemove(newChild, expectedStart);
+    expectedEnd = modifyForRemove(newChild, expectedEnd);
+  }
+
+  try {
+    newParent.replaceChild(newChild, oldChild);
+  } catch (e) {
+    return [startContainer, startOffset, endContainer, endOffset];
+  }
+
+  expectedStart = modifyForInsert(newChild, expectedStart);
+  expectedEnd = modifyForInsert(newChild, expectedEnd);
+
+  return expectedStart.concat(expectedEnd);
+}
+
+var replaceChildTests = [
+  // Moving a node to its current position.  Doesn't match most browsers'
+  // behavior, but we probably want to keep the spec the same anyway:
+  // https://bugzilla.mozilla.org/show_bug.cgi?id=647603
+  [&quot;testDiv&quot;, &quot;paras[0]&quot;, &quot;paras[0]&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 0],
+  [&quot;testDiv&quot;, &quot;paras[0]&quot;, &quot;paras[0]&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;testDiv&quot;, &quot;paras[0]&quot;, &quot;paras[0]&quot;, &quot;paras[0]&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;testDiv&quot;, &quot;paras[0]&quot;, &quot;paras[0]&quot;, &quot;testDiv&quot;, 0, &quot;testDiv&quot;, 2],
+  [&quot;testDiv&quot;, &quot;paras[0]&quot;, &quot;paras[0]&quot;, &quot;testDiv&quot;, 1, &quot;testDiv&quot;, 1],
+  [&quot;testDiv&quot;, &quot;paras[0]&quot;, &quot;paras[0]&quot;, &quot;testDiv&quot;, 1, &quot;testDiv&quot;, 2],
+  [&quot;testDiv&quot;, &quot;paras[0]&quot;, &quot;paras[0]&quot;, &quot;testDiv&quot;, 2, &quot;testDiv&quot;, 2],
+
+  // Stuff that actually moves something.
+  [&quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;paras[0].firstChild&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 0],
+  [&quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;paras[0].firstChild&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;paras[0].firstChild&quot;, &quot;paras[0]&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;paras[0].firstChild&quot;, &quot;testDiv&quot;, 0, &quot;testDiv&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;paras[0].firstChild&quot;, &quot;testDiv&quot;, 0, &quot;testDiv&quot;, 2],
+  [&quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;paras[0].firstChild&quot;, &quot;testDiv&quot;, 1, &quot;testDiv&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;paras[0].firstChild&quot;, &quot;testDiv&quot;, 1, &quot;testDiv&quot;, 2],
+  [&quot;foreignDoc&quot;, &quot;detachedComment&quot;, &quot;foreignDoc.documentElement&quot;, &quot;foreignDoc&quot;, 0, &quot;foreignDoc&quot;, 0],
+  [&quot;foreignDoc&quot;, &quot;detachedComment&quot;, &quot;foreignDoc.documentElement&quot;, &quot;foreignDoc&quot;, 0, &quot;foreignDoc&quot;, 1],
+  [&quot;foreignDoc&quot;, &quot;detachedComment&quot;, &quot;foreignDoc.documentElement&quot;, &quot;foreignDoc&quot;, 0, &quot;foreignDoc&quot;, 2],
+  [&quot;foreignDoc&quot;, &quot;detachedComment&quot;, &quot;foreignDoc.documentElement&quot;, &quot;foreignDoc&quot;, 1, &quot;foreignDoc&quot;, 1],
+  [&quot;foreignDoc&quot;, &quot;detachedComment&quot;, &quot;foreignDoc.doctype&quot;, &quot;foreignDoc&quot;, 0, &quot;foreignDoc&quot;, 0],
+  [&quot;foreignDoc&quot;, &quot;detachedComment&quot;, &quot;foreignDoc.doctype&quot;, &quot;foreignDoc&quot;, 0, &quot;foreignDoc&quot;, 1],
+  [&quot;foreignDoc&quot;, &quot;detachedComment&quot;, &quot;foreignDoc.doctype&quot;, &quot;foreignDoc&quot;, 0, &quot;foreignDoc&quot;, 2],
+  [&quot;foreignDoc&quot;, &quot;detachedComment&quot;, &quot;foreignDoc.doctype&quot;, &quot;foreignDoc&quot;, 1, &quot;foreignDoc&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;xmlTextNode&quot;, &quot;paras[0].firstChild&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 0],
+  [&quot;paras[0]&quot;, &quot;xmlTextNode&quot;, &quot;paras[0].firstChild&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;xmlTextNode&quot;, &quot;paras[0].firstChild&quot;, &quot;paras[0]&quot;, 1, &quot;paras[0]&quot;, 1],
+
+  // Stuff that throws exceptions
+  [&quot;paras[0]&quot;, &quot;paras[0]&quot;, &quot;paras[0].firstChild&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;testDiv&quot;, &quot;paras[0].firstChild&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;document&quot;, &quot;paras[0].firstChild&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;foreignDoc&quot;, &quot;paras[0].firstChild&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;document.doctype&quot;, &quot;paras[0].firstChild&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+];
+
+
+function testAppendChild(newParent, affectedNode, startContainer, startOffset, endContainer, endOffset) {
+  var expectedStart = [startContainer, startOffset];
+  var expectedEnd = [endContainer, endOffset];
+
+  expectedStart = modifyForRemove(affectedNode, expectedStart);
+  expectedEnd = modifyForRemove(affectedNode, expectedEnd);
+
+  try {
+    newParent.appendChild(affectedNode);
+  } catch (e) {
+    return [startContainer, startOffset, endContainer, endOffset];
+  }
+
+  // These two lines will actually never do anything, if you think about it,
+  // but let's leave them in so correctness is more obvious.
+  expectedStart = modifyForInsert(affectedNode, expectedStart);
+  expectedEnd = modifyForInsert(affectedNode, expectedEnd);
+
+  return expectedStart.concat(expectedEnd);
+}
+
+var appendChildTests = [
+  // Moving a node to its current position
+  [&quot;testDiv&quot;, &quot;testDiv.lastChild&quot;, &quot;testDiv.lastChild&quot;, 0, &quot;testDiv.lastChild&quot;, 0],
+  [&quot;testDiv&quot;, &quot;testDiv.lastChild&quot;, &quot;testDiv.lastChild&quot;, 0, &quot;testDiv.lastChild&quot;, 1],
+  [&quot;testDiv&quot;, &quot;testDiv.lastChild&quot;, &quot;testDiv.lastChild&quot;, 1, &quot;testDiv.lastChild&quot;, 1],
+  [&quot;testDiv&quot;, &quot;testDiv.lastChild&quot;, &quot;testDiv&quot;, &quot;testDiv.childNodes.length - 2&quot;, &quot;testDiv&quot;, &quot;testDiv.childNodes.length&quot;],
+  [&quot;testDiv&quot;, &quot;testDiv.lastChild&quot;, &quot;testDiv&quot;, &quot;testDiv.childNodes.length - 2&quot;, &quot;testDiv&quot;, &quot;testDiv.childNodes.length - 1&quot;],
+  [&quot;testDiv&quot;, &quot;testDiv.lastChild&quot;, &quot;testDiv&quot;, &quot;testDiv.childNodes.length - 1&quot;, &quot;testDiv&quot;, &quot;testDiv.childNodes.length&quot;],
+  [&quot;testDiv&quot;, &quot;testDiv.lastChild&quot;, &quot;testDiv&quot;, &quot;testDiv.childNodes.length - 1&quot;, &quot;testDiv&quot;, &quot;testDiv.childNodes.length - 1&quot;],
+  [&quot;testDiv&quot;, &quot;testDiv.lastChild&quot;, &quot;testDiv&quot;, &quot;testDiv.childNodes.length&quot;, &quot;testDiv&quot;, &quot;testDiv.childNodes.length&quot;],
+  [&quot;detachedDiv&quot;, &quot;detachedDiv.lastChild&quot;, &quot;detachedDiv.lastChild&quot;, 0, &quot;detachedDiv.lastChild&quot;, 0],
+  [&quot;detachedDiv&quot;, &quot;detachedDiv.lastChild&quot;, &quot;detachedDiv.lastChild&quot;, 0, &quot;detachedDiv.lastChild&quot;, 1],
+  [&quot;detachedDiv&quot;, &quot;detachedDiv.lastChild&quot;, &quot;detachedDiv.lastChild&quot;, 1, &quot;detachedDiv.lastChild&quot;, 1],
+  [&quot;detachedDiv&quot;, &quot;detachedDiv.lastChild&quot;, &quot;detachedDiv&quot;, &quot;detachedDiv.childNodes.length - 2&quot;, &quot;detachedDiv&quot;, &quot;detachedDiv.childNodes.length&quot;],
+  [&quot;detachedDiv&quot;, &quot;detachedDiv.lastChild&quot;, &quot;detachedDiv&quot;, &quot;detachedDiv.childNodes.length - 2&quot;, &quot;detachedDiv&quot;, &quot;detachedDiv.childNodes.length - 1&quot;],
+  [&quot;detachedDiv&quot;, &quot;detachedDiv.lastChild&quot;, &quot;detachedDiv&quot;, &quot;detachedDiv.childNodes.length - 1&quot;, &quot;detachedDiv&quot;, &quot;detachedDiv.childNodes.length&quot;],
+  [&quot;detachedDiv&quot;, &quot;detachedDiv.lastChild&quot;, &quot;detachedDiv&quot;, &quot;detachedDiv.childNodes.length - 1&quot;, &quot;detachedDiv&quot;, &quot;detachedDiv.childNodes.length - 1&quot;],
+  [&quot;detachedDiv&quot;, &quot;detachedDiv.lastChild&quot;, &quot;detachedDiv&quot;, &quot;detachedDiv.childNodes.length&quot;, &quot;detachedDiv&quot;, &quot;detachedDiv.childNodes.length&quot;],
+
+  // Stuff that actually moves something
+  [&quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 0],
+  [&quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;paras[0]&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;testDiv&quot;, 0, &quot;testDiv&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;testDiv&quot;, 0, &quot;testDiv&quot;, 2],
+  [&quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;testDiv&quot;, 1, &quot;testDiv&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;paras[1]&quot;, &quot;testDiv&quot;, 1, &quot;testDiv&quot;, 2],
+  [&quot;foreignDoc&quot;, &quot;detachedComment&quot;, &quot;foreignDoc&quot;, &quot;foreignDoc.childNodes.length - 1&quot;, &quot;foreignDoc&quot;, &quot;foreignDoc.childNodes.length&quot;],
+  [&quot;foreignDoc&quot;, &quot;detachedComment&quot;, &quot;foreignDoc&quot;, &quot;foreignDoc.childNodes.length - 1&quot;, &quot;foreignDoc&quot;, &quot;foreignDoc.childNodes.length - 1&quot;],
+  [&quot;foreignDoc&quot;, &quot;detachedComment&quot;, &quot;foreignDoc&quot;, &quot;foreignDoc.childNodes.length&quot;, &quot;foreignDoc&quot;, &quot;foreignDoc.childNodes.length&quot;],
+  [&quot;foreignDoc&quot;, &quot;detachedComment&quot;, &quot;detachedComment&quot;, 0, &quot;detachedComment&quot;, 5],
+  [&quot;paras[0]&quot;, &quot;xmlTextNode&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 0],
+  [&quot;paras[0]&quot;, &quot;xmlTextNode&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;xmlTextNode&quot;, &quot;paras[0]&quot;, 1, &quot;paras[0]&quot;, 1],
+
+  // Stuff that throws exceptions
+  [&quot;paras[0]&quot;, &quot;paras[0]&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;testDiv&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;document&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;foreignDoc&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;document.doctype&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+];
+
+
+function testRemoveChild(affectedNode, startContainer, startOffset, endContainer, endOffset) {
+  var expectedStart = [startContainer, startOffset];
+  var expectedEnd = [endContainer, endOffset];
+
+  expectedStart = modifyForRemove(affectedNode, expectedStart);
+  expectedEnd = modifyForRemove(affectedNode, expectedEnd);
+
+  // We don't test cases where the parent is wrong, so this should never
+  // throw an exception.
+  affectedNode.parentNode.removeChild(affectedNode);
+
+  return expectedStart.concat(expectedEnd);
+}
+
+var removeChildTests = [
+  [&quot;paras[0]&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 0],
+  [&quot;paras[0]&quot;, &quot;paras[0]&quot;, 0, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;paras[0]&quot;, 1, &quot;paras[0]&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;testDiv&quot;, 0, &quot;testDiv&quot;, 0],
+  [&quot;paras[0]&quot;, &quot;testDiv&quot;, 0, &quot;testDiv&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;testDiv&quot;, 1, &quot;testDiv&quot;, 1],
+  [&quot;paras[0]&quot;, &quot;testDiv&quot;, 0, &quot;testDiv&quot;, 2],
+  [&quot;paras[0]&quot;, &quot;testDiv&quot;, 1, &quot;testDiv&quot;, 2],
+  [&quot;paras[0]&quot;, &quot;testDiv&quot;, 2, &quot;testDiv&quot;, 2],
+
+  [&quot;foreignDoc.documentElement&quot;, &quot;foreignDoc&quot;, 0, &quot;foreignDoc&quot;, &quot;foreignDoc.childNodes.length&quot;],
+];
+
+
+// Finally run everything.  All grouped together at the end so that I can
+// easily comment out some of them, so I don't have to wait for all test types
+// to debug only some of them.
+doTests(splitTextTests, function(params) { return params[0] + &quot;.splitText(&quot; + params[1] + &quot;)&quot; }, testSplitText);
+doTests(insertDataTests, function(params) { return params[0] + &quot;.insertData(&quot; + params[1] + &quot;, &quot; + params[2] + &quot;)&quot; }, testInsertData);
+doTests(appendDataTests, function(params) { return params[0] + &quot;.appendData(&quot; + params[1] + &quot;)&quot; }, testAppendData);
+doTests(deleteDataTests, function(params) { return params[0] + &quot;.deleteData(&quot; + params[1] + &quot;, &quot; + params[2] + &quot;)&quot; }, testDeleteData);
+doTests(replaceDataTests, function(params) { return params[0] + &quot;.replaceData(&quot; + params[1] + &quot;, &quot; + params[2] + &quot;, &quot; + params[3] + &quot;)&quot; }, testReplaceData);
+doTests(dataChangeTests, function(params) { return params[0] + &quot;.&quot; + eval(params[1]) + &quot; &quot; + eval(params[2]) + ' ' + params[3] }, testDataChange);
+doTests(insertBeforeTests, function(params) { return params[0] + &quot;.insertBefore(&quot; + params[1] + &quot;, &quot; + params[2] + &quot;)&quot; }, testInsertBefore);
+doTests(replaceChildTests, function(params) { return params[0] + &quot;.replaceChild(&quot; + params[1] + &quot;, &quot; + params[2] + &quot;)&quot; }, testReplaceChild);
+doTests(appendChildTests, function(params) { return params[0] + &quot;.appendChild(&quot; + params[1] + &quot;)&quot; }, testAppendChild);
+doTests(removeChildTests, function(params) { return params[0] + &quot;.parentNode.removeChild(&quot; + params[0] + &quot;)&quot; }, testRemoveChild);
+
+
+testDiv.style.display = &quot;none&quot;;
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeselectNodeexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangeselectNodeexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-selectNode-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-selectNode-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-selectNode-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-selectNode-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,274 @@
</span><ins>+
+PASS  current doc: #document node, current doc's range, type 9 
+PASS  current doc: #document node, foreign doc's range, type 9 
+PASS  current doc: #document node, XML doc's range, type 9 
+PASS  current doc: #document node, detached range, type 9 
+PASS ** current doc: html node, current doc's range, type 10 
+PASS ** current doc: html node, foreign doc's range, type 10 
+PASS ** current doc: html node, XML doc's range, type 10 
+PASS ** current doc: html node, detached range, type 10 
+PASS ** current doc: html node, current doc's range, type 1 
+PASS ** current doc: html node, foreign doc's range, type 1 
+PASS ** current doc: html node, XML doc's range, type 1 
+PASS ** current doc: html node, detached range, type 1 
+PASS **** current doc: head node, current doc's range, type 1 
+PASS **** current doc: head node, foreign doc's range, type 1 
+PASS **** current doc: head node, XML doc's range, type 1 
+PASS **** current doc: head node, detached range, type 1 
+PASS ****** current doc: title node, current doc's range, type 1 
+PASS ****** current doc: title node, foreign doc's range, type 1 
+PASS ****** current doc: title node, XML doc's range, type 1 
+PASS ****** current doc: title node, detached range, type 1 
+PASS ******** current doc: #text node, current doc's range, type 3 
+PASS ******** current doc: #text node, foreign doc's range, type 3 
+PASS ******** current doc: #text node, XML doc's range, type 3 
+PASS ******** current doc: #text node, detached range, type 3 
+PASS ****** current doc: #text node, current doc's range, type 3 
+PASS ****** current doc: #text node, foreign doc's range, type 3 
+PASS ****** current doc: #text node, XML doc's range, type 3 
+PASS ****** current doc: #text node, detached range, type 3 
+PASS ****** current doc: link node, current doc's range, type 1 
+PASS ****** current doc: link node, foreign doc's range, type 1 
+PASS ****** current doc: link node, XML doc's range, type 1 
+PASS ****** current doc: link node, detached range, type 1 
+PASS ****** current doc: #text node, current doc's range, type 3 
+PASS ****** current doc: #text node, foreign doc's range, type 3 
+PASS ****** current doc: #text node, XML doc's range, type 3 
+PASS ****** current doc: #text node, detached range, type 3 
+PASS ****** current doc: meta node, current doc's range, type 1 
+PASS ****** current doc: meta node, foreign doc's range, type 1 
+PASS ****** current doc: meta node, XML doc's range, type 1 
+PASS ****** current doc: meta node, detached range, type 1 
+PASS ****** current doc: #text node, current doc's range, type 3 
+PASS ****** current doc: #text node, foreign doc's range, type 3 
+PASS ****** current doc: #text node, XML doc's range, type 3 
+PASS ****** current doc: #text node, detached range, type 3 
+PASS **** current doc: body node, current doc's range, type 1 
+PASS **** current doc: body node, foreign doc's range, type 1 
+PASS **** current doc: body node, XML doc's range, type 1 
+PASS **** current doc: body node, detached range, type 1 
+PASS ****** current doc: div node, current doc's range, type 1 
+PASS ****** current doc: div node, foreign doc's range, type 1 
+PASS ****** current doc: div node, XML doc's range, type 1 
+PASS ****** current doc: div node, detached range, type 1 
+PASS ******** current doc: p node, current doc's range, type 1 
+PASS ******** current doc: p node, foreign doc's range, type 1 
+PASS ******** current doc: p node, XML doc's range, type 1 
+PASS ******** current doc: p node, detached range, type 1 
+PASS ********** current doc: #text node, current doc's range, type 3 
+PASS ********** current doc: #text node, foreign doc's range, type 3 
+PASS ********** current doc: #text node, XML doc's range, type 3 
+PASS ********** current doc: #text node, detached range, type 3 
+PASS ******** current doc: p node, current doc's range, type 1 
+PASS ******** current doc: p node, foreign doc's range, type 1 
+PASS ******** current doc: p node, XML doc's range, type 1 
+PASS ******** current doc: p node, detached range, type 1 
+PASS ********** current doc: #text node, current doc's range, type 3 
+PASS ********** current doc: #text node, foreign doc's range, type 3 
+PASS ********** current doc: #text node, XML doc's range, type 3 
+PASS ********** current doc: #text node, detached range, type 3 
+PASS ******** current doc: p node, current doc's range, type 1 
+PASS ******** current doc: p node, foreign doc's range, type 1 
+PASS ******** current doc: p node, XML doc's range, type 1 
+PASS ******** current doc: p node, detached range, type 1 
+PASS ********** current doc: #text node, current doc's range, type 3 
+PASS ********** current doc: #text node, foreign doc's range, type 3 
+PASS ********** current doc: #text node, XML doc's range, type 3 
+PASS ********** current doc: #text node, detached range, type 3 
+PASS ******** current doc: p node, current doc's range, type 1 
+PASS ******** current doc: p node, foreign doc's range, type 1 
+PASS ******** current doc: p node, XML doc's range, type 1 
+PASS ******** current doc: p node, detached range, type 1 
+PASS ********** current doc: #text node, current doc's range, type 3 
+PASS ********** current doc: #text node, foreign doc's range, type 3 
+PASS ********** current doc: #text node, XML doc's range, type 3 
+PASS ********** current doc: #text node, detached range, type 3 
+PASS ******** current doc: p node, current doc's range, type 1 
+PASS ******** current doc: p node, foreign doc's range, type 1 
+PASS ******** current doc: p node, XML doc's range, type 1 
+PASS ******** current doc: p node, detached range, type 1 
+PASS ********** current doc: #text node, current doc's range, type 3 
+PASS ********** current doc: #text node, foreign doc's range, type 3 
+PASS ********** current doc: #text node, XML doc's range, type 3 
+PASS ********** current doc: #text node, detached range, type 3 
+PASS ******** current doc: #comment node, current doc's range, type 8 
+PASS ******** current doc: #comment node, foreign doc's range, type 8 
+PASS ******** current doc: #comment node, XML doc's range, type 8 
+PASS ******** current doc: #comment node, detached range, type 8 
+PASS ****** current doc: #text node, current doc's range, type 3 
+PASS ****** current doc: #text node, foreign doc's range, type 3 
+PASS ****** current doc: #text node, XML doc's range, type 3 
+PASS ****** current doc: #text node, detached range, type 3 
+PASS ****** current doc: script node, current doc's range, type 1 
+PASS ****** current doc: script node, foreign doc's range, type 1 
+PASS ****** current doc: script node, XML doc's range, type 1 
+PASS ****** current doc: script node, detached range, type 1 
+PASS ****** current doc: #text node, current doc's range, type 3 
+PASS ****** current doc: #text node, foreign doc's range, type 3 
+PASS ****** current doc: #text node, XML doc's range, type 3 
+PASS ****** current doc: #text node, detached range, type 3 
+PASS ****** current doc: script node, current doc's range, type 1 
+PASS ****** current doc: script node, foreign doc's range, type 1 
+PASS ****** current doc: script node, XML doc's range, type 1 
+PASS ****** current doc: script node, detached range, type 1 
+PASS ****** current doc: #text node, current doc's range, type 3 
+PASS ****** current doc: #text node, foreign doc's range, type 3 
+PASS ****** current doc: #text node, XML doc's range, type 3 
+PASS ****** current doc: #text node, detached range, type 3 
+PASS ****** current doc: script node, current doc's range, type 1 
+PASS ****** current doc: script node, foreign doc's range, type 1 
+PASS ****** current doc: script node, XML doc's range, type 1 
+PASS ****** current doc: script node, detached range, type 1 
+PASS ****** current doc: #text node, current doc's range, type 3 
+PASS ****** current doc: #text node, foreign doc's range, type 3 
+PASS ****** current doc: #text node, XML doc's range, type 3 
+PASS ****** current doc: #text node, detached range, type 3 
+PASS ****** current doc: script node, current doc's range, type 1 
+PASS ****** current doc: script node, foreign doc's range, type 1 
+PASS ****** current doc: script node, XML doc's range, type 1 
+PASS ****** current doc: script node, detached range, type 1 
+PASS ******** current doc: #text node, current doc's range, type 3 
+PASS ******** current doc: #text node, foreign doc's range, type 3 
+PASS ******** current doc: #text node, XML doc's range, type 3 
+PASS ******** current doc: #text node, detached range, type 3 
+PASS  foreign doc: #document node, current doc's range, type 9 
+PASS  foreign doc: #document node, foreign doc's range, type 9 
+PASS  foreign doc: #document node, XML doc's range, type 9 
+PASS  foreign doc: #document node, detached range, type 9 
+PASS ** foreign doc: html node, current doc's range, type 10 
+PASS ** foreign doc: html node, foreign doc's range, type 10 
+PASS ** foreign doc: html node, XML doc's range, type 10 
+PASS ** foreign doc: html node, detached range, type 10 
+PASS ** foreign doc: html node, current doc's range, type 1 
+PASS ** foreign doc: html node, foreign doc's range, type 1 
+PASS ** foreign doc: html node, XML doc's range, type 1 
+PASS ** foreign doc: html node, detached range, type 1 
+PASS **** foreign doc: head node, current doc's range, type 1 
+PASS **** foreign doc: head node, foreign doc's range, type 1 
+PASS **** foreign doc: head node, XML doc's range, type 1 
+PASS **** foreign doc: head node, detached range, type 1 
+PASS ****** foreign doc: title node, current doc's range, type 1 
+PASS ****** foreign doc: title node, foreign doc's range, type 1 
+PASS ****** foreign doc: title node, XML doc's range, type 1 
+PASS ****** foreign doc: title node, detached range, type 1 
+PASS **** foreign doc: body node, current doc's range, type 1 
+PASS **** foreign doc: body node, foreign doc's range, type 1 
+PASS **** foreign doc: body node, XML doc's range, type 1 
+PASS **** foreign doc: body node, detached range, type 1 
+PASS ****** foreign doc: p node, current doc's range, type 1 
+PASS ****** foreign doc: p node, foreign doc's range, type 1 
+PASS ****** foreign doc: p node, XML doc's range, type 1 
+PASS ****** foreign doc: p node, detached range, type 1 
+PASS ******** foreign doc: #text node, current doc's range, type 3 
+PASS ******** foreign doc: #text node, foreign doc's range, type 3 
+PASS ******** foreign doc: #text node, XML doc's range, type 3 
+PASS ******** foreign doc: #text node, detached range, type 3 
+PASS ****** foreign doc: p node, current doc's range, type 1 
+PASS ****** foreign doc: p node, foreign doc's range, type 1 
+PASS ****** foreign doc: p node, XML doc's range, type 1 
+PASS ****** foreign doc: p node, detached range, type 1 
+PASS ******** foreign doc: #text node, current doc's range, type 3 
+PASS ******** foreign doc: #text node, foreign doc's range, type 3 
+PASS ******** foreign doc: #text node, XML doc's range, type 3 
+PASS ******** foreign doc: #text node, detached range, type 3 
+PASS ****** foreign doc: #text node, current doc's range, type 3 
+PASS ****** foreign doc: #text node, foreign doc's range, type 3 
+PASS ****** foreign doc: #text node, XML doc's range, type 3 
+PASS ****** foreign doc: #text node, detached range, type 3 
+PASS ** foreign doc: #comment node, current doc's range, type 8 
+PASS ** foreign doc: #comment node, foreign doc's range, type 8 
+PASS ** foreign doc: #comment node, XML doc's range, type 8 
+PASS ** foreign doc: #comment node, detached range, type 8 
+PASS  detached div in current doc: div node, current doc's range, type 1 
+PASS  detached div in current doc: div node, foreign doc's range, type 1 
+PASS  detached div in current doc: div node, XML doc's range, type 1 
+PASS  detached div in current doc: div node, detached range, type 1 
+FAIL ** detached div in current doc: p node, current doc's range, type 1 InvalidNodeTypeError: DOM Exception 24
+FAIL ** detached div in current doc: p node, foreign doc's range, type 1 InvalidNodeTypeError: DOM Exception 24
+FAIL ** detached div in current doc: p node, XML doc's range, type 1 InvalidNodeTypeError: DOM Exception 24
+FAIL ** detached div in current doc: p node, detached range, type 1 InvalidNodeTypeError: DOM Exception 24
+FAIL **** detached div in current doc: #text node, current doc's range, type 3 InvalidNodeTypeError: DOM Exception 24
+FAIL **** detached div in current doc: #text node, foreign doc's range, type 3 InvalidNodeTypeError: DOM Exception 24
+FAIL **** detached div in current doc: #text node, XML doc's range, type 3 InvalidNodeTypeError: DOM Exception 24
+FAIL **** detached div in current doc: #text node, detached range, type 3 InvalidNodeTypeError: DOM Exception 24
+FAIL ** detached div in current doc: p node, current doc's range, type 1 InvalidNodeTypeError: DOM Exception 24
+FAIL ** detached div in current doc: p node, foreign doc's range, type 1 InvalidNodeTypeError: DOM Exception 24
+FAIL ** detached div in current doc: p node, XML doc's range, type 1 InvalidNodeTypeError: DOM Exception 24
+FAIL ** detached div in current doc: p node, detached range, type 1 InvalidNodeTypeError: DOM Exception 24
+FAIL **** detached div in current doc: #text node, current doc's range, type 3 InvalidNodeTypeError: DOM Exception 24
+FAIL **** detached div in current doc: #text node, foreign doc's range, type 3 InvalidNodeTypeError: DOM Exception 24
+FAIL **** detached div in current doc: #text node, XML doc's range, type 3 InvalidNodeTypeError: DOM Exception 24
+FAIL **** detached div in current doc: #text node, detached range, type 3 InvalidNodeTypeError: DOM Exception 24
+PASS  #document node, current doc's range, type 9 
+PASS  #document node, foreign doc's range, type 9 
+PASS  #document node, XML doc's range, type 9 
+PASS  #document node, detached range, type 9 
+PASS ** qorflesnorf node, current doc's range, type 10 
+PASS ** qorflesnorf node, foreign doc's range, type 10 
+PASS ** qorflesnorf node, XML doc's range, type 10 
+PASS ** qorflesnorf node, detached range, type 10 
+PASS ** igiveuponcreativenames node, current doc's range, type 1 
+PASS ** igiveuponcreativenames node, foreign doc's range, type 1 
+PASS ** igiveuponcreativenames node, XML doc's range, type 1 
+PASS ** igiveuponcreativenames node, detached range, type 1 
+PASS **** #text node, current doc's range, type 3 
+PASS **** #text node, foreign doc's range, type 3 
+PASS **** #text node, XML doc's range, type 3 
+PASS **** #text node, detached range, type 3 
+PASS ** somepi node, current doc's range, type 7 
+PASS ** somepi node, foreign doc's range, type 7 
+PASS ** somepi node, XML doc's range, type 7 
+PASS ** somepi node, detached range, type 7 
+PASS ** #comment node, current doc's range, type 8 
+PASS ** #comment node, foreign doc's range, type 8 
+PASS ** #comment node, XML doc's range, type 8 
+PASS ** #comment node, detached range, type 8 
+PASS  igiveuponcreativenames node, current doc's range, type 1 
+PASS  igiveuponcreativenames node, foreign doc's range, type 1 
+PASS  igiveuponcreativenames node, XML doc's range, type 1 
+PASS  igiveuponcreativenames node, detached range, type 1 
+PASS ** #text node, current doc's range, type 3 
+PASS ** #text node, foreign doc's range, type 3 
+PASS ** #text node, XML doc's range, type 3 
+PASS ** #text node, detached range, type 3 
+PASS  #text node, current doc's range, type 3 
+PASS  #text node, foreign doc's range, type 3 
+PASS  #text node, XML doc's range, type 3 
+PASS  #text node, detached range, type 3 
+PASS  #text node, current doc's range, type 3 
+PASS  #text node, foreign doc's range, type 3 
+PASS  #text node, XML doc's range, type 3 
+PASS  #text node, detached range, type 3 
+PASS  #text node, current doc's range, type 3 
+PASS  #text node, foreign doc's range, type 3 
+PASS  #text node, XML doc's range, type 3 
+PASS  #text node, detached range, type 3 
+PASS  somepi node, current doc's range, type 7 
+PASS  somepi node, foreign doc's range, type 7 
+PASS  somepi node, XML doc's range, type 7 
+PASS  somepi node, detached range, type 7 
+PASS  #comment node, current doc's range, type 8 
+PASS  #comment node, foreign doc's range, type 8 
+PASS  #comment node, XML doc's range, type 8 
+PASS  #comment node, detached range, type 8 
+PASS  #comment node, current doc's range, type 8 
+PASS  #comment node, foreign doc's range, type 8 
+PASS  #comment node, XML doc's range, type 8 
+PASS  #comment node, detached range, type 8 
+PASS  #comment node, current doc's range, type 8 
+PASS  #comment node, foreign doc's range, type 8 
+PASS  #comment node, XML doc's range, type 8 
+PASS  #comment node, detached range, type 8 
+PASS  #document-fragment node, current doc's range, type 11 
+PASS  #document-fragment node, foreign doc's range, type 11 
+PASS  #document-fragment node, XML doc's range, type 11 
+PASS  #document-fragment node, detached range, type 11 
+PASS  #document-fragment node, current doc's range, type 11 
+PASS  #document-fragment node, foreign doc's range, type 11 
+PASS  #document-fragment node, XML doc's range, type 11 
+PASS  #document-fragment node, detached range, type 11 
+PASS  #document-fragment node, current doc's range, type 11 
+PASS  #document-fragment node, foreign doc's range, type 11 
+PASS  #document-fragment node, XML doc's range, type 11 
+PASS  #document-fragment node, detached range, type 11 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangeselectNodehtmlfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangeselectNodehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-selectNode.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-selectNode.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-selectNode.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-selectNode.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,99 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Range.selectNode() and .selectNodeContents() tests&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Aryeh Gregor&quot; href=ayg@aryeh.name&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;script src=../common.js&gt;&lt;/script&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+
+function testSelectNode(range, node) {
+    try {
+        range.collapsed;
+    } catch (e) {
+        // Range is detached
+        assert_throws(&quot;INVALID_STATE_ERR&quot;, function () {
+            range.selectNode(node);
+        }, &quot;selectNode() on a detached node must throw INVALID_STATE_ERR&quot;);
+        assert_throws(&quot;INVALID_STATE_ERR&quot;, function () {
+            range.selectNodeContents(node);
+        }, &quot;selectNodeContents() on a detached node must throw INVALID_STATE_ERR&quot;);
+        return;
+    }
+
+    if (!node.parentNode) {
+        assert_throws(&quot;INVALID_NODE_TYPE_ERR&quot;, function() {
+            range.selectNode(node);
+        }, &quot;selectNode() on a node with no parent must throw INVALID_NODE_TYPE_ERR&quot;);
+    } else {
+        var index = 0;
+        while (node.parentNode.childNodes[index] != node) {
+            index++;
+        }
+
+        range.selectNode(node);
+        assert_equals(range.startContainer, node.parentNode,
+            &quot;After selectNode(), startContainer must equal parent node&quot;);
+        assert_equals(range.endContainer, node.parentNode,
+            &quot;After selectNode(), endContainer must equal parent node&quot;);
+        assert_equals(range.startOffset, index,
+            &quot;After selectNode(), startOffset must be index of node in parent (&quot; + index + &quot;)&quot;);
+        assert_equals(range.endOffset, index + 1,
+            &quot;After selectNode(), endOffset must be one plus index of node in parent (&quot; + (index + 1) + &quot;)&quot;);
+    }
+
+    if (node.nodeType == Node.DOCUMENT_TYPE_NODE) {
+        assert_throws(&quot;INVALID_NODE_TYPE_ERR&quot;, function () {
+            range.selectNodeContents(node);
+        }, &quot;selectNodeContents() on a doctype must throw INVALID_NODE_TYPE_ERR&quot;);
+    } else {
+        range.selectNodeContents(node);
+        assert_equals(range.startContainer, node,
+            &quot;After selectNodeContents(), startContainer must equal node&quot;);
+        assert_equals(range.endContainer, node,
+            &quot;After selectNodeContents(), endContainer must equal node&quot;);
+        assert_equals(range.startOffset, 0,
+            &quot;After selectNodeContents(), startOffset must equal 0&quot;);
+        var len = nodeLength(node);
+        assert_equals(range.endOffset, len,
+            &quot;After selectNodeContents(), endOffset must equal node length (&quot; + len + &quot;)&quot;);
+    }
+}
+
+var range = document.createRange();
+var foreignRange = foreignDoc.createRange();
+var xmlRange = xmlDoc.createRange();
+var detachedRange = document.createRange();
+detachedRange.detach();
+var tests = [];
+function testTree(root, marker) {
+    if (root.nodeType == Node.ELEMENT_NODE &amp;&amp; root.id == &quot;log&quot;) {
+        // This is being modified during the tests, so let's not test it.
+        return;
+    }
+    tests.push([marker + root.nodeName.toLowerCase() + &quot; node, current doc's range, type &quot; + root.nodeType, range, root]);
+    tests.push([marker + root.nodeName.toLowerCase() + &quot; node, foreign doc's range, type &quot; + root.nodeType, foreignRange, root]);
+    tests.push([marker + root.nodeName.toLowerCase() + &quot; node, XML doc's range, type &quot; + root.nodeType, xmlRange, root]);
+    tests.push([marker + root.nodeName.toLowerCase() + &quot; node, detached range, type &quot; + root.nodeType, detachedRange, root]);
+    for (var i = 0; i &lt; root.childNodes.length; i++) {
+        testTree(root.childNodes[i], &quot;**&quot; + marker);
+    }
+}
+testTree(document, &quot; current doc: &quot;);
+testTree(foreignDoc, &quot; foreign doc: &quot;);
+testTree(detachedDiv, &quot; detached div in current doc: &quot;);
+
+var otherTests = [xmlDoc, xmlElement, detachedTextNode, foreignTextNode,
+xmlTextNode, processingInstruction, comment, foreignComment, xmlComment,
+docfrag, foreignDocfrag, xmlDocfrag];
+
+for (var i = 0; i &lt; otherTests.length; i++) {
+    testTree(otherTests[i], &quot; &quot;);
+}
+
+generate_tests(testSelectNode, tests);
+
+testDiv.style.display = &quot;none&quot;;
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangesetexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangesetexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-set-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-set-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-set-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-set-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,10072 @@
</span><ins>+
+PASS Set up range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0] 
+PASS Set up range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1] 
+PASS Set up range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8] 
+PASS Set up range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9] 
+PASS Set up range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0] 
+PASS Set up range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9] 
+PASS Set up range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0] 
+PASS Set up range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8] 
+PASS Set up range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0] 
+PASS Set up range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8] 
+PASS Set up range 10 [document.documentElement, 0, document.documentElement, 1] 
+PASS Set up range 11 [document.documentElement, 0, document.documentElement, 2] 
+PASS Set up range 12 [document.documentElement, 1, document.documentElement, 2] 
+PASS Set up range 13 [document.head, 1, document.head, 1] 
+PASS Set up range 14 [document.body, 4, document.body, 5] 
+PASS Set up range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1] 
+PASS Set up range 16 [paras[0], 0, paras[0], 1] 
+PASS Set up range 17 [detachedPara1, 0, detachedPara1, 1] 
+PASS Set up range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0] 
+PASS Set up range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8] 
+PASS Set up range 20 [paras[0].firstChild, 3, paras[3], 1] 
+PASS Set up range 21 [paras[0], 0, paras[0].firstChild, 7] 
+PASS Set up range 22 [testDiv, 2, paras[4], 1] 
+PASS Set up range 23 [document, 0, document, 1] 
+PASS Set up range 24 [document, 0, document, 2] 
+PASS Set up range 25 [comment, 2, comment, 3] 
+PASS Set up range 26 [testDiv, 0, comment, 5] 
+PASS Set up range 27 [foreignDoc, 1, foreignComment, 2] 
+PASS Set up range 28 [foreignDoc.body, 0, foreignTextNode, 36] 
+PASS Set up range 29 [xmlDoc, 1, xmlComment, 0] 
+PASS Set up range 30 [detachedTextNode, 0, detachedTextNode, 8] 
+PASS Set up range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8] 
+PASS Set up range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8] 
+PASS Set up range 33 [detachedComment, 3, detachedComment, 4] 
+PASS Set up range 34 [detachedForeignComment, 0, detachedForeignComment, 1] 
+PASS Set up range 35 [detachedXmlComment, 2, detachedXmlComment, 6] 
+PASS Set up range 36 [docfrag, 0, docfrag, 0] 
+PASS Set up range 37 [processingInstruction, 0, processingInstruction, 4] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 24 [document.documentElement, -1] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 25 [document.documentElement, 0] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 26 [document.documentElement, 1] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 27 [document.documentElement, 2] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 28 [document.documentElement, 7] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 29 [document.head, 1] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 30 [document.body, 3] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 35 [paras[0], 0] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 36 [paras[0], 1] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 37 [paras[0], 2] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 38 [paras[1], 0] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 39 [paras[1], 1] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 40 [paras[1], 2] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 41 [detachedPara1, 0] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 42 [detachedPara1, 1] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 43 [testDiv, 0] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 44 [testDiv, 3] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 45 [document, -1] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 46 [document, 0] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 47 [document, 1] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 48 [document, 2] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 49 [document, 3] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 50 [comment, -1] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 51 [comment, 0] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 52 [comment, 4] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 53 [comment, 96] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 54 [foreignDoc, 0] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 55 [foreignDoc, 1] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 56 [foreignComment, 2] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 59 [xmlDoc, -1] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 60 [xmlDoc, 0] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 61 [xmlDoc, 1] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 62 [xmlDoc, 5] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 63 [xmlComment, 0] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 64 [xmlComment, 4] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 65 [processingInstruction, 0] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 66 [processingInstruction, 5] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 67 [processingInstruction, 9] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 75 [detachedComment, 3] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 76 [detachedComment, 5] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 80 [docfrag, 0] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 83 [doctype, 0] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 84 [doctype, -17] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 85 [doctype, 1] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 24 [document.documentElement, -1] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 25 [document.documentElement, 0] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 26 [document.documentElement, 1] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 27 [document.documentElement, 2] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 28 [document.documentElement, 7] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 29 [document.head, 1] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 30 [document.body, 3] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 35 [paras[0], 0] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 36 [paras[0], 1] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 37 [paras[0], 2] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 38 [paras[1], 0] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 39 [paras[1], 1] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 40 [paras[1], 2] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 41 [detachedPara1, 0] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 42 [detachedPara1, 1] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 43 [testDiv, 0] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 44 [testDiv, 3] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 45 [document, -1] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 46 [document, 0] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 47 [document, 1] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 48 [document, 2] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 49 [document, 3] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 50 [comment, -1] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 51 [comment, 0] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 52 [comment, 4] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 53 [comment, 96] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 54 [foreignDoc, 0] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 55 [foreignDoc, 1] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 56 [foreignComment, 2] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 59 [xmlDoc, -1] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 60 [xmlDoc, 0] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 61 [xmlDoc, 1] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 62 [xmlDoc, 5] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 63 [xmlComment, 0] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 64 [xmlComment, 4] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 65 [processingInstruction, 0] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 66 [processingInstruction, 5] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 67 [processingInstruction, 9] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 75 [detachedComment, 3] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 76 [detachedComment, 5] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 80 [docfrag, 0] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 83 [doctype, 0] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 84 [doctype, -17] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 85 [doctype, 1] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 24 [document.documentElement, -1] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 25 [document.documentElement, 0] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 26 [document.documentElement, 1] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 27 [document.documentElement, 2] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 28 [document.documentElement, 7] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 29 [document.head, 1] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 30 [document.body, 3] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 35 [paras[0], 0] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 36 [paras[0], 1] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 37 [paras[0], 2] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 38 [paras[1], 0] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 39 [paras[1], 1] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 40 [paras[1], 2] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 41 [detachedPara1, 0] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 42 [detachedPara1, 1] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 43 [testDiv, 0] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 44 [testDiv, 3] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 45 [document, -1] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 46 [document, 0] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 47 [document, 1] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 48 [document, 2] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 49 [document, 3] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 50 [comment, -1] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 51 [comment, 0] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 52 [comment, 4] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 53 [comment, 96] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 54 [foreignDoc, 0] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 55 [foreignDoc, 1] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 56 [foreignComment, 2] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 59 [xmlDoc, -1] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 60 [xmlDoc, 0] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 61 [xmlDoc, 1] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 62 [xmlDoc, 5] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 63 [xmlComment, 0] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 64 [xmlComment, 4] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 65 [processingInstruction, 0] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 66 [processingInstruction, 5] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 67 [processingInstruction, 9] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 75 [detachedComment, 3] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 76 [detachedComment, 5] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 80 [docfrag, 0] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 83 [doctype, 0] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 84 [doctype, -17] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 85 [doctype, 1] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 24 [document.documentElement, -1] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 25 [document.documentElement, 0] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 26 [document.documentElement, 1] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 27 [document.documentElement, 2] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 28 [document.documentElement, 7] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 29 [document.head, 1] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 30 [document.body, 3] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 35 [paras[0], 0] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 36 [paras[0], 1] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 37 [paras[0], 2] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 38 [paras[1], 0] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 39 [paras[1], 1] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 40 [paras[1], 2] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 41 [detachedPara1, 0] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 42 [detachedPara1, 1] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 43 [testDiv, 0] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 44 [testDiv, 3] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 45 [document, -1] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 46 [document, 0] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 47 [document, 1] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 48 [document, 2] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 49 [document, 3] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 50 [comment, -1] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 51 [comment, 0] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 52 [comment, 4] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 53 [comment, 96] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 54 [foreignDoc, 0] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 55 [foreignDoc, 1] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 56 [foreignComment, 2] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 59 [xmlDoc, -1] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 60 [xmlDoc, 0] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 61 [xmlDoc, 1] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 62 [xmlDoc, 5] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 63 [xmlComment, 0] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 64 [xmlComment, 4] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 65 [processingInstruction, 0] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 66 [processingInstruction, 5] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 67 [processingInstruction, 9] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 75 [detachedComment, 3] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 76 [detachedComment, 5] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 80 [docfrag, 0] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 83 [doctype, 0] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 84 [doctype, -17] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 85 [doctype, 1] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 24 [document.documentElement, -1] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 25 [document.documentElement, 0] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 26 [document.documentElement, 1] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 27 [document.documentElement, 2] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 28 [document.documentElement, 7] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 29 [document.head, 1] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 30 [document.body, 3] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 35 [paras[0], 0] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 36 [paras[0], 1] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 37 [paras[0], 2] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 38 [paras[1], 0] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 39 [paras[1], 1] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 40 [paras[1], 2] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 41 [detachedPara1, 0] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 42 [detachedPara1, 1] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 43 [testDiv, 0] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 44 [testDiv, 3] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 45 [document, -1] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 46 [document, 0] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 47 [document, 1] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 48 [document, 2] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 49 [document, 3] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 50 [comment, -1] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 51 [comment, 0] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 52 [comment, 4] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 53 [comment, 96] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 54 [foreignDoc, 0] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 55 [foreignDoc, 1] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 56 [foreignComment, 2] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 59 [xmlDoc, -1] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 60 [xmlDoc, 0] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 61 [xmlDoc, 1] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 62 [xmlDoc, 5] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 63 [xmlComment, 0] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 64 [xmlComment, 4] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 65 [processingInstruction, 0] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 66 [processingInstruction, 5] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 67 [processingInstruction, 9] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 75 [detachedComment, 3] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 76 [detachedComment, 5] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 80 [docfrag, 0] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 83 [doctype, 0] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 84 [doctype, -17] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 85 [doctype, 1] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 24 [document.documentElement, -1] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 25 [document.documentElement, 0] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 26 [document.documentElement, 1] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 27 [document.documentElement, 2] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 28 [document.documentElement, 7] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 29 [document.head, 1] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 30 [document.body, 3] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 35 [paras[0], 0] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 36 [paras[0], 1] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 37 [paras[0], 2] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 38 [paras[1], 0] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 39 [paras[1], 1] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 40 [paras[1], 2] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 41 [detachedPara1, 0] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 42 [detachedPara1, 1] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 43 [testDiv, 0] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 44 [testDiv, 3] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 45 [document, -1] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 46 [document, 0] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 47 [document, 1] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 48 [document, 2] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 49 [document, 3] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 50 [comment, -1] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 51 [comment, 0] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 52 [comment, 4] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 53 [comment, 96] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 54 [foreignDoc, 0] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 55 [foreignDoc, 1] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 56 [foreignComment, 2] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 59 [xmlDoc, -1] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 60 [xmlDoc, 0] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 61 [xmlDoc, 1] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 62 [xmlDoc, 5] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 63 [xmlComment, 0] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 64 [xmlComment, 4] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 65 [processingInstruction, 0] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 66 [processingInstruction, 5] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 67 [processingInstruction, 9] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 75 [detachedComment, 3] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 76 [detachedComment, 5] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 80 [docfrag, 0] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 83 [doctype, 0] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 84 [doctype, -17] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 85 [doctype, 1] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 24 [document.documentElement, -1] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 25 [document.documentElement, 0] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 26 [document.documentElement, 1] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 27 [document.documentElement, 2] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 28 [document.documentElement, 7] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 29 [document.head, 1] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 30 [document.body, 3] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 35 [paras[0], 0] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 36 [paras[0], 1] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 37 [paras[0], 2] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 38 [paras[1], 0] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 39 [paras[1], 1] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 40 [paras[1], 2] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 41 [detachedPara1, 0] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 42 [detachedPara1, 1] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 43 [testDiv, 0] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 44 [testDiv, 3] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 45 [document, -1] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 46 [document, 0] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 47 [document, 1] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 48 [document, 2] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 49 [document, 3] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 50 [comment, -1] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 51 [comment, 0] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 52 [comment, 4] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 53 [comment, 96] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 54 [foreignDoc, 0] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 55 [foreignDoc, 1] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 56 [foreignComment, 2] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 59 [xmlDoc, -1] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 60 [xmlDoc, 0] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 61 [xmlDoc, 1] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 62 [xmlDoc, 5] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 63 [xmlComment, 0] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 64 [xmlComment, 4] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 65 [processingInstruction, 0] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 66 [processingInstruction, 5] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 67 [processingInstruction, 9] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 75 [detachedComment, 3] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 76 [detachedComment, 5] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 80 [docfrag, 0] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 83 [doctype, 0] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 84 [doctype, -17] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 85 [doctype, 1] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 24 [document.documentElement, -1] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 25 [document.documentElement, 0] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 26 [document.documentElement, 1] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 27 [document.documentElement, 2] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 28 [document.documentElement, 7] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 29 [document.head, 1] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 30 [document.body, 3] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 35 [paras[0], 0] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 36 [paras[0], 1] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 37 [paras[0], 2] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 38 [paras[1], 0] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 39 [paras[1], 1] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 40 [paras[1], 2] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 41 [detachedPara1, 0] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 42 [detachedPara1, 1] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 43 [testDiv, 0] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 44 [testDiv, 3] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 45 [document, -1] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 46 [document, 0] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 47 [document, 1] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 48 [document, 2] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 49 [document, 3] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 50 [comment, -1] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 51 [comment, 0] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 52 [comment, 4] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 53 [comment, 96] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 54 [foreignDoc, 0] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 55 [foreignDoc, 1] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 56 [foreignComment, 2] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 59 [xmlDoc, -1] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 60 [xmlDoc, 0] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 61 [xmlDoc, 1] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 62 [xmlDoc, 5] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 63 [xmlComment, 0] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 64 [xmlComment, 4] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 65 [processingInstruction, 0] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 66 [processingInstruction, 5] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 67 [processingInstruction, 9] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 75 [detachedComment, 3] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 76 [detachedComment, 5] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 80 [docfrag, 0] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 83 [doctype, 0] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 84 [doctype, -17] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 85 [doctype, 1] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 24 [document.documentElement, -1] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 25 [document.documentElement, 0] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 26 [document.documentElement, 1] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 27 [document.documentElement, 2] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 28 [document.documentElement, 7] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 29 [document.head, 1] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 30 [document.body, 3] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 35 [paras[0], 0] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 36 [paras[0], 1] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 37 [paras[0], 2] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 38 [paras[1], 0] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 39 [paras[1], 1] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 40 [paras[1], 2] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 41 [detachedPara1, 0] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 42 [detachedPara1, 1] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 43 [testDiv, 0] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 44 [testDiv, 3] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 45 [document, -1] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 46 [document, 0] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 47 [document, 1] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 48 [document, 2] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 49 [document, 3] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 50 [comment, -1] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 51 [comment, 0] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 52 [comment, 4] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 53 [comment, 96] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 54 [foreignDoc, 0] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 55 [foreignDoc, 1] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 56 [foreignComment, 2] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 59 [xmlDoc, -1] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 60 [xmlDoc, 0] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 61 [xmlDoc, 1] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 62 [xmlDoc, 5] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 63 [xmlComment, 0] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 64 [xmlComment, 4] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 65 [processingInstruction, 0] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 66 [processingInstruction, 5] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 67 [processingInstruction, 9] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 75 [detachedComment, 3] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 76 [detachedComment, 5] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 80 [docfrag, 0] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 83 [doctype, 0] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 84 [doctype, -17] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 85 [doctype, 1] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 24 [document.documentElement, -1] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 25 [document.documentElement, 0] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 26 [document.documentElement, 1] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 27 [document.documentElement, 2] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 28 [document.documentElement, 7] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 29 [document.head, 1] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 30 [document.body, 3] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 35 [paras[0], 0] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 36 [paras[0], 1] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 37 [paras[0], 2] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 38 [paras[1], 0] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 39 [paras[1], 1] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 40 [paras[1], 2] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 41 [detachedPara1, 0] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 42 [detachedPara1, 1] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 43 [testDiv, 0] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 44 [testDiv, 3] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 45 [document, -1] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 46 [document, 0] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 47 [document, 1] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 48 [document, 2] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 49 [document, 3] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 50 [comment, -1] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 51 [comment, 0] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 52 [comment, 4] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 53 [comment, 96] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 54 [foreignDoc, 0] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 55 [foreignDoc, 1] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 56 [foreignComment, 2] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 59 [xmlDoc, -1] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 60 [xmlDoc, 0] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 61 [xmlDoc, 1] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 62 [xmlDoc, 5] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 63 [xmlComment, 0] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 64 [xmlComment, 4] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 65 [processingInstruction, 0] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 66 [processingInstruction, 5] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 67 [processingInstruction, 9] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 75 [detachedComment, 3] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 76 [detachedComment, 5] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 80 [docfrag, 0] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 83 [doctype, 0] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 84 [doctype, -17] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 85 [doctype, 1] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 24 [document.documentElement, -1] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 25 [document.documentElement, 0] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 26 [document.documentElement, 1] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 27 [document.documentElement, 2] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 28 [document.documentElement, 7] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 29 [document.head, 1] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 30 [document.body, 3] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 35 [paras[0], 0] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 36 [paras[0], 1] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 37 [paras[0], 2] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 38 [paras[1], 0] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 39 [paras[1], 1] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 40 [paras[1], 2] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 41 [detachedPara1, 0] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 42 [detachedPara1, 1] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 43 [testDiv, 0] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 44 [testDiv, 3] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 45 [document, -1] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 46 [document, 0] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 47 [document, 1] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 48 [document, 2] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 49 [document, 3] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 50 [comment, -1] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 51 [comment, 0] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 52 [comment, 4] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 53 [comment, 96] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 54 [foreignDoc, 0] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 55 [foreignDoc, 1] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 56 [foreignComment, 2] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 59 [xmlDoc, -1] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 60 [xmlDoc, 0] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 61 [xmlDoc, 1] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 62 [xmlDoc, 5] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 63 [xmlComment, 0] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 64 [xmlComment, 4] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 65 [processingInstruction, 0] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 66 [processingInstruction, 5] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 67 [processingInstruction, 9] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 75 [detachedComment, 3] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 76 [detachedComment, 5] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 80 [docfrag, 0] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 83 [doctype, 0] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 84 [doctype, -17] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 85 [doctype, 1] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 10 [document.documentElement, 0, document.documentElement, 1], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 24 [document.documentElement, -1] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 25 [document.documentElement, 0] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 26 [document.documentElement, 1] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 27 [document.documentElement, 2] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 28 [document.documentElement, 7] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 29 [document.head, 1] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 30 [document.body, 3] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 35 [paras[0], 0] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 36 [paras[0], 1] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 37 [paras[0], 2] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 38 [paras[1], 0] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 39 [paras[1], 1] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 40 [paras[1], 2] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 41 [detachedPara1, 0] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 42 [detachedPara1, 1] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 43 [testDiv, 0] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 44 [testDiv, 3] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 45 [document, -1] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 46 [document, 0] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 47 [document, 1] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 48 [document, 2] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 49 [document, 3] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 50 [comment, -1] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 51 [comment, 0] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 52 [comment, 4] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 53 [comment, 96] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 54 [foreignDoc, 0] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 55 [foreignDoc, 1] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 56 [foreignComment, 2] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 59 [xmlDoc, -1] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 60 [xmlDoc, 0] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 61 [xmlDoc, 1] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 62 [xmlDoc, 5] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 63 [xmlComment, 0] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 64 [xmlComment, 4] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 65 [processingInstruction, 0] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 66 [processingInstruction, 5] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 67 [processingInstruction, 9] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 75 [detachedComment, 3] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 76 [detachedComment, 5] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 80 [docfrag, 0] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 83 [doctype, 0] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 84 [doctype, -17] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 85 [doctype, 1] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 11 [document.documentElement, 0, document.documentElement, 2], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 24 [document.documentElement, -1] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 25 [document.documentElement, 0] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 26 [document.documentElement, 1] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 27 [document.documentElement, 2] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 28 [document.documentElement, 7] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 29 [document.head, 1] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 30 [document.body, 3] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 35 [paras[0], 0] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 36 [paras[0], 1] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 37 [paras[0], 2] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 38 [paras[1], 0] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 39 [paras[1], 1] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 40 [paras[1], 2] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 41 [detachedPara1, 0] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 42 [detachedPara1, 1] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 43 [testDiv, 0] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 44 [testDiv, 3] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 45 [document, -1] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 46 [document, 0] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 47 [document, 1] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 48 [document, 2] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 49 [document, 3] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 50 [comment, -1] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 51 [comment, 0] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 52 [comment, 4] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 53 [comment, 96] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 54 [foreignDoc, 0] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 55 [foreignDoc, 1] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 56 [foreignComment, 2] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 59 [xmlDoc, -1] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 60 [xmlDoc, 0] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 61 [xmlDoc, 1] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 62 [xmlDoc, 5] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 63 [xmlComment, 0] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 64 [xmlComment, 4] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 65 [processingInstruction, 0] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 66 [processingInstruction, 5] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 67 [processingInstruction, 9] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 75 [detachedComment, 3] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 76 [detachedComment, 5] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 80 [docfrag, 0] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 83 [doctype, 0] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 84 [doctype, -17] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 85 [doctype, 1] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 12 [document.documentElement, 1, document.documentElement, 2], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 24 [document.documentElement, -1] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 25 [document.documentElement, 0] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 26 [document.documentElement, 1] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 27 [document.documentElement, 2] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 28 [document.documentElement, 7] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 29 [document.head, 1] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 30 [document.body, 3] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 35 [paras[0], 0] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 36 [paras[0], 1] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 37 [paras[0], 2] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 38 [paras[1], 0] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 39 [paras[1], 1] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 40 [paras[1], 2] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 41 [detachedPara1, 0] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 42 [detachedPara1, 1] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 43 [testDiv, 0] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 44 [testDiv, 3] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 45 [document, -1] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 46 [document, 0] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 47 [document, 1] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 48 [document, 2] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 49 [document, 3] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 50 [comment, -1] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 51 [comment, 0] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 52 [comment, 4] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 53 [comment, 96] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 54 [foreignDoc, 0] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 55 [foreignDoc, 1] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 56 [foreignComment, 2] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 59 [xmlDoc, -1] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 60 [xmlDoc, 0] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 61 [xmlDoc, 1] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 62 [xmlDoc, 5] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 63 [xmlComment, 0] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 64 [xmlComment, 4] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 65 [processingInstruction, 0] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 66 [processingInstruction, 5] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 67 [processingInstruction, 9] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 75 [detachedComment, 3] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 76 [detachedComment, 5] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 80 [docfrag, 0] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 83 [doctype, 0] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 84 [doctype, -17] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 85 [doctype, 1] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 13 [document.head, 1, document.head, 1], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 24 [document.documentElement, -1] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 25 [document.documentElement, 0] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 26 [document.documentElement, 1] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 27 [document.documentElement, 2] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 28 [document.documentElement, 7] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 29 [document.head, 1] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 30 [document.body, 3] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 35 [paras[0], 0] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 36 [paras[0], 1] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 37 [paras[0], 2] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 38 [paras[1], 0] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 39 [paras[1], 1] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 40 [paras[1], 2] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 41 [detachedPara1, 0] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 42 [detachedPara1, 1] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 43 [testDiv, 0] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 44 [testDiv, 3] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 45 [document, -1] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 46 [document, 0] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 47 [document, 1] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 48 [document, 2] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 49 [document, 3] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 50 [comment, -1] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 51 [comment, 0] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 52 [comment, 4] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 53 [comment, 96] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 54 [foreignDoc, 0] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 55 [foreignDoc, 1] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 56 [foreignComment, 2] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 59 [xmlDoc, -1] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 60 [xmlDoc, 0] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 61 [xmlDoc, 1] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 62 [xmlDoc, 5] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 63 [xmlComment, 0] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 64 [xmlComment, 4] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 65 [processingInstruction, 0] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 66 [processingInstruction, 5] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 67 [processingInstruction, 9] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 75 [detachedComment, 3] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 76 [detachedComment, 5] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 80 [docfrag, 0] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 83 [doctype, 0] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 84 [doctype, -17] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 85 [doctype, 1] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 14 [document.body, 4, document.body, 5], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 24 [document.documentElement, -1] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 25 [document.documentElement, 0] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 26 [document.documentElement, 1] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 27 [document.documentElement, 2] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 28 [document.documentElement, 7] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 29 [document.head, 1] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 30 [document.body, 3] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 35 [paras[0], 0] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 36 [paras[0], 1] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 37 [paras[0], 2] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 38 [paras[1], 0] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 39 [paras[1], 1] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 40 [paras[1], 2] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 41 [detachedPara1, 0] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 42 [detachedPara1, 1] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 43 [testDiv, 0] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 44 [testDiv, 3] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 45 [document, -1] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 46 [document, 0] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 47 [document, 1] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 48 [document, 2] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 49 [document, 3] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 50 [comment, -1] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 51 [comment, 0] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 52 [comment, 4] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 53 [comment, 96] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 54 [foreignDoc, 0] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 55 [foreignDoc, 1] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 56 [foreignComment, 2] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 59 [xmlDoc, -1] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 60 [xmlDoc, 0] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 61 [xmlDoc, 1] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 62 [xmlDoc, 5] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 63 [xmlComment, 0] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 64 [xmlComment, 4] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 65 [processingInstruction, 0] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 66 [processingInstruction, 5] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 67 [processingInstruction, 9] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 75 [detachedComment, 3] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 76 [detachedComment, 5] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 80 [docfrag, 0] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 83 [doctype, 0] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 84 [doctype, -17] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 85 [doctype, 1] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 24 [document.documentElement, -1] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 25 [document.documentElement, 0] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 26 [document.documentElement, 1] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 27 [document.documentElement, 2] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 28 [document.documentElement, 7] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 29 [document.head, 1] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 30 [document.body, 3] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 35 [paras[0], 0] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 36 [paras[0], 1] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 37 [paras[0], 2] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 38 [paras[1], 0] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 39 [paras[1], 1] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 40 [paras[1], 2] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 41 [detachedPara1, 0] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 42 [detachedPara1, 1] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 43 [testDiv, 0] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 44 [testDiv, 3] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 45 [document, -1] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 46 [document, 0] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 47 [document, 1] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 48 [document, 2] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 49 [document, 3] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 50 [comment, -1] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 51 [comment, 0] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 52 [comment, 4] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 53 [comment, 96] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 54 [foreignDoc, 0] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 55 [foreignDoc, 1] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 56 [foreignComment, 2] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 59 [xmlDoc, -1] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 60 [xmlDoc, 0] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 61 [xmlDoc, 1] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 62 [xmlDoc, 5] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 63 [xmlComment, 0] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 64 [xmlComment, 4] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 65 [processingInstruction, 0] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 66 [processingInstruction, 5] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 67 [processingInstruction, 9] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 75 [detachedComment, 3] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 76 [detachedComment, 5] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 80 [docfrag, 0] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 83 [doctype, 0] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 84 [doctype, -17] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 85 [doctype, 1] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 16 [paras[0], 0, paras[0], 1], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 24 [document.documentElement, -1] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 25 [document.documentElement, 0] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 26 [document.documentElement, 1] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 27 [document.documentElement, 2] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 28 [document.documentElement, 7] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 29 [document.head, 1] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 30 [document.body, 3] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 35 [paras[0], 0] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 36 [paras[0], 1] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 37 [paras[0], 2] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 38 [paras[1], 0] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 39 [paras[1], 1] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 40 [paras[1], 2] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 41 [detachedPara1, 0] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 42 [detachedPara1, 1] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 43 [testDiv, 0] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 44 [testDiv, 3] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 45 [document, -1] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 46 [document, 0] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 47 [document, 1] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 48 [document, 2] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 49 [document, 3] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 50 [comment, -1] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 51 [comment, 0] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 52 [comment, 4] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 53 [comment, 96] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 54 [foreignDoc, 0] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 55 [foreignDoc, 1] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 56 [foreignComment, 2] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 59 [xmlDoc, -1] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 60 [xmlDoc, 0] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 61 [xmlDoc, 1] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 62 [xmlDoc, 5] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 63 [xmlComment, 0] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 64 [xmlComment, 4] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 65 [processingInstruction, 0] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 66 [processingInstruction, 5] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 67 [processingInstruction, 9] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 75 [detachedComment, 3] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 76 [detachedComment, 5] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 80 [docfrag, 0] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 83 [doctype, 0] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 84 [doctype, -17] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 85 [doctype, 1] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 17 [detachedPara1, 0, detachedPara1, 1], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 24 [document.documentElement, -1] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 25 [document.documentElement, 0] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 26 [document.documentElement, 1] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 27 [document.documentElement, 2] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 28 [document.documentElement, 7] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 29 [document.head, 1] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 30 [document.body, 3] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 35 [paras[0], 0] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 36 [paras[0], 1] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 37 [paras[0], 2] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 38 [paras[1], 0] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 39 [paras[1], 1] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 40 [paras[1], 2] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 41 [detachedPara1, 0] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 42 [detachedPara1, 1] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 43 [testDiv, 0] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 44 [testDiv, 3] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 45 [document, -1] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 46 [document, 0] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 47 [document, 1] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 48 [document, 2] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 49 [document, 3] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 50 [comment, -1] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 51 [comment, 0] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 52 [comment, 4] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 53 [comment, 96] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 54 [foreignDoc, 0] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 55 [foreignDoc, 1] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 56 [foreignComment, 2] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 59 [xmlDoc, -1] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 60 [xmlDoc, 0] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 61 [xmlDoc, 1] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 62 [xmlDoc, 5] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 63 [xmlComment, 0] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 64 [xmlComment, 4] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 65 [processingInstruction, 0] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 66 [processingInstruction, 5] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 67 [processingInstruction, 9] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 75 [detachedComment, 3] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 76 [detachedComment, 5] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 80 [docfrag, 0] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 83 [doctype, 0] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 84 [doctype, -17] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 85 [doctype, 1] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 24 [document.documentElement, -1] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 25 [document.documentElement, 0] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 26 [document.documentElement, 1] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 27 [document.documentElement, 2] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 28 [document.documentElement, 7] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 29 [document.head, 1] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 30 [document.body, 3] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 35 [paras[0], 0] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 36 [paras[0], 1] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 37 [paras[0], 2] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 38 [paras[1], 0] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 39 [paras[1], 1] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 40 [paras[1], 2] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 41 [detachedPara1, 0] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 42 [detachedPara1, 1] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 43 [testDiv, 0] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 44 [testDiv, 3] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 45 [document, -1] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 46 [document, 0] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 47 [document, 1] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 48 [document, 2] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 49 [document, 3] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 50 [comment, -1] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 51 [comment, 0] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 52 [comment, 4] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 53 [comment, 96] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 54 [foreignDoc, 0] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 55 [foreignDoc, 1] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 56 [foreignComment, 2] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 59 [xmlDoc, -1] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 60 [xmlDoc, 0] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 61 [xmlDoc, 1] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 62 [xmlDoc, 5] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 63 [xmlComment, 0] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 64 [xmlComment, 4] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 65 [processingInstruction, 0] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 66 [processingInstruction, 5] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 67 [processingInstruction, 9] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 75 [detachedComment, 3] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 76 [detachedComment, 5] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 80 [docfrag, 0] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 83 [doctype, 0] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 84 [doctype, -17] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 85 [doctype, 1] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 24 [document.documentElement, -1] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 25 [document.documentElement, 0] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 26 [document.documentElement, 1] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 27 [document.documentElement, 2] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 28 [document.documentElement, 7] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 29 [document.head, 1] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 30 [document.body, 3] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 35 [paras[0], 0] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 36 [paras[0], 1] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 37 [paras[0], 2] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 38 [paras[1], 0] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 39 [paras[1], 1] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 40 [paras[1], 2] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 41 [detachedPara1, 0] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 42 [detachedPara1, 1] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 43 [testDiv, 0] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 44 [testDiv, 3] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 45 [document, -1] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 46 [document, 0] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 47 [document, 1] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 48 [document, 2] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 49 [document, 3] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 50 [comment, -1] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 51 [comment, 0] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 52 [comment, 4] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 53 [comment, 96] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 54 [foreignDoc, 0] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 55 [foreignDoc, 1] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 56 [foreignComment, 2] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 59 [xmlDoc, -1] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 60 [xmlDoc, 0] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 61 [xmlDoc, 1] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 62 [xmlDoc, 5] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 63 [xmlComment, 0] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 64 [xmlComment, 4] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 65 [processingInstruction, 0] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 66 [processingInstruction, 5] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 67 [processingInstruction, 9] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 75 [detachedComment, 3] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 76 [detachedComment, 5] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 80 [docfrag, 0] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 83 [doctype, 0] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 84 [doctype, -17] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 85 [doctype, 1] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 24 [document.documentElement, -1] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 25 [document.documentElement, 0] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 26 [document.documentElement, 1] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 27 [document.documentElement, 2] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 28 [document.documentElement, 7] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 29 [document.head, 1] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 30 [document.body, 3] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 35 [paras[0], 0] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 36 [paras[0], 1] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 37 [paras[0], 2] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 38 [paras[1], 0] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 39 [paras[1], 1] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 40 [paras[1], 2] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 41 [detachedPara1, 0] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 42 [detachedPara1, 1] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 43 [testDiv, 0] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 44 [testDiv, 3] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 45 [document, -1] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 46 [document, 0] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 47 [document, 1] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 48 [document, 2] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 49 [document, 3] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 50 [comment, -1] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 51 [comment, 0] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 52 [comment, 4] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 53 [comment, 96] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 54 [foreignDoc, 0] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 55 [foreignDoc, 1] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 56 [foreignComment, 2] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 59 [xmlDoc, -1] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 60 [xmlDoc, 0] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 61 [xmlDoc, 1] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 62 [xmlDoc, 5] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 63 [xmlComment, 0] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 64 [xmlComment, 4] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 65 [processingInstruction, 0] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 66 [processingInstruction, 5] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 67 [processingInstruction, 9] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 75 [detachedComment, 3] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 76 [detachedComment, 5] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 80 [docfrag, 0] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 83 [doctype, 0] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 84 [doctype, -17] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 85 [doctype, 1] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 24 [document.documentElement, -1] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 25 [document.documentElement, 0] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 26 [document.documentElement, 1] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 27 [document.documentElement, 2] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 28 [document.documentElement, 7] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 29 [document.head, 1] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 30 [document.body, 3] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 35 [paras[0], 0] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 36 [paras[0], 1] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 37 [paras[0], 2] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 38 [paras[1], 0] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 39 [paras[1], 1] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 40 [paras[1], 2] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 41 [detachedPara1, 0] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 42 [detachedPara1, 1] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 43 [testDiv, 0] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 44 [testDiv, 3] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 45 [document, -1] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 46 [document, 0] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 47 [document, 1] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 48 [document, 2] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 49 [document, 3] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 50 [comment, -1] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 51 [comment, 0] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 52 [comment, 4] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 53 [comment, 96] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 54 [foreignDoc, 0] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 55 [foreignDoc, 1] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 56 [foreignComment, 2] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 59 [xmlDoc, -1] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 60 [xmlDoc, 0] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 61 [xmlDoc, 1] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 62 [xmlDoc, 5] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 63 [xmlComment, 0] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 64 [xmlComment, 4] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 65 [processingInstruction, 0] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 66 [processingInstruction, 5] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 67 [processingInstruction, 9] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 75 [detachedComment, 3] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 76 [detachedComment, 5] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 80 [docfrag, 0] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 83 [doctype, 0] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 84 [doctype, -17] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 85 [doctype, 1] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 22 [testDiv, 2, paras[4], 1], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 23 [document, 0, document, 1], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 23 [document, 0, document, 1], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 23 [document, 0, document, 1], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 23 [document, 0, document, 1], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 23 [document, 0, document, 1], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 23 [document, 0, document, 1], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 23 [document, 0, document, 1], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 23 [document, 0, document, 1], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 23 [document, 0, document, 1], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 23 [document, 0, document, 1], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 23 [document, 0, document, 1], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 23 [document, 0, document, 1], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 23 [document, 0, document, 1], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 23 [document, 0, document, 1], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 23 [document, 0, document, 1], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 23 [document, 0, document, 1], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 23 [document, 0, document, 1], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 23 [document, 0, document, 1], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 23 [document, 0, document, 1], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 23 [document, 0, document, 1], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 23 [document, 0, document, 1], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 23 [document, 0, document, 1], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 23 [document, 0, document, 1], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 23 [document, 0, document, 1], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 23 [document, 0, document, 1], point 24 [document.documentElement, -1] 
+PASS setStart() with range 23 [document, 0, document, 1], point 25 [document.documentElement, 0] 
+PASS setStart() with range 23 [document, 0, document, 1], point 26 [document.documentElement, 1] 
+PASS setStart() with range 23 [document, 0, document, 1], point 27 [document.documentElement, 2] 
+PASS setStart() with range 23 [document, 0, document, 1], point 28 [document.documentElement, 7] 
+PASS setStart() with range 23 [document, 0, document, 1], point 29 [document.head, 1] 
+PASS setStart() with range 23 [document, 0, document, 1], point 30 [document.body, 3] 
+PASS setStart() with range 23 [document, 0, document, 1], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 23 [document, 0, document, 1], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 23 [document, 0, document, 1], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 23 [document, 0, document, 1], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 23 [document, 0, document, 1], point 35 [paras[0], 0] 
+PASS setStart() with range 23 [document, 0, document, 1], point 36 [paras[0], 1] 
+PASS setStart() with range 23 [document, 0, document, 1], point 37 [paras[0], 2] 
+PASS setStart() with range 23 [document, 0, document, 1], point 38 [paras[1], 0] 
+PASS setStart() with range 23 [document, 0, document, 1], point 39 [paras[1], 1] 
+PASS setStart() with range 23 [document, 0, document, 1], point 40 [paras[1], 2] 
+PASS setStart() with range 23 [document, 0, document, 1], point 41 [detachedPara1, 0] 
+PASS setStart() with range 23 [document, 0, document, 1], point 42 [detachedPara1, 1] 
+PASS setStart() with range 23 [document, 0, document, 1], point 43 [testDiv, 0] 
+PASS setStart() with range 23 [document, 0, document, 1], point 44 [testDiv, 3] 
+PASS setStart() with range 23 [document, 0, document, 1], point 45 [document, -1] 
+PASS setStart() with range 23 [document, 0, document, 1], point 46 [document, 0] 
+PASS setStart() with range 23 [document, 0, document, 1], point 47 [document, 1] 
+PASS setStart() with range 23 [document, 0, document, 1], point 48 [document, 2] 
+PASS setStart() with range 23 [document, 0, document, 1], point 49 [document, 3] 
+PASS setStart() with range 23 [document, 0, document, 1], point 50 [comment, -1] 
+PASS setStart() with range 23 [document, 0, document, 1], point 51 [comment, 0] 
+PASS setStart() with range 23 [document, 0, document, 1], point 52 [comment, 4] 
+PASS setStart() with range 23 [document, 0, document, 1], point 53 [comment, 96] 
+PASS setStart() with range 23 [document, 0, document, 1], point 54 [foreignDoc, 0] 
+PASS setStart() with range 23 [document, 0, document, 1], point 55 [foreignDoc, 1] 
+PASS setStart() with range 23 [document, 0, document, 1], point 56 [foreignComment, 2] 
+PASS setStart() with range 23 [document, 0, document, 1], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 23 [document, 0, document, 1], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 23 [document, 0, document, 1], point 59 [xmlDoc, -1] 
+PASS setStart() with range 23 [document, 0, document, 1], point 60 [xmlDoc, 0] 
+PASS setStart() with range 23 [document, 0, document, 1], point 61 [xmlDoc, 1] 
+PASS setStart() with range 23 [document, 0, document, 1], point 62 [xmlDoc, 5] 
+PASS setStart() with range 23 [document, 0, document, 1], point 63 [xmlComment, 0] 
+PASS setStart() with range 23 [document, 0, document, 1], point 64 [xmlComment, 4] 
+PASS setStart() with range 23 [document, 0, document, 1], point 65 [processingInstruction, 0] 
+PASS setStart() with range 23 [document, 0, document, 1], point 66 [processingInstruction, 5] 
+PASS setStart() with range 23 [document, 0, document, 1], point 67 [processingInstruction, 9] 
+PASS setStart() with range 23 [document, 0, document, 1], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 23 [document, 0, document, 1], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 23 [document, 0, document, 1], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 23 [document, 0, document, 1], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 23 [document, 0, document, 1], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 23 [document, 0, document, 1], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 23 [document, 0, document, 1], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 23 [document, 0, document, 1], point 75 [detachedComment, 3] 
+PASS setStart() with range 23 [document, 0, document, 1], point 76 [detachedComment, 5] 
+PASS setStart() with range 23 [document, 0, document, 1], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 23 [document, 0, document, 1], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 23 [document, 0, document, 1], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 23 [document, 0, document, 1], point 80 [docfrag, 0] 
+PASS setStart() with range 23 [document, 0, document, 1], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 23 [document, 0, document, 1], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 23 [document, 0, document, 1], point 83 [doctype, 0] 
+PASS setStart() with range 23 [document, 0, document, 1], point 84 [doctype, -17] 
+PASS setStart() with range 23 [document, 0, document, 1], point 85 [doctype, 1] 
+PASS setStart() with range 23 [document, 0, document, 1], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 23 [document, 0, document, 1], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 24 [document, 0, document, 2], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 24 [document, 0, document, 2], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 24 [document, 0, document, 2], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 24 [document, 0, document, 2], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 24 [document, 0, document, 2], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 24 [document, 0, document, 2], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 24 [document, 0, document, 2], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 24 [document, 0, document, 2], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 24 [document, 0, document, 2], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 24 [document, 0, document, 2], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 24 [document, 0, document, 2], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 24 [document, 0, document, 2], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 24 [document, 0, document, 2], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 24 [document, 0, document, 2], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 24 [document, 0, document, 2], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 24 [document, 0, document, 2], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 24 [document, 0, document, 2], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 24 [document, 0, document, 2], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 24 [document, 0, document, 2], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 24 [document, 0, document, 2], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 24 [document, 0, document, 2], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 24 [document, 0, document, 2], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 24 [document, 0, document, 2], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 24 [document, 0, document, 2], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 24 [document, 0, document, 2], point 24 [document.documentElement, -1] 
+PASS setStart() with range 24 [document, 0, document, 2], point 25 [document.documentElement, 0] 
+PASS setStart() with range 24 [document, 0, document, 2], point 26 [document.documentElement, 1] 
+PASS setStart() with range 24 [document, 0, document, 2], point 27 [document.documentElement, 2] 
+PASS setStart() with range 24 [document, 0, document, 2], point 28 [document.documentElement, 7] 
+PASS setStart() with range 24 [document, 0, document, 2], point 29 [document.head, 1] 
+PASS setStart() with range 24 [document, 0, document, 2], point 30 [document.body, 3] 
+PASS setStart() with range 24 [document, 0, document, 2], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 24 [document, 0, document, 2], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 24 [document, 0, document, 2], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 24 [document, 0, document, 2], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 24 [document, 0, document, 2], point 35 [paras[0], 0] 
+PASS setStart() with range 24 [document, 0, document, 2], point 36 [paras[0], 1] 
+PASS setStart() with range 24 [document, 0, document, 2], point 37 [paras[0], 2] 
+PASS setStart() with range 24 [document, 0, document, 2], point 38 [paras[1], 0] 
+PASS setStart() with range 24 [document, 0, document, 2], point 39 [paras[1], 1] 
+PASS setStart() with range 24 [document, 0, document, 2], point 40 [paras[1], 2] 
+PASS setStart() with range 24 [document, 0, document, 2], point 41 [detachedPara1, 0] 
+PASS setStart() with range 24 [document, 0, document, 2], point 42 [detachedPara1, 1] 
+PASS setStart() with range 24 [document, 0, document, 2], point 43 [testDiv, 0] 
+PASS setStart() with range 24 [document, 0, document, 2], point 44 [testDiv, 3] 
+PASS setStart() with range 24 [document, 0, document, 2], point 45 [document, -1] 
+PASS setStart() with range 24 [document, 0, document, 2], point 46 [document, 0] 
+PASS setStart() with range 24 [document, 0, document, 2], point 47 [document, 1] 
+PASS setStart() with range 24 [document, 0, document, 2], point 48 [document, 2] 
+PASS setStart() with range 24 [document, 0, document, 2], point 49 [document, 3] 
+PASS setStart() with range 24 [document, 0, document, 2], point 50 [comment, -1] 
+PASS setStart() with range 24 [document, 0, document, 2], point 51 [comment, 0] 
+PASS setStart() with range 24 [document, 0, document, 2], point 52 [comment, 4] 
+PASS setStart() with range 24 [document, 0, document, 2], point 53 [comment, 96] 
+PASS setStart() with range 24 [document, 0, document, 2], point 54 [foreignDoc, 0] 
+PASS setStart() with range 24 [document, 0, document, 2], point 55 [foreignDoc, 1] 
+PASS setStart() with range 24 [document, 0, document, 2], point 56 [foreignComment, 2] 
+PASS setStart() with range 24 [document, 0, document, 2], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 24 [document, 0, document, 2], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 24 [document, 0, document, 2], point 59 [xmlDoc, -1] 
+PASS setStart() with range 24 [document, 0, document, 2], point 60 [xmlDoc, 0] 
+PASS setStart() with range 24 [document, 0, document, 2], point 61 [xmlDoc, 1] 
+PASS setStart() with range 24 [document, 0, document, 2], point 62 [xmlDoc, 5] 
+PASS setStart() with range 24 [document, 0, document, 2], point 63 [xmlComment, 0] 
+PASS setStart() with range 24 [document, 0, document, 2], point 64 [xmlComment, 4] 
+PASS setStart() with range 24 [document, 0, document, 2], point 65 [processingInstruction, 0] 
+PASS setStart() with range 24 [document, 0, document, 2], point 66 [processingInstruction, 5] 
+PASS setStart() with range 24 [document, 0, document, 2], point 67 [processingInstruction, 9] 
+PASS setStart() with range 24 [document, 0, document, 2], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 24 [document, 0, document, 2], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 24 [document, 0, document, 2], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 24 [document, 0, document, 2], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 24 [document, 0, document, 2], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 24 [document, 0, document, 2], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 24 [document, 0, document, 2], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 24 [document, 0, document, 2], point 75 [detachedComment, 3] 
+PASS setStart() with range 24 [document, 0, document, 2], point 76 [detachedComment, 5] 
+PASS setStart() with range 24 [document, 0, document, 2], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 24 [document, 0, document, 2], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 24 [document, 0, document, 2], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 24 [document, 0, document, 2], point 80 [docfrag, 0] 
+PASS setStart() with range 24 [document, 0, document, 2], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 24 [document, 0, document, 2], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 24 [document, 0, document, 2], point 83 [doctype, 0] 
+PASS setStart() with range 24 [document, 0, document, 2], point 84 [doctype, -17] 
+PASS setStart() with range 24 [document, 0, document, 2], point 85 [doctype, 1] 
+PASS setStart() with range 24 [document, 0, document, 2], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 24 [document, 0, document, 2], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 24 [document.documentElement, -1] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 25 [document.documentElement, 0] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 26 [document.documentElement, 1] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 27 [document.documentElement, 2] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 28 [document.documentElement, 7] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 29 [document.head, 1] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 30 [document.body, 3] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 35 [paras[0], 0] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 36 [paras[0], 1] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 37 [paras[0], 2] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 38 [paras[1], 0] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 39 [paras[1], 1] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 40 [paras[1], 2] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 41 [detachedPara1, 0] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 42 [detachedPara1, 1] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 43 [testDiv, 0] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 44 [testDiv, 3] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 45 [document, -1] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 46 [document, 0] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 47 [document, 1] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 48 [document, 2] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 49 [document, 3] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 50 [comment, -1] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 51 [comment, 0] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 52 [comment, 4] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 53 [comment, 96] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 54 [foreignDoc, 0] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 55 [foreignDoc, 1] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 56 [foreignComment, 2] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 59 [xmlDoc, -1] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 60 [xmlDoc, 0] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 61 [xmlDoc, 1] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 62 [xmlDoc, 5] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 63 [xmlComment, 0] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 64 [xmlComment, 4] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 65 [processingInstruction, 0] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 66 [processingInstruction, 5] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 67 [processingInstruction, 9] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 75 [detachedComment, 3] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 76 [detachedComment, 5] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 80 [docfrag, 0] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 83 [doctype, 0] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 84 [doctype, -17] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 85 [doctype, 1] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 25 [comment, 2, comment, 3], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 24 [document.documentElement, -1] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 25 [document.documentElement, 0] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 26 [document.documentElement, 1] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 27 [document.documentElement, 2] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 28 [document.documentElement, 7] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 29 [document.head, 1] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 30 [document.body, 3] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 35 [paras[0], 0] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 36 [paras[0], 1] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 37 [paras[0], 2] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 38 [paras[1], 0] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 39 [paras[1], 1] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 40 [paras[1], 2] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 41 [detachedPara1, 0] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 42 [detachedPara1, 1] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 43 [testDiv, 0] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 44 [testDiv, 3] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 45 [document, -1] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 46 [document, 0] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 47 [document, 1] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 48 [document, 2] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 49 [document, 3] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 50 [comment, -1] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 51 [comment, 0] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 52 [comment, 4] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 53 [comment, 96] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 54 [foreignDoc, 0] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 55 [foreignDoc, 1] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 56 [foreignComment, 2] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 59 [xmlDoc, -1] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 60 [xmlDoc, 0] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 61 [xmlDoc, 1] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 62 [xmlDoc, 5] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 63 [xmlComment, 0] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 64 [xmlComment, 4] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 65 [processingInstruction, 0] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 66 [processingInstruction, 5] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 67 [processingInstruction, 9] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 75 [detachedComment, 3] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 76 [detachedComment, 5] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 80 [docfrag, 0] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 83 [doctype, 0] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 84 [doctype, -17] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 85 [doctype, 1] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 26 [testDiv, 0, comment, 5], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 24 [document.documentElement, -1] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 25 [document.documentElement, 0] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 26 [document.documentElement, 1] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 27 [document.documentElement, 2] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 28 [document.documentElement, 7] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 29 [document.head, 1] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 30 [document.body, 3] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 35 [paras[0], 0] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 36 [paras[0], 1] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 37 [paras[0], 2] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 38 [paras[1], 0] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 39 [paras[1], 1] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 40 [paras[1], 2] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 41 [detachedPara1, 0] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 42 [detachedPara1, 1] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 43 [testDiv, 0] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 44 [testDiv, 3] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 45 [document, -1] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 46 [document, 0] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 47 [document, 1] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 48 [document, 2] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 49 [document, 3] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 50 [comment, -1] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 51 [comment, 0] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 52 [comment, 4] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 53 [comment, 96] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 54 [foreignDoc, 0] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 55 [foreignDoc, 1] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 56 [foreignComment, 2] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 59 [xmlDoc, -1] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 60 [xmlDoc, 0] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 61 [xmlDoc, 1] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 62 [xmlDoc, 5] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 63 [xmlComment, 0] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 64 [xmlComment, 4] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 65 [processingInstruction, 0] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 66 [processingInstruction, 5] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 67 [processingInstruction, 9] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 75 [detachedComment, 3] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 76 [detachedComment, 5] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 80 [docfrag, 0] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 83 [doctype, 0] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 84 [doctype, -17] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 85 [doctype, 1] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 27 [foreignDoc, 1, foreignComment, 2], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 24 [document.documentElement, -1] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 25 [document.documentElement, 0] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 26 [document.documentElement, 1] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 27 [document.documentElement, 2] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 28 [document.documentElement, 7] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 29 [document.head, 1] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 30 [document.body, 3] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 35 [paras[0], 0] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 36 [paras[0], 1] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 37 [paras[0], 2] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 38 [paras[1], 0] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 39 [paras[1], 1] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 40 [paras[1], 2] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 41 [detachedPara1, 0] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 42 [detachedPara1, 1] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 43 [testDiv, 0] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 44 [testDiv, 3] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 45 [document, -1] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 46 [document, 0] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 47 [document, 1] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 48 [document, 2] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 49 [document, 3] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 50 [comment, -1] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 51 [comment, 0] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 52 [comment, 4] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 53 [comment, 96] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 54 [foreignDoc, 0] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 55 [foreignDoc, 1] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 56 [foreignComment, 2] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 59 [xmlDoc, -1] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 60 [xmlDoc, 0] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 61 [xmlDoc, 1] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 62 [xmlDoc, 5] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 63 [xmlComment, 0] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 64 [xmlComment, 4] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 65 [processingInstruction, 0] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 66 [processingInstruction, 5] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 67 [processingInstruction, 9] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 75 [detachedComment, 3] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 76 [detachedComment, 5] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 80 [docfrag, 0] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 83 [doctype, 0] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 84 [doctype, -17] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 85 [doctype, 1] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 24 [document.documentElement, -1] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 25 [document.documentElement, 0] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 26 [document.documentElement, 1] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 27 [document.documentElement, 2] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 28 [document.documentElement, 7] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 29 [document.head, 1] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 30 [document.body, 3] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 35 [paras[0], 0] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 36 [paras[0], 1] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 37 [paras[0], 2] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 38 [paras[1], 0] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 39 [paras[1], 1] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 40 [paras[1], 2] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 41 [detachedPara1, 0] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 42 [detachedPara1, 1] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 43 [testDiv, 0] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 44 [testDiv, 3] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 45 [document, -1] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 46 [document, 0] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 47 [document, 1] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 48 [document, 2] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 49 [document, 3] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 50 [comment, -1] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 51 [comment, 0] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 52 [comment, 4] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 53 [comment, 96] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 54 [foreignDoc, 0] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 55 [foreignDoc, 1] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 56 [foreignComment, 2] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 59 [xmlDoc, -1] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 60 [xmlDoc, 0] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 61 [xmlDoc, 1] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 62 [xmlDoc, 5] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 63 [xmlComment, 0] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 64 [xmlComment, 4] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 65 [processingInstruction, 0] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 66 [processingInstruction, 5] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 67 [processingInstruction, 9] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 75 [detachedComment, 3] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 76 [detachedComment, 5] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 80 [docfrag, 0] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 83 [doctype, 0] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 84 [doctype, -17] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 85 [doctype, 1] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 29 [xmlDoc, 1, xmlComment, 0], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 24 [document.documentElement, -1] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 25 [document.documentElement, 0] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 26 [document.documentElement, 1] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 27 [document.documentElement, 2] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 28 [document.documentElement, 7] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 29 [document.head, 1] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 30 [document.body, 3] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 35 [paras[0], 0] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 36 [paras[0], 1] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 37 [paras[0], 2] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 38 [paras[1], 0] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 39 [paras[1], 1] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 40 [paras[1], 2] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 41 [detachedPara1, 0] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 42 [detachedPara1, 1] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 43 [testDiv, 0] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 44 [testDiv, 3] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 45 [document, -1] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 46 [document, 0] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 47 [document, 1] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 48 [document, 2] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 49 [document, 3] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 50 [comment, -1] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 51 [comment, 0] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 52 [comment, 4] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 53 [comment, 96] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 54 [foreignDoc, 0] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 55 [foreignDoc, 1] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 56 [foreignComment, 2] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 59 [xmlDoc, -1] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 60 [xmlDoc, 0] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 61 [xmlDoc, 1] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 62 [xmlDoc, 5] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 63 [xmlComment, 0] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 64 [xmlComment, 4] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 65 [processingInstruction, 0] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 66 [processingInstruction, 5] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 67 [processingInstruction, 9] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 75 [detachedComment, 3] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 76 [detachedComment, 5] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 80 [docfrag, 0] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 83 [doctype, 0] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 84 [doctype, -17] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 85 [doctype, 1] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 24 [document.documentElement, -1] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 25 [document.documentElement, 0] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 26 [document.documentElement, 1] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 27 [document.documentElement, 2] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 28 [document.documentElement, 7] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 29 [document.head, 1] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 30 [document.body, 3] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 35 [paras[0], 0] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 36 [paras[0], 1] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 37 [paras[0], 2] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 38 [paras[1], 0] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 39 [paras[1], 1] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 40 [paras[1], 2] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 41 [detachedPara1, 0] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 42 [detachedPara1, 1] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 43 [testDiv, 0] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 44 [testDiv, 3] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 45 [document, -1] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 46 [document, 0] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 47 [document, 1] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 48 [document, 2] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 49 [document, 3] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 50 [comment, -1] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 51 [comment, 0] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 52 [comment, 4] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 53 [comment, 96] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 54 [foreignDoc, 0] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 55 [foreignDoc, 1] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 56 [foreignComment, 2] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 59 [xmlDoc, -1] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 60 [xmlDoc, 0] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 61 [xmlDoc, 1] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 62 [xmlDoc, 5] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 63 [xmlComment, 0] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 64 [xmlComment, 4] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 65 [processingInstruction, 0] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 66 [processingInstruction, 5] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 67 [processingInstruction, 9] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 75 [detachedComment, 3] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 76 [detachedComment, 5] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 80 [docfrag, 0] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 83 [doctype, 0] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 84 [doctype, -17] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 85 [doctype, 1] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 24 [document.documentElement, -1] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 25 [document.documentElement, 0] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 26 [document.documentElement, 1] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 27 [document.documentElement, 2] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 28 [document.documentElement, 7] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 29 [document.head, 1] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 30 [document.body, 3] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 35 [paras[0], 0] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 36 [paras[0], 1] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 37 [paras[0], 2] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 38 [paras[1], 0] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 39 [paras[1], 1] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 40 [paras[1], 2] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 41 [detachedPara1, 0] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 42 [detachedPara1, 1] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 43 [testDiv, 0] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 44 [testDiv, 3] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 45 [document, -1] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 46 [document, 0] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 47 [document, 1] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 48 [document, 2] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 49 [document, 3] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 50 [comment, -1] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 51 [comment, 0] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 52 [comment, 4] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 53 [comment, 96] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 54 [foreignDoc, 0] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 55 [foreignDoc, 1] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 56 [foreignComment, 2] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 59 [xmlDoc, -1] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 60 [xmlDoc, 0] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 61 [xmlDoc, 1] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 62 [xmlDoc, 5] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 63 [xmlComment, 0] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 64 [xmlComment, 4] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 65 [processingInstruction, 0] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 66 [processingInstruction, 5] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 67 [processingInstruction, 9] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 75 [detachedComment, 3] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 76 [detachedComment, 5] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 80 [docfrag, 0] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 83 [doctype, 0] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 84 [doctype, -17] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 85 [doctype, 1] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 24 [document.documentElement, -1] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 25 [document.documentElement, 0] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 26 [document.documentElement, 1] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 27 [document.documentElement, 2] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 28 [document.documentElement, 7] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 29 [document.head, 1] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 30 [document.body, 3] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 35 [paras[0], 0] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 36 [paras[0], 1] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 37 [paras[0], 2] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 38 [paras[1], 0] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 39 [paras[1], 1] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 40 [paras[1], 2] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 41 [detachedPara1, 0] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 42 [detachedPara1, 1] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 43 [testDiv, 0] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 44 [testDiv, 3] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 45 [document, -1] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 46 [document, 0] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 47 [document, 1] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 48 [document, 2] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 49 [document, 3] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 50 [comment, -1] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 51 [comment, 0] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 52 [comment, 4] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 53 [comment, 96] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 54 [foreignDoc, 0] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 55 [foreignDoc, 1] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 56 [foreignComment, 2] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 59 [xmlDoc, -1] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 60 [xmlDoc, 0] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 61 [xmlDoc, 1] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 62 [xmlDoc, 5] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 63 [xmlComment, 0] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 64 [xmlComment, 4] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 65 [processingInstruction, 0] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 66 [processingInstruction, 5] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 67 [processingInstruction, 9] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 75 [detachedComment, 3] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 76 [detachedComment, 5] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 80 [docfrag, 0] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 83 [doctype, 0] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 84 [doctype, -17] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 85 [doctype, 1] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 33 [detachedComment, 3, detachedComment, 4], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 24 [document.documentElement, -1] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 25 [document.documentElement, 0] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 26 [document.documentElement, 1] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 27 [document.documentElement, 2] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 28 [document.documentElement, 7] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 29 [document.head, 1] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 30 [document.body, 3] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 35 [paras[0], 0] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 36 [paras[0], 1] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 37 [paras[0], 2] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 38 [paras[1], 0] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 39 [paras[1], 1] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 40 [paras[1], 2] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 41 [detachedPara1, 0] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 42 [detachedPara1, 1] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 43 [testDiv, 0] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 44 [testDiv, 3] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 45 [document, -1] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 46 [document, 0] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 47 [document, 1] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 48 [document, 2] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 49 [document, 3] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 50 [comment, -1] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 51 [comment, 0] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 52 [comment, 4] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 53 [comment, 96] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 54 [foreignDoc, 0] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 55 [foreignDoc, 1] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 56 [foreignComment, 2] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 59 [xmlDoc, -1] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 60 [xmlDoc, 0] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 61 [xmlDoc, 1] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 62 [xmlDoc, 5] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 63 [xmlComment, 0] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 64 [xmlComment, 4] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 65 [processingInstruction, 0] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 66 [processingInstruction, 5] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 67 [processingInstruction, 9] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 75 [detachedComment, 3] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 76 [detachedComment, 5] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 80 [docfrag, 0] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 83 [doctype, 0] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 84 [doctype, -17] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 85 [doctype, 1] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 24 [document.documentElement, -1] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 25 [document.documentElement, 0] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 26 [document.documentElement, 1] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 27 [document.documentElement, 2] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 28 [document.documentElement, 7] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 29 [document.head, 1] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 30 [document.body, 3] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 35 [paras[0], 0] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 36 [paras[0], 1] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 37 [paras[0], 2] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 38 [paras[1], 0] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 39 [paras[1], 1] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 40 [paras[1], 2] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 41 [detachedPara1, 0] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 42 [detachedPara1, 1] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 43 [testDiv, 0] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 44 [testDiv, 3] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 45 [document, -1] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 46 [document, 0] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 47 [document, 1] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 48 [document, 2] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 49 [document, 3] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 50 [comment, -1] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 51 [comment, 0] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 52 [comment, 4] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 53 [comment, 96] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 54 [foreignDoc, 0] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 55 [foreignDoc, 1] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 56 [foreignComment, 2] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 59 [xmlDoc, -1] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 60 [xmlDoc, 0] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 61 [xmlDoc, 1] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 62 [xmlDoc, 5] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 63 [xmlComment, 0] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 64 [xmlComment, 4] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 65 [processingInstruction, 0] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 66 [processingInstruction, 5] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 67 [processingInstruction, 9] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 75 [detachedComment, 3] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 76 [detachedComment, 5] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 80 [docfrag, 0] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 83 [doctype, 0] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 84 [doctype, -17] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 85 [doctype, 1] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 24 [document.documentElement, -1] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 25 [document.documentElement, 0] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 26 [document.documentElement, 1] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 27 [document.documentElement, 2] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 28 [document.documentElement, 7] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 29 [document.head, 1] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 30 [document.body, 3] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 35 [paras[0], 0] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 36 [paras[0], 1] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 37 [paras[0], 2] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 38 [paras[1], 0] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 39 [paras[1], 1] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 40 [paras[1], 2] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 41 [detachedPara1, 0] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 42 [detachedPara1, 1] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 43 [testDiv, 0] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 44 [testDiv, 3] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 45 [document, -1] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 46 [document, 0] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 47 [document, 1] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 48 [document, 2] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 49 [document, 3] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 50 [comment, -1] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 51 [comment, 0] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 52 [comment, 4] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 53 [comment, 96] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 54 [foreignDoc, 0] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 55 [foreignDoc, 1] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 56 [foreignComment, 2] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 59 [xmlDoc, -1] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 60 [xmlDoc, 0] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 61 [xmlDoc, 1] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 62 [xmlDoc, 5] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 63 [xmlComment, 0] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 64 [xmlComment, 4] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 65 [processingInstruction, 0] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 66 [processingInstruction, 5] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 67 [processingInstruction, 9] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 75 [detachedComment, 3] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 76 [detachedComment, 5] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 80 [docfrag, 0] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 83 [doctype, 0] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 84 [doctype, -17] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 85 [doctype, 1] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 36 [docfrag, 0, docfrag, 0], point 87 [xmlDoctype, 0] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 0 [paras[0].firstChild, -1] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 1 [paras[0].firstChild, 0] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 2 [paras[0].firstChild, 1] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 3 [paras[0].firstChild, 2] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 4 [paras[0].firstChild, 8] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 5 [paras[0].firstChild, 9] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 6 [paras[0].firstChild, 10] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 7 [paras[0].firstChild, 65535] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 8 [paras[1].firstChild, -1] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 9 [paras[1].firstChild, 0] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 10 [paras[1].firstChild, 1] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 11 [paras[1].firstChild, 2] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 12 [paras[1].firstChild, 8] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 13 [paras[1].firstChild, 9] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 14 [paras[1].firstChild, 10] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 15 [paras[1].firstChild, 65535] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 16 [detachedPara1.firstChild, 0] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 17 [detachedPara1.firstChild, 1] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 18 [detachedPara1.firstChild, 8] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 19 [detachedPara1.firstChild, 9] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 20 [foreignPara1.firstChild, 0] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 21 [foreignPara1.firstChild, 1] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 22 [foreignPara1.firstChild, 8] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 23 [foreignPara1.firstChild, 9] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 24 [document.documentElement, -1] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 25 [document.documentElement, 0] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 26 [document.documentElement, 1] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 27 [document.documentElement, 2] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 28 [document.documentElement, 7] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 29 [document.head, 1] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 30 [document.body, 3] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 31 [foreignDoc.documentElement, 0] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 32 [foreignDoc.documentElement, 1] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 33 [foreignDoc.head, 0] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 34 [foreignDoc.body, 1] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 35 [paras[0], 0] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 36 [paras[0], 1] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 37 [paras[0], 2] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 38 [paras[1], 0] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 39 [paras[1], 1] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 40 [paras[1], 2] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 41 [detachedPara1, 0] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 42 [detachedPara1, 1] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 43 [testDiv, 0] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 44 [testDiv, 3] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 45 [document, -1] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 46 [document, 0] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 47 [document, 1] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 48 [document, 2] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 49 [document, 3] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 50 [comment, -1] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 51 [comment, 0] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 52 [comment, 4] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 53 [comment, 96] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 54 [foreignDoc, 0] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 55 [foreignDoc, 1] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 56 [foreignComment, 2] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 57 [foreignTextNode, 0] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 58 [foreignTextNode, 36] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 59 [xmlDoc, -1] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 60 [xmlDoc, 0] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 61 [xmlDoc, 1] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 62 [xmlDoc, 5] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 63 [xmlComment, 0] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 64 [xmlComment, 4] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 65 [processingInstruction, 0] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 66 [processingInstruction, 5] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 67 [processingInstruction, 9] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 68 [detachedTextNode, 0] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 69 [detachedTextNode, 8] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 70 [detachedForeignTextNode, 0] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 71 [detachedForeignTextNode, 8] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 72 [detachedXmlTextNode, 0] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 73 [detachedXmlTextNode, 8] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 74 [detachedProcessingInstruction, 12] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 75 [detachedComment, 3] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 76 [detachedComment, 5] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 77 [detachedForeignComment, 0] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 78 [detachedForeignComment, 4] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 79 [detachedXmlComment, 2] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 80 [docfrag, 0] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 81 [foreignDocfrag, 0] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 82 [xmlDocfrag, 0] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 83 [doctype, 0] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 84 [doctype, -17] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 85 [doctype, 1] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 86 [foreignDoctype, 0] 
+PASS setStart() with range 37 [processingInstruction, 0, processingInstruction, 4], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 29 [document.head, 1] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 30 [document.body, 3] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 35 [paras[0], 0] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 36 [paras[0], 1] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 37 [paras[0], 2] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 38 [paras[1], 0] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 39 [paras[1], 1] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 40 [paras[1], 2] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 43 [testDiv, 0] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 44 [testDiv, 3] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 45 [document, -1] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 46 [document, 0] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 47 [document, 1] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 48 [document, 2] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 49 [document, 3] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 50 [comment, -1] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 51 [comment, 0] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 52 [comment, 4] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 53 [comment, 96] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 56 [foreignComment, 2] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 63 [xmlComment, 0] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 64 [xmlComment, 4] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 75 [detachedComment, 3] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 76 [detachedComment, 5] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 80 [docfrag, 0] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 83 [doctype, 0] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 84 [doctype, -17] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 85 [doctype, 1] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 29 [document.head, 1] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 30 [document.body, 3] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 35 [paras[0], 0] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 36 [paras[0], 1] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 37 [paras[0], 2] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 38 [paras[1], 0] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 39 [paras[1], 1] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 40 [paras[1], 2] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 43 [testDiv, 0] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 44 [testDiv, 3] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 45 [document, -1] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 46 [document, 0] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 47 [document, 1] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 48 [document, 2] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 49 [document, 3] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 50 [comment, -1] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 51 [comment, 0] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 52 [comment, 4] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 53 [comment, 96] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 56 [foreignComment, 2] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 63 [xmlComment, 0] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 64 [xmlComment, 4] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 75 [detachedComment, 3] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 76 [detachedComment, 5] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 80 [docfrag, 0] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 83 [doctype, 0] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 84 [doctype, -17] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 85 [doctype, 1] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 29 [document.head, 1] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 30 [document.body, 3] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 35 [paras[0], 0] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 36 [paras[0], 1] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 37 [paras[0], 2] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 38 [paras[1], 0] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 39 [paras[1], 1] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 40 [paras[1], 2] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 43 [testDiv, 0] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 44 [testDiv, 3] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 45 [document, -1] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 46 [document, 0] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 47 [document, 1] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 48 [document, 2] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 49 [document, 3] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 50 [comment, -1] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 51 [comment, 0] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 52 [comment, 4] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 53 [comment, 96] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 56 [foreignComment, 2] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 63 [xmlComment, 0] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 64 [xmlComment, 4] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 75 [detachedComment, 3] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 76 [detachedComment, 5] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 80 [docfrag, 0] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 83 [doctype, 0] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 84 [doctype, -17] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 85 [doctype, 1] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 29 [document.head, 1] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 30 [document.body, 3] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 35 [paras[0], 0] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 36 [paras[0], 1] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 37 [paras[0], 2] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 38 [paras[1], 0] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 39 [paras[1], 1] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 40 [paras[1], 2] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 43 [testDiv, 0] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 44 [testDiv, 3] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 45 [document, -1] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 46 [document, 0] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 47 [document, 1] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 48 [document, 2] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 49 [document, 3] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 50 [comment, -1] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 51 [comment, 0] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 52 [comment, 4] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 53 [comment, 96] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 56 [foreignComment, 2] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 63 [xmlComment, 0] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 64 [xmlComment, 4] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 75 [detachedComment, 3] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 76 [detachedComment, 5] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 80 [docfrag, 0] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 83 [doctype, 0] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 84 [doctype, -17] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 85 [doctype, 1] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 29 [document.head, 1] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 30 [document.body, 3] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 35 [paras[0], 0] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 36 [paras[0], 1] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 37 [paras[0], 2] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 38 [paras[1], 0] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 39 [paras[1], 1] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 40 [paras[1], 2] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 43 [testDiv, 0] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 44 [testDiv, 3] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 45 [document, -1] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 46 [document, 0] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 47 [document, 1] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 48 [document, 2] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 49 [document, 3] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 50 [comment, -1] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 51 [comment, 0] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 52 [comment, 4] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 53 [comment, 96] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 56 [foreignComment, 2] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 63 [xmlComment, 0] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 64 [xmlComment, 4] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 75 [detachedComment, 3] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 76 [detachedComment, 5] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 80 [docfrag, 0] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 83 [doctype, 0] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 84 [doctype, -17] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 85 [doctype, 1] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 29 [document.head, 1] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 30 [document.body, 3] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 35 [paras[0], 0] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 36 [paras[0], 1] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 37 [paras[0], 2] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 38 [paras[1], 0] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 39 [paras[1], 1] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 40 [paras[1], 2] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 43 [testDiv, 0] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 44 [testDiv, 3] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 45 [document, -1] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 46 [document, 0] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 47 [document, 1] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 48 [document, 2] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 49 [document, 3] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 50 [comment, -1] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 51 [comment, 0] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 52 [comment, 4] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 53 [comment, 96] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 56 [foreignComment, 2] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 63 [xmlComment, 0] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 64 [xmlComment, 4] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 75 [detachedComment, 3] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 76 [detachedComment, 5] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 80 [docfrag, 0] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 83 [doctype, 0] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 84 [doctype, -17] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 85 [doctype, 1] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 29 [document.head, 1] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 30 [document.body, 3] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 35 [paras[0], 0] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 36 [paras[0], 1] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 37 [paras[0], 2] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 38 [paras[1], 0] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 39 [paras[1], 1] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 40 [paras[1], 2] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 43 [testDiv, 0] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 44 [testDiv, 3] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 45 [document, -1] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 46 [document, 0] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 47 [document, 1] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 48 [document, 2] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 49 [document, 3] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 50 [comment, -1] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 51 [comment, 0] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 52 [comment, 4] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 53 [comment, 96] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 56 [foreignComment, 2] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 63 [xmlComment, 0] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 64 [xmlComment, 4] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 75 [detachedComment, 3] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 76 [detachedComment, 5] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 80 [docfrag, 0] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 83 [doctype, 0] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 84 [doctype, -17] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 85 [doctype, 1] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 29 [document.head, 1] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 30 [document.body, 3] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 35 [paras[0], 0] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 36 [paras[0], 1] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 37 [paras[0], 2] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 38 [paras[1], 0] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 39 [paras[1], 1] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 40 [paras[1], 2] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 43 [testDiv, 0] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 44 [testDiv, 3] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 45 [document, -1] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 46 [document, 0] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 47 [document, 1] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 48 [document, 2] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 49 [document, 3] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 50 [comment, -1] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 51 [comment, 0] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 52 [comment, 4] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 53 [comment, 96] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 56 [foreignComment, 2] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 63 [xmlComment, 0] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 64 [xmlComment, 4] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 75 [detachedComment, 3] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 76 [detachedComment, 5] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 80 [docfrag, 0] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 83 [doctype, 0] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 84 [doctype, -17] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 85 [doctype, 1] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 29 [document.head, 1] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 30 [document.body, 3] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 35 [paras[0], 0] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 36 [paras[0], 1] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 37 [paras[0], 2] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 38 [paras[1], 0] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 39 [paras[1], 1] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 40 [paras[1], 2] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 43 [testDiv, 0] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 44 [testDiv, 3] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 45 [document, -1] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 46 [document, 0] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 47 [document, 1] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 48 [document, 2] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 49 [document, 3] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 50 [comment, -1] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 51 [comment, 0] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 52 [comment, 4] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 53 [comment, 96] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 56 [foreignComment, 2] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 63 [xmlComment, 0] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 64 [xmlComment, 4] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 75 [detachedComment, 3] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 76 [detachedComment, 5] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 80 [docfrag, 0] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 83 [doctype, 0] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 84 [doctype, -17] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 85 [doctype, 1] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 29 [document.head, 1] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 30 [document.body, 3] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 35 [paras[0], 0] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 36 [paras[0], 1] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 37 [paras[0], 2] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 38 [paras[1], 0] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 39 [paras[1], 1] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 40 [paras[1], 2] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 43 [testDiv, 0] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 44 [testDiv, 3] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 45 [document, -1] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 46 [document, 0] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 47 [document, 1] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 48 [document, 2] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 49 [document, 3] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 50 [comment, -1] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 51 [comment, 0] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 52 [comment, 4] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 53 [comment, 96] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 56 [foreignComment, 2] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 63 [xmlComment, 0] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 64 [xmlComment, 4] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 75 [detachedComment, 3] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 76 [detachedComment, 5] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 80 [docfrag, 0] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 83 [doctype, 0] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 84 [doctype, -17] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 85 [doctype, 1] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 29 [document.head, 1] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 30 [document.body, 3] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 35 [paras[0], 0] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 36 [paras[0], 1] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 37 [paras[0], 2] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 38 [paras[1], 0] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 39 [paras[1], 1] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 40 [paras[1], 2] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 43 [testDiv, 0] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 44 [testDiv, 3] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 45 [document, -1] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 46 [document, 0] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 47 [document, 1] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 48 [document, 2] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 49 [document, 3] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 50 [comment, -1] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 51 [comment, 0] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 52 [comment, 4] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 53 [comment, 96] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 56 [foreignComment, 2] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 63 [xmlComment, 0] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 64 [xmlComment, 4] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 75 [detachedComment, 3] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 76 [detachedComment, 5] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 80 [docfrag, 0] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 83 [doctype, 0] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 84 [doctype, -17] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 85 [doctype, 1] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 10 [document.documentElement, 0, document.documentElement, 1], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 29 [document.head, 1] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 30 [document.body, 3] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 35 [paras[0], 0] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 36 [paras[0], 1] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 37 [paras[0], 2] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 38 [paras[1], 0] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 39 [paras[1], 1] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 40 [paras[1], 2] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 43 [testDiv, 0] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 44 [testDiv, 3] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 45 [document, -1] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 46 [document, 0] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 47 [document, 1] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 48 [document, 2] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 49 [document, 3] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 50 [comment, -1] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 51 [comment, 0] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 52 [comment, 4] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 53 [comment, 96] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 56 [foreignComment, 2] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 63 [xmlComment, 0] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 64 [xmlComment, 4] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 75 [detachedComment, 3] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 76 [detachedComment, 5] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 80 [docfrag, 0] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 83 [doctype, 0] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 84 [doctype, -17] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 85 [doctype, 1] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 11 [document.documentElement, 0, document.documentElement, 2], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 29 [document.head, 1] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 30 [document.body, 3] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 35 [paras[0], 0] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 36 [paras[0], 1] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 37 [paras[0], 2] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 38 [paras[1], 0] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 39 [paras[1], 1] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 40 [paras[1], 2] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 43 [testDiv, 0] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 44 [testDiv, 3] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 45 [document, -1] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 46 [document, 0] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 47 [document, 1] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 48 [document, 2] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 49 [document, 3] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 50 [comment, -1] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 51 [comment, 0] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 52 [comment, 4] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 53 [comment, 96] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 56 [foreignComment, 2] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 63 [xmlComment, 0] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 64 [xmlComment, 4] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 75 [detachedComment, 3] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 76 [detachedComment, 5] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 80 [docfrag, 0] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 83 [doctype, 0] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 84 [doctype, -17] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 85 [doctype, 1] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 12 [document.documentElement, 1, document.documentElement, 2], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 29 [document.head, 1] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 30 [document.body, 3] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 35 [paras[0], 0] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 36 [paras[0], 1] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 37 [paras[0], 2] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 38 [paras[1], 0] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 39 [paras[1], 1] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 40 [paras[1], 2] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 43 [testDiv, 0] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 44 [testDiv, 3] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 45 [document, -1] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 46 [document, 0] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 47 [document, 1] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 48 [document, 2] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 49 [document, 3] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 50 [comment, -1] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 51 [comment, 0] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 52 [comment, 4] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 53 [comment, 96] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 56 [foreignComment, 2] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 63 [xmlComment, 0] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 64 [xmlComment, 4] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 75 [detachedComment, 3] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 76 [detachedComment, 5] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 80 [docfrag, 0] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 83 [doctype, 0] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 84 [doctype, -17] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 85 [doctype, 1] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 13 [document.head, 1, document.head, 1], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 29 [document.head, 1] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 30 [document.body, 3] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 35 [paras[0], 0] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 36 [paras[0], 1] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 37 [paras[0], 2] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 38 [paras[1], 0] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 39 [paras[1], 1] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 40 [paras[1], 2] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 43 [testDiv, 0] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 44 [testDiv, 3] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 45 [document, -1] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 46 [document, 0] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 47 [document, 1] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 48 [document, 2] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 49 [document, 3] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 50 [comment, -1] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 51 [comment, 0] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 52 [comment, 4] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 53 [comment, 96] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 56 [foreignComment, 2] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 63 [xmlComment, 0] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 64 [xmlComment, 4] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 75 [detachedComment, 3] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 76 [detachedComment, 5] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 80 [docfrag, 0] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 83 [doctype, 0] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 84 [doctype, -17] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 85 [doctype, 1] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 14 [document.body, 4, document.body, 5], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 29 [document.head, 1] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 30 [document.body, 3] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 35 [paras[0], 0] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 36 [paras[0], 1] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 37 [paras[0], 2] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 38 [paras[1], 0] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 39 [paras[1], 1] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 40 [paras[1], 2] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 43 [testDiv, 0] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 44 [testDiv, 3] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 45 [document, -1] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 46 [document, 0] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 47 [document, 1] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 48 [document, 2] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 49 [document, 3] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 50 [comment, -1] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 51 [comment, 0] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 52 [comment, 4] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 53 [comment, 96] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 56 [foreignComment, 2] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 63 [xmlComment, 0] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 64 [xmlComment, 4] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 75 [detachedComment, 3] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 76 [detachedComment, 5] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 80 [docfrag, 0] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 83 [doctype, 0] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 84 [doctype, -17] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 85 [doctype, 1] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 29 [document.head, 1] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 30 [document.body, 3] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 35 [paras[0], 0] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 36 [paras[0], 1] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 37 [paras[0], 2] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 38 [paras[1], 0] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 39 [paras[1], 1] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 40 [paras[1], 2] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 43 [testDiv, 0] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 44 [testDiv, 3] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 45 [document, -1] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 46 [document, 0] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 47 [document, 1] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 48 [document, 2] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 49 [document, 3] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 50 [comment, -1] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 51 [comment, 0] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 52 [comment, 4] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 53 [comment, 96] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 56 [foreignComment, 2] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 63 [xmlComment, 0] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 64 [xmlComment, 4] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 75 [detachedComment, 3] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 76 [detachedComment, 5] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 80 [docfrag, 0] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 83 [doctype, 0] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 84 [doctype, -17] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 85 [doctype, 1] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 16 [paras[0], 0, paras[0], 1], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 29 [document.head, 1] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 30 [document.body, 3] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 35 [paras[0], 0] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 36 [paras[0], 1] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 37 [paras[0], 2] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 38 [paras[1], 0] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 39 [paras[1], 1] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 40 [paras[1], 2] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 43 [testDiv, 0] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 44 [testDiv, 3] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 45 [document, -1] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 46 [document, 0] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 47 [document, 1] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 48 [document, 2] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 49 [document, 3] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 50 [comment, -1] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 51 [comment, 0] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 52 [comment, 4] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 53 [comment, 96] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 56 [foreignComment, 2] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 63 [xmlComment, 0] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 64 [xmlComment, 4] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 75 [detachedComment, 3] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 76 [detachedComment, 5] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 80 [docfrag, 0] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 83 [doctype, 0] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 84 [doctype, -17] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 85 [doctype, 1] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 17 [detachedPara1, 0, detachedPara1, 1], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 29 [document.head, 1] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 30 [document.body, 3] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 35 [paras[0], 0] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 36 [paras[0], 1] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 37 [paras[0], 2] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 38 [paras[1], 0] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 39 [paras[1], 1] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 40 [paras[1], 2] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 43 [testDiv, 0] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 44 [testDiv, 3] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 45 [document, -1] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 46 [document, 0] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 47 [document, 1] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 48 [document, 2] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 49 [document, 3] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 50 [comment, -1] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 51 [comment, 0] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 52 [comment, 4] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 53 [comment, 96] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 56 [foreignComment, 2] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 63 [xmlComment, 0] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 64 [xmlComment, 4] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 75 [detachedComment, 3] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 76 [detachedComment, 5] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 80 [docfrag, 0] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 83 [doctype, 0] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 84 [doctype, -17] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 85 [doctype, 1] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 29 [document.head, 1] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 30 [document.body, 3] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 35 [paras[0], 0] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 36 [paras[0], 1] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 37 [paras[0], 2] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 38 [paras[1], 0] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 39 [paras[1], 1] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 40 [paras[1], 2] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 43 [testDiv, 0] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 44 [testDiv, 3] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 45 [document, -1] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 46 [document, 0] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 47 [document, 1] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 48 [document, 2] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 49 [document, 3] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 50 [comment, -1] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 51 [comment, 0] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 52 [comment, 4] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 53 [comment, 96] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 56 [foreignComment, 2] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 63 [xmlComment, 0] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 64 [xmlComment, 4] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 75 [detachedComment, 3] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 76 [detachedComment, 5] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 80 [docfrag, 0] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 83 [doctype, 0] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 84 [doctype, -17] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 85 [doctype, 1] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 29 [document.head, 1] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 30 [document.body, 3] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 35 [paras[0], 0] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 36 [paras[0], 1] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 37 [paras[0], 2] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 38 [paras[1], 0] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 39 [paras[1], 1] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 40 [paras[1], 2] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 43 [testDiv, 0] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 44 [testDiv, 3] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 45 [document, -1] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 46 [document, 0] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 47 [document, 1] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 48 [document, 2] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 49 [document, 3] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 50 [comment, -1] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 51 [comment, 0] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 52 [comment, 4] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 53 [comment, 96] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 56 [foreignComment, 2] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 63 [xmlComment, 0] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 64 [xmlComment, 4] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 75 [detachedComment, 3] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 76 [detachedComment, 5] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 80 [docfrag, 0] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 83 [doctype, 0] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 84 [doctype, -17] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 85 [doctype, 1] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 20 [paras[0].firstChild, 3, paras[3], 1], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 29 [document.head, 1] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 30 [document.body, 3] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 35 [paras[0], 0] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 36 [paras[0], 1] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 37 [paras[0], 2] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 38 [paras[1], 0] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 39 [paras[1], 1] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 40 [paras[1], 2] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 43 [testDiv, 0] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 44 [testDiv, 3] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 45 [document, -1] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 46 [document, 0] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 47 [document, 1] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 48 [document, 2] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 49 [document, 3] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 50 [comment, -1] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 51 [comment, 0] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 52 [comment, 4] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 53 [comment, 96] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 56 [foreignComment, 2] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 63 [xmlComment, 0] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 64 [xmlComment, 4] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 75 [detachedComment, 3] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 76 [detachedComment, 5] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 80 [docfrag, 0] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 83 [doctype, 0] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 84 [doctype, -17] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 85 [doctype, 1] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 21 [paras[0], 0, paras[0].firstChild, 7], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 29 [document.head, 1] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 30 [document.body, 3] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 35 [paras[0], 0] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 36 [paras[0], 1] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 37 [paras[0], 2] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 38 [paras[1], 0] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 39 [paras[1], 1] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 40 [paras[1], 2] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 43 [testDiv, 0] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 44 [testDiv, 3] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 45 [document, -1] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 46 [document, 0] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 47 [document, 1] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 48 [document, 2] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 49 [document, 3] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 50 [comment, -1] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 51 [comment, 0] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 52 [comment, 4] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 53 [comment, 96] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 56 [foreignComment, 2] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 63 [xmlComment, 0] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 64 [xmlComment, 4] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 75 [detachedComment, 3] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 76 [detachedComment, 5] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 80 [docfrag, 0] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 83 [doctype, 0] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 84 [doctype, -17] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 85 [doctype, 1] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 22 [testDiv, 2, paras[4], 1], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 29 [document.head, 1] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 30 [document.body, 3] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 35 [paras[0], 0] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 36 [paras[0], 1] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 37 [paras[0], 2] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 38 [paras[1], 0] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 39 [paras[1], 1] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 40 [paras[1], 2] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 43 [testDiv, 0] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 44 [testDiv, 3] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 45 [document, -1] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 46 [document, 0] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 47 [document, 1] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 48 [document, 2] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 49 [document, 3] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 50 [comment, -1] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 51 [comment, 0] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 52 [comment, 4] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 53 [comment, 96] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 56 [foreignComment, 2] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 63 [xmlComment, 0] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 64 [xmlComment, 4] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 75 [detachedComment, 3] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 76 [detachedComment, 5] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 80 [docfrag, 0] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 83 [doctype, 0] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 84 [doctype, -17] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 85 [doctype, 1] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 23 [document, 0, document, 1], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 29 [document.head, 1] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 30 [document.body, 3] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 35 [paras[0], 0] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 36 [paras[0], 1] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 37 [paras[0], 2] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 38 [paras[1], 0] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 39 [paras[1], 1] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 40 [paras[1], 2] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 43 [testDiv, 0] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 44 [testDiv, 3] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 45 [document, -1] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 46 [document, 0] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 47 [document, 1] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 48 [document, 2] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 49 [document, 3] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 50 [comment, -1] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 51 [comment, 0] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 52 [comment, 4] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 53 [comment, 96] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 56 [foreignComment, 2] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 63 [xmlComment, 0] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 64 [xmlComment, 4] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 75 [detachedComment, 3] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 76 [detachedComment, 5] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 80 [docfrag, 0] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 83 [doctype, 0] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 84 [doctype, -17] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 85 [doctype, 1] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 24 [document, 0, document, 2], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 29 [document.head, 1] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 30 [document.body, 3] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 35 [paras[0], 0] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 36 [paras[0], 1] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 37 [paras[0], 2] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 38 [paras[1], 0] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 39 [paras[1], 1] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 40 [paras[1], 2] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 43 [testDiv, 0] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 44 [testDiv, 3] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 45 [document, -1] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 46 [document, 0] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 47 [document, 1] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 48 [document, 2] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 49 [document, 3] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 50 [comment, -1] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 51 [comment, 0] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 52 [comment, 4] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 53 [comment, 96] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 56 [foreignComment, 2] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 63 [xmlComment, 0] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 64 [xmlComment, 4] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 75 [detachedComment, 3] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 76 [detachedComment, 5] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 80 [docfrag, 0] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 83 [doctype, 0] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 84 [doctype, -17] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 85 [doctype, 1] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 25 [comment, 2, comment, 3], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 29 [document.head, 1] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 30 [document.body, 3] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 35 [paras[0], 0] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 36 [paras[0], 1] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 37 [paras[0], 2] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 38 [paras[1], 0] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 39 [paras[1], 1] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 40 [paras[1], 2] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 43 [testDiv, 0] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 44 [testDiv, 3] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 45 [document, -1] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 46 [document, 0] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 47 [document, 1] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 48 [document, 2] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 49 [document, 3] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 50 [comment, -1] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 51 [comment, 0] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 52 [comment, 4] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 53 [comment, 96] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 56 [foreignComment, 2] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 63 [xmlComment, 0] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 64 [xmlComment, 4] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 75 [detachedComment, 3] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 76 [detachedComment, 5] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 80 [docfrag, 0] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 83 [doctype, 0] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 84 [doctype, -17] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 85 [doctype, 1] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 26 [testDiv, 0, comment, 5], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 29 [document.head, 1] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 30 [document.body, 3] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 35 [paras[0], 0] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 36 [paras[0], 1] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 37 [paras[0], 2] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 38 [paras[1], 0] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 39 [paras[1], 1] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 40 [paras[1], 2] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 43 [testDiv, 0] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 44 [testDiv, 3] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 45 [document, -1] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 46 [document, 0] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 47 [document, 1] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 48 [document, 2] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 49 [document, 3] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 50 [comment, -1] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 51 [comment, 0] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 52 [comment, 4] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 53 [comment, 96] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 56 [foreignComment, 2] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 63 [xmlComment, 0] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 64 [xmlComment, 4] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 75 [detachedComment, 3] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 76 [detachedComment, 5] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 80 [docfrag, 0] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 83 [doctype, 0] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 84 [doctype, -17] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 85 [doctype, 1] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 27 [foreignDoc, 1, foreignComment, 2], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 29 [document.head, 1] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 30 [document.body, 3] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 35 [paras[0], 0] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 36 [paras[0], 1] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 37 [paras[0], 2] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 38 [paras[1], 0] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 39 [paras[1], 1] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 40 [paras[1], 2] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 43 [testDiv, 0] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 44 [testDiv, 3] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 45 [document, -1] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 46 [document, 0] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 47 [document, 1] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 48 [document, 2] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 49 [document, 3] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 50 [comment, -1] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 51 [comment, 0] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 52 [comment, 4] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 53 [comment, 96] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 56 [foreignComment, 2] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 63 [xmlComment, 0] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 64 [xmlComment, 4] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 75 [detachedComment, 3] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 76 [detachedComment, 5] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 80 [docfrag, 0] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 83 [doctype, 0] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 84 [doctype, -17] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 85 [doctype, 1] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 29 [document.head, 1] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 30 [document.body, 3] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 35 [paras[0], 0] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 36 [paras[0], 1] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 37 [paras[0], 2] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 38 [paras[1], 0] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 39 [paras[1], 1] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 40 [paras[1], 2] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 43 [testDiv, 0] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 44 [testDiv, 3] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 45 [document, -1] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 46 [document, 0] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 47 [document, 1] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 48 [document, 2] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 49 [document, 3] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 50 [comment, -1] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 51 [comment, 0] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 52 [comment, 4] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 53 [comment, 96] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 56 [foreignComment, 2] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 63 [xmlComment, 0] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 64 [xmlComment, 4] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 75 [detachedComment, 3] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 76 [detachedComment, 5] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 80 [docfrag, 0] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 83 [doctype, 0] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 84 [doctype, -17] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 85 [doctype, 1] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 29 [xmlDoc, 1, xmlComment, 0], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 29 [document.head, 1] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 30 [document.body, 3] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 35 [paras[0], 0] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 36 [paras[0], 1] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 37 [paras[0], 2] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 38 [paras[1], 0] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 39 [paras[1], 1] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 40 [paras[1], 2] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 43 [testDiv, 0] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 44 [testDiv, 3] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 45 [document, -1] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 46 [document, 0] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 47 [document, 1] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 48 [document, 2] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 49 [document, 3] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 50 [comment, -1] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 51 [comment, 0] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 52 [comment, 4] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 53 [comment, 96] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 56 [foreignComment, 2] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 63 [xmlComment, 0] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 64 [xmlComment, 4] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 75 [detachedComment, 3] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 76 [detachedComment, 5] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 80 [docfrag, 0] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 83 [doctype, 0] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 84 [doctype, -17] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 85 [doctype, 1] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 30 [detachedTextNode, 0, detachedTextNode, 8], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 29 [document.head, 1] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 30 [document.body, 3] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 35 [paras[0], 0] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 36 [paras[0], 1] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 37 [paras[0], 2] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 38 [paras[1], 0] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 39 [paras[1], 1] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 40 [paras[1], 2] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 43 [testDiv, 0] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 44 [testDiv, 3] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 45 [document, -1] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 46 [document, 0] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 47 [document, 1] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 48 [document, 2] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 49 [document, 3] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 50 [comment, -1] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 51 [comment, 0] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 52 [comment, 4] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 53 [comment, 96] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 56 [foreignComment, 2] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 63 [xmlComment, 0] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 64 [xmlComment, 4] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 75 [detachedComment, 3] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 76 [detachedComment, 5] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 80 [docfrag, 0] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 83 [doctype, 0] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 84 [doctype, -17] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 85 [doctype, 1] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 29 [document.head, 1] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 30 [document.body, 3] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 35 [paras[0], 0] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 36 [paras[0], 1] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 37 [paras[0], 2] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 38 [paras[1], 0] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 39 [paras[1], 1] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 40 [paras[1], 2] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 43 [testDiv, 0] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 44 [testDiv, 3] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 45 [document, -1] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 46 [document, 0] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 47 [document, 1] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 48 [document, 2] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 49 [document, 3] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 50 [comment, -1] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 51 [comment, 0] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 52 [comment, 4] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 53 [comment, 96] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 56 [foreignComment, 2] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 63 [xmlComment, 0] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 64 [xmlComment, 4] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 75 [detachedComment, 3] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 76 [detachedComment, 5] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 80 [docfrag, 0] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 83 [doctype, 0] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 84 [doctype, -17] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 85 [doctype, 1] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 29 [document.head, 1] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 30 [document.body, 3] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 35 [paras[0], 0] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 36 [paras[0], 1] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 37 [paras[0], 2] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 38 [paras[1], 0] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 39 [paras[1], 1] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 40 [paras[1], 2] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 43 [testDiv, 0] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 44 [testDiv, 3] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 45 [document, -1] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 46 [document, 0] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 47 [document, 1] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 48 [document, 2] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 49 [document, 3] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 50 [comment, -1] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 51 [comment, 0] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 52 [comment, 4] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 53 [comment, 96] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 56 [foreignComment, 2] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 63 [xmlComment, 0] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 64 [xmlComment, 4] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 75 [detachedComment, 3] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 76 [detachedComment, 5] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 80 [docfrag, 0] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 83 [doctype, 0] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 84 [doctype, -17] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 85 [doctype, 1] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 33 [detachedComment, 3, detachedComment, 4], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 29 [document.head, 1] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 30 [document.body, 3] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 35 [paras[0], 0] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 36 [paras[0], 1] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 37 [paras[0], 2] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 38 [paras[1], 0] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 39 [paras[1], 1] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 40 [paras[1], 2] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 43 [testDiv, 0] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 44 [testDiv, 3] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 45 [document, -1] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 46 [document, 0] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 47 [document, 1] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 48 [document, 2] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 49 [document, 3] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 50 [comment, -1] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 51 [comment, 0] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 52 [comment, 4] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 53 [comment, 96] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 56 [foreignComment, 2] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 63 [xmlComment, 0] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 64 [xmlComment, 4] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 75 [detachedComment, 3] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 76 [detachedComment, 5] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 80 [docfrag, 0] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 83 [doctype, 0] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 84 [doctype, -17] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 85 [doctype, 1] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 29 [document.head, 1] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 30 [document.body, 3] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 35 [paras[0], 0] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 36 [paras[0], 1] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 37 [paras[0], 2] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 38 [paras[1], 0] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 39 [paras[1], 1] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 40 [paras[1], 2] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 43 [testDiv, 0] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 44 [testDiv, 3] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 45 [document, -1] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 46 [document, 0] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 47 [document, 1] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 48 [document, 2] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 49 [document, 3] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 50 [comment, -1] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 51 [comment, 0] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 52 [comment, 4] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 53 [comment, 96] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 56 [foreignComment, 2] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 63 [xmlComment, 0] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 64 [xmlComment, 4] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 75 [detachedComment, 3] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 76 [detachedComment, 5] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 80 [docfrag, 0] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 83 [doctype, 0] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 84 [doctype, -17] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 85 [doctype, 1] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 29 [document.head, 1] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 30 [document.body, 3] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 35 [paras[0], 0] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 36 [paras[0], 1] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 37 [paras[0], 2] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 38 [paras[1], 0] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 39 [paras[1], 1] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 40 [paras[1], 2] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 43 [testDiv, 0] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 44 [testDiv, 3] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 45 [document, -1] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 46 [document, 0] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 47 [document, 1] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 48 [document, 2] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 49 [document, 3] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 50 [comment, -1] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 51 [comment, 0] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 52 [comment, 4] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 53 [comment, 96] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 56 [foreignComment, 2] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 63 [xmlComment, 0] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 64 [xmlComment, 4] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 75 [detachedComment, 3] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 76 [detachedComment, 5] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 80 [docfrag, 0] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 83 [doctype, 0] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 84 [doctype, -17] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 85 [doctype, 1] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 36 [docfrag, 0, docfrag, 0], point 87 [xmlDoctype, 0] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 0 [paras[0].firstChild, -1] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 1 [paras[0].firstChild, 0] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 2 [paras[0].firstChild, 1] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 3 [paras[0].firstChild, 2] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 4 [paras[0].firstChild, 8] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 5 [paras[0].firstChild, 9] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 6 [paras[0].firstChild, 10] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 7 [paras[0].firstChild, 65535] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 8 [paras[1].firstChild, -1] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 9 [paras[1].firstChild, 0] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 10 [paras[1].firstChild, 1] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 11 [paras[1].firstChild, 2] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 12 [paras[1].firstChild, 8] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 13 [paras[1].firstChild, 9] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 14 [paras[1].firstChild, 10] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 15 [paras[1].firstChild, 65535] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 16 [detachedPara1.firstChild, 0] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 17 [detachedPara1.firstChild, 1] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 18 [detachedPara1.firstChild, 8] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 19 [detachedPara1.firstChild, 9] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 20 [foreignPara1.firstChild, 0] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 21 [foreignPara1.firstChild, 1] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 22 [foreignPara1.firstChild, 8] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 23 [foreignPara1.firstChild, 9] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 24 [document.documentElement, -1] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 25 [document.documentElement, 0] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 26 [document.documentElement, 1] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 27 [document.documentElement, 2] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 28 [document.documentElement, 7] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 29 [document.head, 1] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 30 [document.body, 3] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 31 [foreignDoc.documentElement, 0] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 32 [foreignDoc.documentElement, 1] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 33 [foreignDoc.head, 0] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 34 [foreignDoc.body, 1] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 35 [paras[0], 0] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 36 [paras[0], 1] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 37 [paras[0], 2] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 38 [paras[1], 0] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 39 [paras[1], 1] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 40 [paras[1], 2] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 41 [detachedPara1, 0] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 42 [detachedPara1, 1] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 43 [testDiv, 0] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 44 [testDiv, 3] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 45 [document, -1] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 46 [document, 0] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 47 [document, 1] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 48 [document, 2] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 49 [document, 3] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 50 [comment, -1] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 51 [comment, 0] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 52 [comment, 4] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 53 [comment, 96] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 54 [foreignDoc, 0] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 55 [foreignDoc, 1] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 56 [foreignComment, 2] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 57 [foreignTextNode, 0] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 58 [foreignTextNode, 36] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 59 [xmlDoc, -1] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 60 [xmlDoc, 0] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 61 [xmlDoc, 1] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 62 [xmlDoc, 5] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 63 [xmlComment, 0] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 64 [xmlComment, 4] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 65 [processingInstruction, 0] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 66 [processingInstruction, 5] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 67 [processingInstruction, 9] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 68 [detachedTextNode, 0] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 69 [detachedTextNode, 8] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 70 [detachedForeignTextNode, 0] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 71 [detachedForeignTextNode, 8] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 72 [detachedXmlTextNode, 0] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 73 [detachedXmlTextNode, 8] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 74 [detachedProcessingInstruction, 12] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 75 [detachedComment, 3] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 76 [detachedComment, 5] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 77 [detachedForeignComment, 0] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 78 [detachedForeignComment, 4] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 79 [detachedXmlComment, 2] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 80 [docfrag, 0] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 81 [foreignDocfrag, 0] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 82 [xmlDocfrag, 0] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 83 [doctype, 0] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 84 [doctype, -17] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 85 [doctype, 1] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 86 [foreignDoctype, 0] 
+PASS setEnd() with range 37 [processingInstruction, 0, processingInstruction, 4], point 87 [xmlDoctype, 0] 
+PASS setStartBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 0 paras[0] 
+PASS setStartBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 3 foreignPara1 
+PASS setStartBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 5 detachedPara1 
+PASS setStartBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 7 document 
+PASS setStartBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 8 detachedDiv 
+PASS setStartBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 9 foreignDoc 
+PASS setStartBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 10 foreignPara2 
+PASS setStartBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 11 xmlDoc 
+PASS setStartBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 12 xmlElement 
+PASS setStartBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 13 detachedTextNode 
+PASS setStartBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 14 foreignTextNode 
+PASS setStartBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 15 processingInstruction 
+PASS setStartBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 17 comment 
+PASS setStartBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 18 detachedComment 
+PASS setStartBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 19 docfrag 
+PASS setStartBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 20 doctype 
+PASS setStartBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 21 foreignDoctype 
+PASS setStartBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 0 paras[0] 
+PASS setStartBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 3 foreignPara1 
+PASS setStartBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 5 detachedPara1 
+PASS setStartBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 7 document 
+PASS setStartBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 8 detachedDiv 
+PASS setStartBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 9 foreignDoc 
+PASS setStartBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 10 foreignPara2 
+PASS setStartBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 11 xmlDoc 
+PASS setStartBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 12 xmlElement 
+PASS setStartBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 13 detachedTextNode 
+PASS setStartBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 14 foreignTextNode 
+PASS setStartBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 15 processingInstruction 
+PASS setStartBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 17 comment 
+PASS setStartBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 18 detachedComment 
+PASS setStartBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 19 docfrag 
+PASS setStartBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 20 doctype 
+PASS setStartBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 21 foreignDoctype 
+PASS setStartBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 0 paras[0] 
+PASS setStartBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 3 foreignPara1 
+PASS setStartBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 5 detachedPara1 
+PASS setStartBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 7 document 
+PASS setStartBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 8 detachedDiv 
+PASS setStartBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 9 foreignDoc 
+PASS setStartBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 10 foreignPara2 
+PASS setStartBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 11 xmlDoc 
+PASS setStartBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 12 xmlElement 
+PASS setStartBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 13 detachedTextNode 
+PASS setStartBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 14 foreignTextNode 
+PASS setStartBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 15 processingInstruction 
+PASS setStartBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 17 comment 
+PASS setStartBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 18 detachedComment 
+PASS setStartBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 19 docfrag 
+PASS setStartBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 20 doctype 
+PASS setStartBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 21 foreignDoctype 
+PASS setStartBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 0 paras[0] 
+PASS setStartBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 3 foreignPara1 
+PASS setStartBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 5 detachedPara1 
+PASS setStartBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 7 document 
+PASS setStartBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 8 detachedDiv 
+PASS setStartBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 9 foreignDoc 
+PASS setStartBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 10 foreignPara2 
+PASS setStartBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 11 xmlDoc 
+PASS setStartBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 12 xmlElement 
+PASS setStartBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 13 detachedTextNode 
+PASS setStartBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 14 foreignTextNode 
+PASS setStartBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 15 processingInstruction 
+PASS setStartBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 17 comment 
+PASS setStartBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 18 detachedComment 
+PASS setStartBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 19 docfrag 
+PASS setStartBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 20 doctype 
+PASS setStartBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 21 foreignDoctype 
+PASS setStartBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 0 paras[0] 
+PASS setStartBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 3 foreignPara1 
+PASS setStartBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 5 detachedPara1 
+PASS setStartBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 7 document 
+PASS setStartBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 8 detachedDiv 
+PASS setStartBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 9 foreignDoc 
+PASS setStartBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 10 foreignPara2 
+PASS setStartBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 11 xmlDoc 
+PASS setStartBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 12 xmlElement 
+PASS setStartBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 13 detachedTextNode 
+PASS setStartBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 14 foreignTextNode 
+PASS setStartBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 15 processingInstruction 
+PASS setStartBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 17 comment 
+PASS setStartBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 18 detachedComment 
+PASS setStartBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 19 docfrag 
+PASS setStartBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 20 doctype 
+PASS setStartBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 21 foreignDoctype 
+PASS setStartBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 0 paras[0] 
+PASS setStartBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 3 foreignPara1 
+PASS setStartBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 5 detachedPara1 
+PASS setStartBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 7 document 
+PASS setStartBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 8 detachedDiv 
+PASS setStartBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 9 foreignDoc 
+PASS setStartBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 10 foreignPara2 
+PASS setStartBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 11 xmlDoc 
+PASS setStartBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 12 xmlElement 
+PASS setStartBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 13 detachedTextNode 
+PASS setStartBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 14 foreignTextNode 
+PASS setStartBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 15 processingInstruction 
+PASS setStartBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 17 comment 
+PASS setStartBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 18 detachedComment 
+PASS setStartBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 19 docfrag 
+PASS setStartBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 20 doctype 
+PASS setStartBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 21 foreignDoctype 
+PASS setStartBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 0 paras[0] 
+PASS setStartBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 3 foreignPara1 
+PASS setStartBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 5 detachedPara1 
+PASS setStartBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 7 document 
+PASS setStartBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 8 detachedDiv 
+PASS setStartBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 9 foreignDoc 
+PASS setStartBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 10 foreignPara2 
+PASS setStartBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 11 xmlDoc 
+PASS setStartBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 12 xmlElement 
+PASS setStartBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 13 detachedTextNode 
+PASS setStartBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 14 foreignTextNode 
+PASS setStartBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 15 processingInstruction 
+PASS setStartBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 17 comment 
+PASS setStartBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 18 detachedComment 
+PASS setStartBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 19 docfrag 
+PASS setStartBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 20 doctype 
+PASS setStartBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 21 foreignDoctype 
+PASS setStartBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 0 paras[0] 
+PASS setStartBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 3 foreignPara1 
+PASS setStartBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 5 detachedPara1 
+PASS setStartBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 7 document 
+PASS setStartBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 8 detachedDiv 
+PASS setStartBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 9 foreignDoc 
+PASS setStartBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 10 foreignPara2 
+PASS setStartBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 11 xmlDoc 
+PASS setStartBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 12 xmlElement 
+PASS setStartBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 13 detachedTextNode 
+PASS setStartBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 14 foreignTextNode 
+PASS setStartBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 15 processingInstruction 
+PASS setStartBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 17 comment 
+PASS setStartBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 18 detachedComment 
+PASS setStartBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 19 docfrag 
+PASS setStartBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 20 doctype 
+PASS setStartBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 21 foreignDoctype 
+PASS setStartBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 0 paras[0] 
+PASS setStartBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 3 foreignPara1 
+PASS setStartBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 5 detachedPara1 
+PASS setStartBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 7 document 
+PASS setStartBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 8 detachedDiv 
+PASS setStartBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 9 foreignDoc 
+PASS setStartBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 10 foreignPara2 
+PASS setStartBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 11 xmlDoc 
+PASS setStartBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 12 xmlElement 
+PASS setStartBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 13 detachedTextNode 
+PASS setStartBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 14 foreignTextNode 
+PASS setStartBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 15 processingInstruction 
+PASS setStartBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 17 comment 
+PASS setStartBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 18 detachedComment 
+PASS setStartBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 19 docfrag 
+PASS setStartBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 20 doctype 
+PASS setStartBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 21 foreignDoctype 
+PASS setStartBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 0 paras[0] 
+PASS setStartBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 3 foreignPara1 
+PASS setStartBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 5 detachedPara1 
+PASS setStartBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 7 document 
+PASS setStartBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 8 detachedDiv 
+PASS setStartBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 9 foreignDoc 
+PASS setStartBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 10 foreignPara2 
+PASS setStartBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 11 xmlDoc 
+PASS setStartBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 12 xmlElement 
+PASS setStartBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 13 detachedTextNode 
+PASS setStartBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 14 foreignTextNode 
+PASS setStartBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 15 processingInstruction 
+PASS setStartBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 17 comment 
+PASS setStartBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 18 detachedComment 
+PASS setStartBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 19 docfrag 
+PASS setStartBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 20 doctype 
+PASS setStartBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 21 foreignDoctype 
+PASS setStartBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 0 paras[0] 
+PASS setStartBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 3 foreignPara1 
+PASS setStartBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 5 detachedPara1 
+PASS setStartBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 7 document 
+PASS setStartBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 8 detachedDiv 
+PASS setStartBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 9 foreignDoc 
+PASS setStartBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 10 foreignPara2 
+PASS setStartBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 11 xmlDoc 
+PASS setStartBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 12 xmlElement 
+PASS setStartBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 13 detachedTextNode 
+PASS setStartBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 14 foreignTextNode 
+PASS setStartBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 15 processingInstruction 
+PASS setStartBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 17 comment 
+PASS setStartBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 18 detachedComment 
+PASS setStartBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 19 docfrag 
+PASS setStartBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 20 doctype 
+PASS setStartBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 21 foreignDoctype 
+PASS setStartBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 0 paras[0] 
+PASS setStartBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 3 foreignPara1 
+PASS setStartBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 5 detachedPara1 
+PASS setStartBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 7 document 
+PASS setStartBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 8 detachedDiv 
+PASS setStartBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 9 foreignDoc 
+PASS setStartBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 10 foreignPara2 
+PASS setStartBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 11 xmlDoc 
+PASS setStartBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 12 xmlElement 
+PASS setStartBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 13 detachedTextNode 
+PASS setStartBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 14 foreignTextNode 
+PASS setStartBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 15 processingInstruction 
+PASS setStartBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 17 comment 
+PASS setStartBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 18 detachedComment 
+PASS setStartBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 19 docfrag 
+PASS setStartBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 20 doctype 
+PASS setStartBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 21 foreignDoctype 
+PASS setStartBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 0 paras[0] 
+PASS setStartBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 3 foreignPara1 
+PASS setStartBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 5 detachedPara1 
+PASS setStartBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 7 document 
+PASS setStartBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 8 detachedDiv 
+PASS setStartBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 9 foreignDoc 
+PASS setStartBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 10 foreignPara2 
+PASS setStartBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 11 xmlDoc 
+PASS setStartBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 12 xmlElement 
+PASS setStartBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 13 detachedTextNode 
+PASS setStartBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 14 foreignTextNode 
+PASS setStartBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 15 processingInstruction 
+PASS setStartBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 17 comment 
+PASS setStartBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 18 detachedComment 
+PASS setStartBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 19 docfrag 
+PASS setStartBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 20 doctype 
+PASS setStartBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 21 foreignDoctype 
+PASS setStartBefore() with range 13 [document.head, 1, document.head, 1], node 0 paras[0] 
+PASS setStartBefore() with range 13 [document.head, 1, document.head, 1], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 13 [document.head, 1, document.head, 1], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 13 [document.head, 1, document.head, 1], node 3 foreignPara1 
+PASS setStartBefore() with range 13 [document.head, 1, document.head, 1], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 13 [document.head, 1, document.head, 1], node 5 detachedPara1 
+PASS setStartBefore() with range 13 [document.head, 1, document.head, 1], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 13 [document.head, 1, document.head, 1], node 7 document 
+PASS setStartBefore() with range 13 [document.head, 1, document.head, 1], node 8 detachedDiv 
+PASS setStartBefore() with range 13 [document.head, 1, document.head, 1], node 9 foreignDoc 
+PASS setStartBefore() with range 13 [document.head, 1, document.head, 1], node 10 foreignPara2 
+PASS setStartBefore() with range 13 [document.head, 1, document.head, 1], node 11 xmlDoc 
+PASS setStartBefore() with range 13 [document.head, 1, document.head, 1], node 12 xmlElement 
+PASS setStartBefore() with range 13 [document.head, 1, document.head, 1], node 13 detachedTextNode 
+PASS setStartBefore() with range 13 [document.head, 1, document.head, 1], node 14 foreignTextNode 
+PASS setStartBefore() with range 13 [document.head, 1, document.head, 1], node 15 processingInstruction 
+PASS setStartBefore() with range 13 [document.head, 1, document.head, 1], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 13 [document.head, 1, document.head, 1], node 17 comment 
+PASS setStartBefore() with range 13 [document.head, 1, document.head, 1], node 18 detachedComment 
+PASS setStartBefore() with range 13 [document.head, 1, document.head, 1], node 19 docfrag 
+PASS setStartBefore() with range 13 [document.head, 1, document.head, 1], node 20 doctype 
+PASS setStartBefore() with range 13 [document.head, 1, document.head, 1], node 21 foreignDoctype 
+PASS setStartBefore() with range 14 [document.body, 4, document.body, 5], node 0 paras[0] 
+PASS setStartBefore() with range 14 [document.body, 4, document.body, 5], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 14 [document.body, 4, document.body, 5], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 14 [document.body, 4, document.body, 5], node 3 foreignPara1 
+PASS setStartBefore() with range 14 [document.body, 4, document.body, 5], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 14 [document.body, 4, document.body, 5], node 5 detachedPara1 
+PASS setStartBefore() with range 14 [document.body, 4, document.body, 5], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 14 [document.body, 4, document.body, 5], node 7 document 
+PASS setStartBefore() with range 14 [document.body, 4, document.body, 5], node 8 detachedDiv 
+PASS setStartBefore() with range 14 [document.body, 4, document.body, 5], node 9 foreignDoc 
+PASS setStartBefore() with range 14 [document.body, 4, document.body, 5], node 10 foreignPara2 
+PASS setStartBefore() with range 14 [document.body, 4, document.body, 5], node 11 xmlDoc 
+PASS setStartBefore() with range 14 [document.body, 4, document.body, 5], node 12 xmlElement 
+PASS setStartBefore() with range 14 [document.body, 4, document.body, 5], node 13 detachedTextNode 
+PASS setStartBefore() with range 14 [document.body, 4, document.body, 5], node 14 foreignTextNode 
+PASS setStartBefore() with range 14 [document.body, 4, document.body, 5], node 15 processingInstruction 
+PASS setStartBefore() with range 14 [document.body, 4, document.body, 5], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 14 [document.body, 4, document.body, 5], node 17 comment 
+PASS setStartBefore() with range 14 [document.body, 4, document.body, 5], node 18 detachedComment 
+PASS setStartBefore() with range 14 [document.body, 4, document.body, 5], node 19 docfrag 
+PASS setStartBefore() with range 14 [document.body, 4, document.body, 5], node 20 doctype 
+PASS setStartBefore() with range 14 [document.body, 4, document.body, 5], node 21 foreignDoctype 
+PASS setStartBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 0 paras[0] 
+PASS setStartBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 3 foreignPara1 
+PASS setStartBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 5 detachedPara1 
+PASS setStartBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 7 document 
+PASS setStartBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 8 detachedDiv 
+PASS setStartBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 9 foreignDoc 
+PASS setStartBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 10 foreignPara2 
+PASS setStartBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 11 xmlDoc 
+PASS setStartBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 12 xmlElement 
+PASS setStartBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 13 detachedTextNode 
+PASS setStartBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 14 foreignTextNode 
+PASS setStartBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 15 processingInstruction 
+PASS setStartBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 17 comment 
+PASS setStartBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 18 detachedComment 
+PASS setStartBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 19 docfrag 
+PASS setStartBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 20 doctype 
+PASS setStartBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 21 foreignDoctype 
+PASS setStartBefore() with range 16 [paras[0], 0, paras[0], 1], node 0 paras[0] 
+PASS setStartBefore() with range 16 [paras[0], 0, paras[0], 1], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 16 [paras[0], 0, paras[0], 1], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 16 [paras[0], 0, paras[0], 1], node 3 foreignPara1 
+PASS setStartBefore() with range 16 [paras[0], 0, paras[0], 1], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 16 [paras[0], 0, paras[0], 1], node 5 detachedPara1 
+PASS setStartBefore() with range 16 [paras[0], 0, paras[0], 1], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 16 [paras[0], 0, paras[0], 1], node 7 document 
+PASS setStartBefore() with range 16 [paras[0], 0, paras[0], 1], node 8 detachedDiv 
+PASS setStartBefore() with range 16 [paras[0], 0, paras[0], 1], node 9 foreignDoc 
+PASS setStartBefore() with range 16 [paras[0], 0, paras[0], 1], node 10 foreignPara2 
+PASS setStartBefore() with range 16 [paras[0], 0, paras[0], 1], node 11 xmlDoc 
+PASS setStartBefore() with range 16 [paras[0], 0, paras[0], 1], node 12 xmlElement 
+PASS setStartBefore() with range 16 [paras[0], 0, paras[0], 1], node 13 detachedTextNode 
+PASS setStartBefore() with range 16 [paras[0], 0, paras[0], 1], node 14 foreignTextNode 
+PASS setStartBefore() with range 16 [paras[0], 0, paras[0], 1], node 15 processingInstruction 
+PASS setStartBefore() with range 16 [paras[0], 0, paras[0], 1], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 16 [paras[0], 0, paras[0], 1], node 17 comment 
+PASS setStartBefore() with range 16 [paras[0], 0, paras[0], 1], node 18 detachedComment 
+PASS setStartBefore() with range 16 [paras[0], 0, paras[0], 1], node 19 docfrag 
+PASS setStartBefore() with range 16 [paras[0], 0, paras[0], 1], node 20 doctype 
+PASS setStartBefore() with range 16 [paras[0], 0, paras[0], 1], node 21 foreignDoctype 
+PASS setStartBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 0 paras[0] 
+PASS setStartBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 3 foreignPara1 
+PASS setStartBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 5 detachedPara1 
+PASS setStartBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 7 document 
+PASS setStartBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 8 detachedDiv 
+PASS setStartBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 9 foreignDoc 
+PASS setStartBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 10 foreignPara2 
+PASS setStartBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 11 xmlDoc 
+PASS setStartBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 12 xmlElement 
+PASS setStartBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 13 detachedTextNode 
+PASS setStartBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 14 foreignTextNode 
+PASS setStartBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 15 processingInstruction 
+PASS setStartBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 17 comment 
+PASS setStartBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 18 detachedComment 
+PASS setStartBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 19 docfrag 
+PASS setStartBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 20 doctype 
+PASS setStartBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 21 foreignDoctype 
+PASS setStartBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 0 paras[0] 
+PASS setStartBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 3 foreignPara1 
+PASS setStartBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 5 detachedPara1 
+PASS setStartBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 7 document 
+PASS setStartBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 8 detachedDiv 
+PASS setStartBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 9 foreignDoc 
+PASS setStartBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 10 foreignPara2 
+PASS setStartBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 11 xmlDoc 
+PASS setStartBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 12 xmlElement 
+PASS setStartBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 13 detachedTextNode 
+PASS setStartBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 14 foreignTextNode 
+PASS setStartBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 15 processingInstruction 
+PASS setStartBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 17 comment 
+PASS setStartBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 18 detachedComment 
+PASS setStartBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 19 docfrag 
+PASS setStartBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 20 doctype 
+PASS setStartBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 21 foreignDoctype 
+PASS setStartBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 0 paras[0] 
+PASS setStartBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 3 foreignPara1 
+PASS setStartBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 5 detachedPara1 
+PASS setStartBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 7 document 
+PASS setStartBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 8 detachedDiv 
+PASS setStartBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 9 foreignDoc 
+PASS setStartBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 10 foreignPara2 
+PASS setStartBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 11 xmlDoc 
+PASS setStartBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 12 xmlElement 
+PASS setStartBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 13 detachedTextNode 
+PASS setStartBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 14 foreignTextNode 
+PASS setStartBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 15 processingInstruction 
+PASS setStartBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 17 comment 
+PASS setStartBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 18 detachedComment 
+PASS setStartBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 19 docfrag 
+PASS setStartBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 20 doctype 
+PASS setStartBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 21 foreignDoctype 
+PASS setStartBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 0 paras[0] 
+PASS setStartBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 3 foreignPara1 
+PASS setStartBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 5 detachedPara1 
+PASS setStartBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 7 document 
+PASS setStartBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 8 detachedDiv 
+PASS setStartBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 9 foreignDoc 
+PASS setStartBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 10 foreignPara2 
+PASS setStartBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 11 xmlDoc 
+PASS setStartBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 12 xmlElement 
+PASS setStartBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 13 detachedTextNode 
+PASS setStartBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 14 foreignTextNode 
+PASS setStartBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 15 processingInstruction 
+PASS setStartBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 17 comment 
+PASS setStartBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 18 detachedComment 
+PASS setStartBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 19 docfrag 
+PASS setStartBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 20 doctype 
+PASS setStartBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 21 foreignDoctype 
+PASS setStartBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 0 paras[0] 
+PASS setStartBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 3 foreignPara1 
+PASS setStartBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 5 detachedPara1 
+PASS setStartBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 7 document 
+PASS setStartBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 8 detachedDiv 
+PASS setStartBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 9 foreignDoc 
+PASS setStartBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 10 foreignPara2 
+PASS setStartBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 11 xmlDoc 
+PASS setStartBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 12 xmlElement 
+PASS setStartBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 13 detachedTextNode 
+PASS setStartBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 14 foreignTextNode 
+PASS setStartBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 15 processingInstruction 
+PASS setStartBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 17 comment 
+PASS setStartBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 18 detachedComment 
+PASS setStartBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 19 docfrag 
+PASS setStartBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 20 doctype 
+PASS setStartBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 21 foreignDoctype 
+PASS setStartBefore() with range 22 [testDiv, 2, paras[4], 1], node 0 paras[0] 
+PASS setStartBefore() with range 22 [testDiv, 2, paras[4], 1], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 22 [testDiv, 2, paras[4], 1], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 22 [testDiv, 2, paras[4], 1], node 3 foreignPara1 
+PASS setStartBefore() with range 22 [testDiv, 2, paras[4], 1], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 22 [testDiv, 2, paras[4], 1], node 5 detachedPara1 
+PASS setStartBefore() with range 22 [testDiv, 2, paras[4], 1], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 22 [testDiv, 2, paras[4], 1], node 7 document 
+PASS setStartBefore() with range 22 [testDiv, 2, paras[4], 1], node 8 detachedDiv 
+PASS setStartBefore() with range 22 [testDiv, 2, paras[4], 1], node 9 foreignDoc 
+PASS setStartBefore() with range 22 [testDiv, 2, paras[4], 1], node 10 foreignPara2 
+PASS setStartBefore() with range 22 [testDiv, 2, paras[4], 1], node 11 xmlDoc 
+PASS setStartBefore() with range 22 [testDiv, 2, paras[4], 1], node 12 xmlElement 
+PASS setStartBefore() with range 22 [testDiv, 2, paras[4], 1], node 13 detachedTextNode 
+PASS setStartBefore() with range 22 [testDiv, 2, paras[4], 1], node 14 foreignTextNode 
+PASS setStartBefore() with range 22 [testDiv, 2, paras[4], 1], node 15 processingInstruction 
+PASS setStartBefore() with range 22 [testDiv, 2, paras[4], 1], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 22 [testDiv, 2, paras[4], 1], node 17 comment 
+PASS setStartBefore() with range 22 [testDiv, 2, paras[4], 1], node 18 detachedComment 
+PASS setStartBefore() with range 22 [testDiv, 2, paras[4], 1], node 19 docfrag 
+PASS setStartBefore() with range 22 [testDiv, 2, paras[4], 1], node 20 doctype 
+PASS setStartBefore() with range 22 [testDiv, 2, paras[4], 1], node 21 foreignDoctype 
+PASS setStartBefore() with range 23 [document, 0, document, 1], node 0 paras[0] 
+PASS setStartBefore() with range 23 [document, 0, document, 1], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 23 [document, 0, document, 1], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 23 [document, 0, document, 1], node 3 foreignPara1 
+PASS setStartBefore() with range 23 [document, 0, document, 1], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 23 [document, 0, document, 1], node 5 detachedPara1 
+PASS setStartBefore() with range 23 [document, 0, document, 1], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 23 [document, 0, document, 1], node 7 document 
+PASS setStartBefore() with range 23 [document, 0, document, 1], node 8 detachedDiv 
+PASS setStartBefore() with range 23 [document, 0, document, 1], node 9 foreignDoc 
+PASS setStartBefore() with range 23 [document, 0, document, 1], node 10 foreignPara2 
+PASS setStartBefore() with range 23 [document, 0, document, 1], node 11 xmlDoc 
+PASS setStartBefore() with range 23 [document, 0, document, 1], node 12 xmlElement 
+PASS setStartBefore() with range 23 [document, 0, document, 1], node 13 detachedTextNode 
+PASS setStartBefore() with range 23 [document, 0, document, 1], node 14 foreignTextNode 
+PASS setStartBefore() with range 23 [document, 0, document, 1], node 15 processingInstruction 
+PASS setStartBefore() with range 23 [document, 0, document, 1], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 23 [document, 0, document, 1], node 17 comment 
+PASS setStartBefore() with range 23 [document, 0, document, 1], node 18 detachedComment 
+PASS setStartBefore() with range 23 [document, 0, document, 1], node 19 docfrag 
+PASS setStartBefore() with range 23 [document, 0, document, 1], node 20 doctype 
+PASS setStartBefore() with range 23 [document, 0, document, 1], node 21 foreignDoctype 
+PASS setStartBefore() with range 24 [document, 0, document, 2], node 0 paras[0] 
+PASS setStartBefore() with range 24 [document, 0, document, 2], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 24 [document, 0, document, 2], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 24 [document, 0, document, 2], node 3 foreignPara1 
+PASS setStartBefore() with range 24 [document, 0, document, 2], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 24 [document, 0, document, 2], node 5 detachedPara1 
+PASS setStartBefore() with range 24 [document, 0, document, 2], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 24 [document, 0, document, 2], node 7 document 
+PASS setStartBefore() with range 24 [document, 0, document, 2], node 8 detachedDiv 
+PASS setStartBefore() with range 24 [document, 0, document, 2], node 9 foreignDoc 
+PASS setStartBefore() with range 24 [document, 0, document, 2], node 10 foreignPara2 
+PASS setStartBefore() with range 24 [document, 0, document, 2], node 11 xmlDoc 
+PASS setStartBefore() with range 24 [document, 0, document, 2], node 12 xmlElement 
+PASS setStartBefore() with range 24 [document, 0, document, 2], node 13 detachedTextNode 
+PASS setStartBefore() with range 24 [document, 0, document, 2], node 14 foreignTextNode 
+PASS setStartBefore() with range 24 [document, 0, document, 2], node 15 processingInstruction 
+PASS setStartBefore() with range 24 [document, 0, document, 2], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 24 [document, 0, document, 2], node 17 comment 
+PASS setStartBefore() with range 24 [document, 0, document, 2], node 18 detachedComment 
+PASS setStartBefore() with range 24 [document, 0, document, 2], node 19 docfrag 
+PASS setStartBefore() with range 24 [document, 0, document, 2], node 20 doctype 
+PASS setStartBefore() with range 24 [document, 0, document, 2], node 21 foreignDoctype 
+PASS setStartBefore() with range 25 [comment, 2, comment, 3], node 0 paras[0] 
+PASS setStartBefore() with range 25 [comment, 2, comment, 3], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 25 [comment, 2, comment, 3], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 25 [comment, 2, comment, 3], node 3 foreignPara1 
+PASS setStartBefore() with range 25 [comment, 2, comment, 3], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 25 [comment, 2, comment, 3], node 5 detachedPara1 
+PASS setStartBefore() with range 25 [comment, 2, comment, 3], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 25 [comment, 2, comment, 3], node 7 document 
+PASS setStartBefore() with range 25 [comment, 2, comment, 3], node 8 detachedDiv 
+PASS setStartBefore() with range 25 [comment, 2, comment, 3], node 9 foreignDoc 
+PASS setStartBefore() with range 25 [comment, 2, comment, 3], node 10 foreignPara2 
+PASS setStartBefore() with range 25 [comment, 2, comment, 3], node 11 xmlDoc 
+PASS setStartBefore() with range 25 [comment, 2, comment, 3], node 12 xmlElement 
+PASS setStartBefore() with range 25 [comment, 2, comment, 3], node 13 detachedTextNode 
+PASS setStartBefore() with range 25 [comment, 2, comment, 3], node 14 foreignTextNode 
+PASS setStartBefore() with range 25 [comment, 2, comment, 3], node 15 processingInstruction 
+PASS setStartBefore() with range 25 [comment, 2, comment, 3], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 25 [comment, 2, comment, 3], node 17 comment 
+PASS setStartBefore() with range 25 [comment, 2, comment, 3], node 18 detachedComment 
+PASS setStartBefore() with range 25 [comment, 2, comment, 3], node 19 docfrag 
+PASS setStartBefore() with range 25 [comment, 2, comment, 3], node 20 doctype 
+PASS setStartBefore() with range 25 [comment, 2, comment, 3], node 21 foreignDoctype 
+PASS setStartBefore() with range 26 [testDiv, 0, comment, 5], node 0 paras[0] 
+PASS setStartBefore() with range 26 [testDiv, 0, comment, 5], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 26 [testDiv, 0, comment, 5], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 26 [testDiv, 0, comment, 5], node 3 foreignPara1 
+PASS setStartBefore() with range 26 [testDiv, 0, comment, 5], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 26 [testDiv, 0, comment, 5], node 5 detachedPara1 
+PASS setStartBefore() with range 26 [testDiv, 0, comment, 5], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 26 [testDiv, 0, comment, 5], node 7 document 
+PASS setStartBefore() with range 26 [testDiv, 0, comment, 5], node 8 detachedDiv 
+PASS setStartBefore() with range 26 [testDiv, 0, comment, 5], node 9 foreignDoc 
+PASS setStartBefore() with range 26 [testDiv, 0, comment, 5], node 10 foreignPara2 
+PASS setStartBefore() with range 26 [testDiv, 0, comment, 5], node 11 xmlDoc 
+PASS setStartBefore() with range 26 [testDiv, 0, comment, 5], node 12 xmlElement 
+PASS setStartBefore() with range 26 [testDiv, 0, comment, 5], node 13 detachedTextNode 
+PASS setStartBefore() with range 26 [testDiv, 0, comment, 5], node 14 foreignTextNode 
+PASS setStartBefore() with range 26 [testDiv, 0, comment, 5], node 15 processingInstruction 
+PASS setStartBefore() with range 26 [testDiv, 0, comment, 5], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 26 [testDiv, 0, comment, 5], node 17 comment 
+PASS setStartBefore() with range 26 [testDiv, 0, comment, 5], node 18 detachedComment 
+PASS setStartBefore() with range 26 [testDiv, 0, comment, 5], node 19 docfrag 
+PASS setStartBefore() with range 26 [testDiv, 0, comment, 5], node 20 doctype 
+PASS setStartBefore() with range 26 [testDiv, 0, comment, 5], node 21 foreignDoctype 
+PASS setStartBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 0 paras[0] 
+PASS setStartBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 3 foreignPara1 
+PASS setStartBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 5 detachedPara1 
+PASS setStartBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 7 document 
+PASS setStartBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 8 detachedDiv 
+PASS setStartBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 9 foreignDoc 
+PASS setStartBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 10 foreignPara2 
+PASS setStartBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 11 xmlDoc 
+PASS setStartBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 12 xmlElement 
+PASS setStartBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 13 detachedTextNode 
+PASS setStartBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 14 foreignTextNode 
+PASS setStartBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 15 processingInstruction 
+PASS setStartBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 17 comment 
+PASS setStartBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 18 detachedComment 
+PASS setStartBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 19 docfrag 
+PASS setStartBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 20 doctype 
+PASS setStartBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 21 foreignDoctype 
+PASS setStartBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 0 paras[0] 
+PASS setStartBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 3 foreignPara1 
+PASS setStartBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 5 detachedPara1 
+PASS setStartBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 7 document 
+PASS setStartBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 8 detachedDiv 
+PASS setStartBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 9 foreignDoc 
+PASS setStartBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 10 foreignPara2 
+PASS setStartBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 11 xmlDoc 
+PASS setStartBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 12 xmlElement 
+PASS setStartBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 13 detachedTextNode 
+PASS setStartBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 14 foreignTextNode 
+PASS setStartBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 15 processingInstruction 
+PASS setStartBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 17 comment 
+PASS setStartBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 18 detachedComment 
+PASS setStartBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 19 docfrag 
+PASS setStartBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 20 doctype 
+PASS setStartBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 21 foreignDoctype 
+PASS setStartBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 0 paras[0] 
+PASS setStartBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 3 foreignPara1 
+PASS setStartBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 5 detachedPara1 
+PASS setStartBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 7 document 
+PASS setStartBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 8 detachedDiv 
+PASS setStartBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 9 foreignDoc 
+PASS setStartBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 10 foreignPara2 
+PASS setStartBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 11 xmlDoc 
+PASS setStartBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 12 xmlElement 
+PASS setStartBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 13 detachedTextNode 
+PASS setStartBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 14 foreignTextNode 
+PASS setStartBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 15 processingInstruction 
+PASS setStartBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 17 comment 
+PASS setStartBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 18 detachedComment 
+PASS setStartBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 19 docfrag 
+PASS setStartBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 20 doctype 
+PASS setStartBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 21 foreignDoctype 
+PASS setStartBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 0 paras[0] 
+PASS setStartBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 3 foreignPara1 
+PASS setStartBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 5 detachedPara1 
+PASS setStartBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 7 document 
+PASS setStartBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 8 detachedDiv 
+PASS setStartBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 9 foreignDoc 
+PASS setStartBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 10 foreignPara2 
+PASS setStartBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 11 xmlDoc 
+PASS setStartBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 12 xmlElement 
+PASS setStartBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 13 detachedTextNode 
+PASS setStartBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 14 foreignTextNode 
+PASS setStartBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 15 processingInstruction 
+PASS setStartBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 17 comment 
+PASS setStartBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 18 detachedComment 
+PASS setStartBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 19 docfrag 
+PASS setStartBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 20 doctype 
+PASS setStartBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 21 foreignDoctype 
+PASS setStartBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 0 paras[0] 
+PASS setStartBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 3 foreignPara1 
+PASS setStartBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 5 detachedPara1 
+PASS setStartBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 7 document 
+PASS setStartBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 8 detachedDiv 
+PASS setStartBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 9 foreignDoc 
+PASS setStartBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 10 foreignPara2 
+PASS setStartBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 11 xmlDoc 
+PASS setStartBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 12 xmlElement 
+PASS setStartBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 13 detachedTextNode 
+PASS setStartBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 14 foreignTextNode 
+PASS setStartBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 15 processingInstruction 
+PASS setStartBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 17 comment 
+PASS setStartBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 18 detachedComment 
+PASS setStartBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 19 docfrag 
+PASS setStartBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 20 doctype 
+PASS setStartBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 21 foreignDoctype 
+PASS setStartBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 0 paras[0] 
+PASS setStartBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 3 foreignPara1 
+PASS setStartBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 5 detachedPara1 
+PASS setStartBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 7 document 
+PASS setStartBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 8 detachedDiv 
+PASS setStartBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 9 foreignDoc 
+PASS setStartBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 10 foreignPara2 
+PASS setStartBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 11 xmlDoc 
+PASS setStartBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 12 xmlElement 
+PASS setStartBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 13 detachedTextNode 
+PASS setStartBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 14 foreignTextNode 
+PASS setStartBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 15 processingInstruction 
+PASS setStartBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 17 comment 
+PASS setStartBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 18 detachedComment 
+PASS setStartBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 19 docfrag 
+PASS setStartBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 20 doctype 
+PASS setStartBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 21 foreignDoctype 
+PASS setStartBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 0 paras[0] 
+PASS setStartBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 3 foreignPara1 
+PASS setStartBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 5 detachedPara1 
+PASS setStartBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 7 document 
+PASS setStartBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 8 detachedDiv 
+PASS setStartBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 9 foreignDoc 
+PASS setStartBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 10 foreignPara2 
+PASS setStartBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 11 xmlDoc 
+PASS setStartBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 12 xmlElement 
+PASS setStartBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 13 detachedTextNode 
+PASS setStartBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 14 foreignTextNode 
+PASS setStartBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 15 processingInstruction 
+PASS setStartBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 17 comment 
+PASS setStartBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 18 detachedComment 
+PASS setStartBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 19 docfrag 
+PASS setStartBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 20 doctype 
+PASS setStartBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 21 foreignDoctype 
+PASS setStartBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 0 paras[0] 
+PASS setStartBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 3 foreignPara1 
+PASS setStartBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 5 detachedPara1 
+PASS setStartBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 7 document 
+PASS setStartBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 8 detachedDiv 
+PASS setStartBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 9 foreignDoc 
+PASS setStartBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 10 foreignPara2 
+PASS setStartBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 11 xmlDoc 
+PASS setStartBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 12 xmlElement 
+PASS setStartBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 13 detachedTextNode 
+PASS setStartBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 14 foreignTextNode 
+PASS setStartBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 15 processingInstruction 
+PASS setStartBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 17 comment 
+PASS setStartBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 18 detachedComment 
+PASS setStartBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 19 docfrag 
+PASS setStartBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 20 doctype 
+PASS setStartBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 21 foreignDoctype 
+PASS setStartBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 0 paras[0] 
+PASS setStartBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 3 foreignPara1 
+PASS setStartBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 5 detachedPara1 
+PASS setStartBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 7 document 
+PASS setStartBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 8 detachedDiv 
+PASS setStartBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 9 foreignDoc 
+PASS setStartBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 10 foreignPara2 
+PASS setStartBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 11 xmlDoc 
+PASS setStartBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 12 xmlElement 
+PASS setStartBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 13 detachedTextNode 
+PASS setStartBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 14 foreignTextNode 
+PASS setStartBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 15 processingInstruction 
+PASS setStartBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 17 comment 
+PASS setStartBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 18 detachedComment 
+PASS setStartBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 19 docfrag 
+PASS setStartBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 20 doctype 
+PASS setStartBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 21 foreignDoctype 
+PASS setStartBefore() with range 36 [docfrag, 0, docfrag, 0], node 0 paras[0] 
+PASS setStartBefore() with range 36 [docfrag, 0, docfrag, 0], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 36 [docfrag, 0, docfrag, 0], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 36 [docfrag, 0, docfrag, 0], node 3 foreignPara1 
+PASS setStartBefore() with range 36 [docfrag, 0, docfrag, 0], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 36 [docfrag, 0, docfrag, 0], node 5 detachedPara1 
+PASS setStartBefore() with range 36 [docfrag, 0, docfrag, 0], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 36 [docfrag, 0, docfrag, 0], node 7 document 
+PASS setStartBefore() with range 36 [docfrag, 0, docfrag, 0], node 8 detachedDiv 
+PASS setStartBefore() with range 36 [docfrag, 0, docfrag, 0], node 9 foreignDoc 
+PASS setStartBefore() with range 36 [docfrag, 0, docfrag, 0], node 10 foreignPara2 
+PASS setStartBefore() with range 36 [docfrag, 0, docfrag, 0], node 11 xmlDoc 
+PASS setStartBefore() with range 36 [docfrag, 0, docfrag, 0], node 12 xmlElement 
+PASS setStartBefore() with range 36 [docfrag, 0, docfrag, 0], node 13 detachedTextNode 
+PASS setStartBefore() with range 36 [docfrag, 0, docfrag, 0], node 14 foreignTextNode 
+PASS setStartBefore() with range 36 [docfrag, 0, docfrag, 0], node 15 processingInstruction 
+PASS setStartBefore() with range 36 [docfrag, 0, docfrag, 0], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 36 [docfrag, 0, docfrag, 0], node 17 comment 
+PASS setStartBefore() with range 36 [docfrag, 0, docfrag, 0], node 18 detachedComment 
+PASS setStartBefore() with range 36 [docfrag, 0, docfrag, 0], node 19 docfrag 
+PASS setStartBefore() with range 36 [docfrag, 0, docfrag, 0], node 20 doctype 
+PASS setStartBefore() with range 36 [docfrag, 0, docfrag, 0], node 21 foreignDoctype 
+PASS setStartBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 0 paras[0] 
+PASS setStartBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 1 paras[0].firstChild 
+PASS setStartBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 2 paras[1].firstChild 
+PASS setStartBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 3 foreignPara1 
+PASS setStartBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 4 foreignPara1.firstChild 
+PASS setStartBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 5 detachedPara1 
+PASS setStartBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 6 detachedPara1.firstChild 
+PASS setStartBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 7 document 
+PASS setStartBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 8 detachedDiv 
+PASS setStartBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 9 foreignDoc 
+PASS setStartBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 10 foreignPara2 
+PASS setStartBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 11 xmlDoc 
+PASS setStartBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 12 xmlElement 
+PASS setStartBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 13 detachedTextNode 
+PASS setStartBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 14 foreignTextNode 
+PASS setStartBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 15 processingInstruction 
+PASS setStartBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 16 detachedProcessingInstruction 
+PASS setStartBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 17 comment 
+PASS setStartBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 18 detachedComment 
+PASS setStartBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 19 docfrag 
+PASS setStartBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 20 doctype 
+PASS setStartBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 21 foreignDoctype 
+PASS setStartAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 0 paras[0] 
+PASS setStartAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 3 foreignPara1 
+PASS setStartAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 5 detachedPara1 
+PASS setStartAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 7 document 
+PASS setStartAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 8 detachedDiv 
+PASS setStartAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 9 foreignDoc 
+PASS setStartAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 10 foreignPara2 
+PASS setStartAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 11 xmlDoc 
+PASS setStartAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 12 xmlElement 
+PASS setStartAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 13 detachedTextNode 
+PASS setStartAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 14 foreignTextNode 
+PASS setStartAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 15 processingInstruction 
+PASS setStartAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 17 comment 
+PASS setStartAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 18 detachedComment 
+PASS setStartAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 19 docfrag 
+PASS setStartAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 20 doctype 
+PASS setStartAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 21 foreignDoctype 
+PASS setStartAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 0 paras[0] 
+PASS setStartAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 3 foreignPara1 
+PASS setStartAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 5 detachedPara1 
+PASS setStartAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 7 document 
+PASS setStartAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 8 detachedDiv 
+PASS setStartAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 9 foreignDoc 
+PASS setStartAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 10 foreignPara2 
+PASS setStartAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 11 xmlDoc 
+PASS setStartAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 12 xmlElement 
+PASS setStartAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 13 detachedTextNode 
+PASS setStartAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 14 foreignTextNode 
+PASS setStartAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 15 processingInstruction 
+PASS setStartAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 17 comment 
+PASS setStartAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 18 detachedComment 
+PASS setStartAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 19 docfrag 
+PASS setStartAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 20 doctype 
+PASS setStartAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 21 foreignDoctype 
+PASS setStartAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 0 paras[0] 
+PASS setStartAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 3 foreignPara1 
+PASS setStartAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 5 detachedPara1 
+PASS setStartAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 7 document 
+PASS setStartAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 8 detachedDiv 
+PASS setStartAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 9 foreignDoc 
+PASS setStartAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 10 foreignPara2 
+PASS setStartAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 11 xmlDoc 
+PASS setStartAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 12 xmlElement 
+PASS setStartAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 13 detachedTextNode 
+PASS setStartAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 14 foreignTextNode 
+PASS setStartAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 15 processingInstruction 
+PASS setStartAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 17 comment 
+PASS setStartAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 18 detachedComment 
+PASS setStartAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 19 docfrag 
+PASS setStartAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 20 doctype 
+PASS setStartAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 21 foreignDoctype 
+PASS setStartAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 0 paras[0] 
+PASS setStartAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 3 foreignPara1 
+PASS setStartAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 5 detachedPara1 
+PASS setStartAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 7 document 
+PASS setStartAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 8 detachedDiv 
+PASS setStartAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 9 foreignDoc 
+PASS setStartAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 10 foreignPara2 
+PASS setStartAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 11 xmlDoc 
+PASS setStartAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 12 xmlElement 
+PASS setStartAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 13 detachedTextNode 
+PASS setStartAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 14 foreignTextNode 
+PASS setStartAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 15 processingInstruction 
+PASS setStartAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 17 comment 
+PASS setStartAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 18 detachedComment 
+PASS setStartAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 19 docfrag 
+PASS setStartAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 20 doctype 
+PASS setStartAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 21 foreignDoctype 
+PASS setStartAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 0 paras[0] 
+PASS setStartAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 3 foreignPara1 
+PASS setStartAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 5 detachedPara1 
+PASS setStartAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 7 document 
+PASS setStartAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 8 detachedDiv 
+PASS setStartAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 9 foreignDoc 
+PASS setStartAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 10 foreignPara2 
+PASS setStartAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 11 xmlDoc 
+PASS setStartAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 12 xmlElement 
+PASS setStartAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 13 detachedTextNode 
+PASS setStartAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 14 foreignTextNode 
+PASS setStartAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 15 processingInstruction 
+PASS setStartAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 17 comment 
+PASS setStartAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 18 detachedComment 
+PASS setStartAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 19 docfrag 
+PASS setStartAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 20 doctype 
+PASS setStartAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 21 foreignDoctype 
+PASS setStartAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 0 paras[0] 
+PASS setStartAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 3 foreignPara1 
+PASS setStartAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 5 detachedPara1 
+PASS setStartAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 7 document 
+PASS setStartAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 8 detachedDiv 
+PASS setStartAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 9 foreignDoc 
+PASS setStartAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 10 foreignPara2 
+PASS setStartAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 11 xmlDoc 
+PASS setStartAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 12 xmlElement 
+PASS setStartAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 13 detachedTextNode 
+PASS setStartAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 14 foreignTextNode 
+PASS setStartAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 15 processingInstruction 
+PASS setStartAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 17 comment 
+PASS setStartAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 18 detachedComment 
+PASS setStartAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 19 docfrag 
+PASS setStartAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 20 doctype 
+PASS setStartAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 21 foreignDoctype 
+PASS setStartAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 0 paras[0] 
+PASS setStartAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 3 foreignPara1 
+PASS setStartAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 5 detachedPara1 
+PASS setStartAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 7 document 
+PASS setStartAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 8 detachedDiv 
+PASS setStartAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 9 foreignDoc 
+PASS setStartAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 10 foreignPara2 
+PASS setStartAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 11 xmlDoc 
+PASS setStartAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 12 xmlElement 
+PASS setStartAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 13 detachedTextNode 
+PASS setStartAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 14 foreignTextNode 
+PASS setStartAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 15 processingInstruction 
+PASS setStartAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 17 comment 
+PASS setStartAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 18 detachedComment 
+PASS setStartAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 19 docfrag 
+PASS setStartAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 20 doctype 
+PASS setStartAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 21 foreignDoctype 
+PASS setStartAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 0 paras[0] 
+PASS setStartAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 3 foreignPara1 
+PASS setStartAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 5 detachedPara1 
+PASS setStartAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 7 document 
+PASS setStartAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 8 detachedDiv 
+PASS setStartAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 9 foreignDoc 
+PASS setStartAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 10 foreignPara2 
+PASS setStartAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 11 xmlDoc 
+PASS setStartAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 12 xmlElement 
+PASS setStartAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 13 detachedTextNode 
+PASS setStartAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 14 foreignTextNode 
+PASS setStartAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 15 processingInstruction 
+PASS setStartAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 17 comment 
+PASS setStartAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 18 detachedComment 
+PASS setStartAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 19 docfrag 
+PASS setStartAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 20 doctype 
+PASS setStartAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 21 foreignDoctype 
+PASS setStartAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 0 paras[0] 
+PASS setStartAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 3 foreignPara1 
+PASS setStartAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 5 detachedPara1 
+PASS setStartAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 7 document 
+PASS setStartAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 8 detachedDiv 
+PASS setStartAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 9 foreignDoc 
+PASS setStartAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 10 foreignPara2 
+PASS setStartAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 11 xmlDoc 
+PASS setStartAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 12 xmlElement 
+PASS setStartAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 13 detachedTextNode 
+PASS setStartAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 14 foreignTextNode 
+PASS setStartAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 15 processingInstruction 
+PASS setStartAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 17 comment 
+PASS setStartAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 18 detachedComment 
+PASS setStartAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 19 docfrag 
+PASS setStartAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 20 doctype 
+PASS setStartAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 21 foreignDoctype 
+PASS setStartAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 0 paras[0] 
+PASS setStartAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 3 foreignPara1 
+PASS setStartAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 5 detachedPara1 
+PASS setStartAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 7 document 
+PASS setStartAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 8 detachedDiv 
+PASS setStartAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 9 foreignDoc 
+PASS setStartAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 10 foreignPara2 
+PASS setStartAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 11 xmlDoc 
+PASS setStartAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 12 xmlElement 
+PASS setStartAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 13 detachedTextNode 
+PASS setStartAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 14 foreignTextNode 
+PASS setStartAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 15 processingInstruction 
+PASS setStartAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 17 comment 
+PASS setStartAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 18 detachedComment 
+PASS setStartAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 19 docfrag 
+PASS setStartAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 20 doctype 
+PASS setStartAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 21 foreignDoctype 
+PASS setStartAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 0 paras[0] 
+PASS setStartAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 3 foreignPara1 
+PASS setStartAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 5 detachedPara1 
+PASS setStartAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 7 document 
+PASS setStartAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 8 detachedDiv 
+PASS setStartAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 9 foreignDoc 
+PASS setStartAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 10 foreignPara2 
+PASS setStartAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 11 xmlDoc 
+PASS setStartAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 12 xmlElement 
+PASS setStartAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 13 detachedTextNode 
+PASS setStartAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 14 foreignTextNode 
+PASS setStartAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 15 processingInstruction 
+PASS setStartAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 17 comment 
+PASS setStartAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 18 detachedComment 
+PASS setStartAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 19 docfrag 
+PASS setStartAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 20 doctype 
+PASS setStartAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 21 foreignDoctype 
+PASS setStartAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 0 paras[0] 
+PASS setStartAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 3 foreignPara1 
+PASS setStartAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 5 detachedPara1 
+PASS setStartAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 7 document 
+PASS setStartAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 8 detachedDiv 
+PASS setStartAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 9 foreignDoc 
+PASS setStartAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 10 foreignPara2 
+PASS setStartAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 11 xmlDoc 
+PASS setStartAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 12 xmlElement 
+PASS setStartAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 13 detachedTextNode 
+PASS setStartAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 14 foreignTextNode 
+PASS setStartAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 15 processingInstruction 
+PASS setStartAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 17 comment 
+PASS setStartAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 18 detachedComment 
+PASS setStartAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 19 docfrag 
+PASS setStartAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 20 doctype 
+PASS setStartAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 21 foreignDoctype 
+PASS setStartAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 0 paras[0] 
+PASS setStartAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 3 foreignPara1 
+PASS setStartAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 5 detachedPara1 
+PASS setStartAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 7 document 
+PASS setStartAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 8 detachedDiv 
+PASS setStartAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 9 foreignDoc 
+PASS setStartAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 10 foreignPara2 
+PASS setStartAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 11 xmlDoc 
+PASS setStartAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 12 xmlElement 
+PASS setStartAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 13 detachedTextNode 
+PASS setStartAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 14 foreignTextNode 
+PASS setStartAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 15 processingInstruction 
+PASS setStartAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 17 comment 
+PASS setStartAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 18 detachedComment 
+PASS setStartAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 19 docfrag 
+PASS setStartAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 20 doctype 
+PASS setStartAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 21 foreignDoctype 
+PASS setStartAfter() with range 13 [document.head, 1, document.head, 1], node 0 paras[0] 
+PASS setStartAfter() with range 13 [document.head, 1, document.head, 1], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 13 [document.head, 1, document.head, 1], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 13 [document.head, 1, document.head, 1], node 3 foreignPara1 
+PASS setStartAfter() with range 13 [document.head, 1, document.head, 1], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 13 [document.head, 1, document.head, 1], node 5 detachedPara1 
+PASS setStartAfter() with range 13 [document.head, 1, document.head, 1], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 13 [document.head, 1, document.head, 1], node 7 document 
+PASS setStartAfter() with range 13 [document.head, 1, document.head, 1], node 8 detachedDiv 
+PASS setStartAfter() with range 13 [document.head, 1, document.head, 1], node 9 foreignDoc 
+PASS setStartAfter() with range 13 [document.head, 1, document.head, 1], node 10 foreignPara2 
+PASS setStartAfter() with range 13 [document.head, 1, document.head, 1], node 11 xmlDoc 
+PASS setStartAfter() with range 13 [document.head, 1, document.head, 1], node 12 xmlElement 
+PASS setStartAfter() with range 13 [document.head, 1, document.head, 1], node 13 detachedTextNode 
+PASS setStartAfter() with range 13 [document.head, 1, document.head, 1], node 14 foreignTextNode 
+PASS setStartAfter() with range 13 [document.head, 1, document.head, 1], node 15 processingInstruction 
+PASS setStartAfter() with range 13 [document.head, 1, document.head, 1], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 13 [document.head, 1, document.head, 1], node 17 comment 
+PASS setStartAfter() with range 13 [document.head, 1, document.head, 1], node 18 detachedComment 
+PASS setStartAfter() with range 13 [document.head, 1, document.head, 1], node 19 docfrag 
+PASS setStartAfter() with range 13 [document.head, 1, document.head, 1], node 20 doctype 
+PASS setStartAfter() with range 13 [document.head, 1, document.head, 1], node 21 foreignDoctype 
+PASS setStartAfter() with range 14 [document.body, 4, document.body, 5], node 0 paras[0] 
+PASS setStartAfter() with range 14 [document.body, 4, document.body, 5], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 14 [document.body, 4, document.body, 5], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 14 [document.body, 4, document.body, 5], node 3 foreignPara1 
+PASS setStartAfter() with range 14 [document.body, 4, document.body, 5], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 14 [document.body, 4, document.body, 5], node 5 detachedPara1 
+PASS setStartAfter() with range 14 [document.body, 4, document.body, 5], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 14 [document.body, 4, document.body, 5], node 7 document 
+PASS setStartAfter() with range 14 [document.body, 4, document.body, 5], node 8 detachedDiv 
+PASS setStartAfter() with range 14 [document.body, 4, document.body, 5], node 9 foreignDoc 
+PASS setStartAfter() with range 14 [document.body, 4, document.body, 5], node 10 foreignPara2 
+PASS setStartAfter() with range 14 [document.body, 4, document.body, 5], node 11 xmlDoc 
+PASS setStartAfter() with range 14 [document.body, 4, document.body, 5], node 12 xmlElement 
+PASS setStartAfter() with range 14 [document.body, 4, document.body, 5], node 13 detachedTextNode 
+PASS setStartAfter() with range 14 [document.body, 4, document.body, 5], node 14 foreignTextNode 
+PASS setStartAfter() with range 14 [document.body, 4, document.body, 5], node 15 processingInstruction 
+PASS setStartAfter() with range 14 [document.body, 4, document.body, 5], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 14 [document.body, 4, document.body, 5], node 17 comment 
+PASS setStartAfter() with range 14 [document.body, 4, document.body, 5], node 18 detachedComment 
+PASS setStartAfter() with range 14 [document.body, 4, document.body, 5], node 19 docfrag 
+PASS setStartAfter() with range 14 [document.body, 4, document.body, 5], node 20 doctype 
+PASS setStartAfter() with range 14 [document.body, 4, document.body, 5], node 21 foreignDoctype 
+PASS setStartAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 0 paras[0] 
+PASS setStartAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 3 foreignPara1 
+PASS setStartAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 5 detachedPara1 
+PASS setStartAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 7 document 
+PASS setStartAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 8 detachedDiv 
+PASS setStartAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 9 foreignDoc 
+PASS setStartAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 10 foreignPara2 
+PASS setStartAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 11 xmlDoc 
+PASS setStartAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 12 xmlElement 
+PASS setStartAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 13 detachedTextNode 
+PASS setStartAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 14 foreignTextNode 
+PASS setStartAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 15 processingInstruction 
+PASS setStartAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 17 comment 
+PASS setStartAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 18 detachedComment 
+PASS setStartAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 19 docfrag 
+PASS setStartAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 20 doctype 
+PASS setStartAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 21 foreignDoctype 
+PASS setStartAfter() with range 16 [paras[0], 0, paras[0], 1], node 0 paras[0] 
+PASS setStartAfter() with range 16 [paras[0], 0, paras[0], 1], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 16 [paras[0], 0, paras[0], 1], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 16 [paras[0], 0, paras[0], 1], node 3 foreignPara1 
+PASS setStartAfter() with range 16 [paras[0], 0, paras[0], 1], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 16 [paras[0], 0, paras[0], 1], node 5 detachedPara1 
+PASS setStartAfter() with range 16 [paras[0], 0, paras[0], 1], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 16 [paras[0], 0, paras[0], 1], node 7 document 
+PASS setStartAfter() with range 16 [paras[0], 0, paras[0], 1], node 8 detachedDiv 
+PASS setStartAfter() with range 16 [paras[0], 0, paras[0], 1], node 9 foreignDoc 
+PASS setStartAfter() with range 16 [paras[0], 0, paras[0], 1], node 10 foreignPara2 
+PASS setStartAfter() with range 16 [paras[0], 0, paras[0], 1], node 11 xmlDoc 
+PASS setStartAfter() with range 16 [paras[0], 0, paras[0], 1], node 12 xmlElement 
+PASS setStartAfter() with range 16 [paras[0], 0, paras[0], 1], node 13 detachedTextNode 
+PASS setStartAfter() with range 16 [paras[0], 0, paras[0], 1], node 14 foreignTextNode 
+PASS setStartAfter() with range 16 [paras[0], 0, paras[0], 1], node 15 processingInstruction 
+PASS setStartAfter() with range 16 [paras[0], 0, paras[0], 1], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 16 [paras[0], 0, paras[0], 1], node 17 comment 
+PASS setStartAfter() with range 16 [paras[0], 0, paras[0], 1], node 18 detachedComment 
+PASS setStartAfter() with range 16 [paras[0], 0, paras[0], 1], node 19 docfrag 
+PASS setStartAfter() with range 16 [paras[0], 0, paras[0], 1], node 20 doctype 
+PASS setStartAfter() with range 16 [paras[0], 0, paras[0], 1], node 21 foreignDoctype 
+PASS setStartAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 0 paras[0] 
+PASS setStartAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 3 foreignPara1 
+PASS setStartAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 5 detachedPara1 
+PASS setStartAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 7 document 
+PASS setStartAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 8 detachedDiv 
+PASS setStartAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 9 foreignDoc 
+PASS setStartAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 10 foreignPara2 
+PASS setStartAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 11 xmlDoc 
+PASS setStartAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 12 xmlElement 
+PASS setStartAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 13 detachedTextNode 
+PASS setStartAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 14 foreignTextNode 
+PASS setStartAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 15 processingInstruction 
+PASS setStartAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 17 comment 
+PASS setStartAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 18 detachedComment 
+PASS setStartAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 19 docfrag 
+PASS setStartAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 20 doctype 
+PASS setStartAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 21 foreignDoctype 
+PASS setStartAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 0 paras[0] 
+PASS setStartAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 3 foreignPara1 
+PASS setStartAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 5 detachedPara1 
+PASS setStartAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 7 document 
+PASS setStartAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 8 detachedDiv 
+PASS setStartAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 9 foreignDoc 
+PASS setStartAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 10 foreignPara2 
+PASS setStartAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 11 xmlDoc 
+PASS setStartAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 12 xmlElement 
+PASS setStartAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 13 detachedTextNode 
+PASS setStartAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 14 foreignTextNode 
+PASS setStartAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 15 processingInstruction 
+PASS setStartAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 17 comment 
+PASS setStartAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 18 detachedComment 
+PASS setStartAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 19 docfrag 
+PASS setStartAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 20 doctype 
+PASS setStartAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 21 foreignDoctype 
+PASS setStartAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 0 paras[0] 
+PASS setStartAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 3 foreignPara1 
+PASS setStartAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 5 detachedPara1 
+PASS setStartAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 7 document 
+PASS setStartAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 8 detachedDiv 
+PASS setStartAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 9 foreignDoc 
+PASS setStartAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 10 foreignPara2 
+PASS setStartAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 11 xmlDoc 
+PASS setStartAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 12 xmlElement 
+PASS setStartAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 13 detachedTextNode 
+PASS setStartAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 14 foreignTextNode 
+PASS setStartAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 15 processingInstruction 
+PASS setStartAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 17 comment 
+PASS setStartAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 18 detachedComment 
+PASS setStartAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 19 docfrag 
+PASS setStartAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 20 doctype 
+PASS setStartAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 21 foreignDoctype 
+PASS setStartAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 0 paras[0] 
+PASS setStartAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 3 foreignPara1 
+PASS setStartAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 5 detachedPara1 
+PASS setStartAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 7 document 
+PASS setStartAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 8 detachedDiv 
+PASS setStartAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 9 foreignDoc 
+PASS setStartAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 10 foreignPara2 
+PASS setStartAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 11 xmlDoc 
+PASS setStartAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 12 xmlElement 
+PASS setStartAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 13 detachedTextNode 
+PASS setStartAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 14 foreignTextNode 
+PASS setStartAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 15 processingInstruction 
+PASS setStartAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 17 comment 
+PASS setStartAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 18 detachedComment 
+PASS setStartAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 19 docfrag 
+PASS setStartAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 20 doctype 
+PASS setStartAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 21 foreignDoctype 
+PASS setStartAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 0 paras[0] 
+PASS setStartAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 3 foreignPara1 
+PASS setStartAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 5 detachedPara1 
+PASS setStartAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 7 document 
+PASS setStartAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 8 detachedDiv 
+PASS setStartAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 9 foreignDoc 
+PASS setStartAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 10 foreignPara2 
+PASS setStartAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 11 xmlDoc 
+PASS setStartAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 12 xmlElement 
+PASS setStartAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 13 detachedTextNode 
+PASS setStartAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 14 foreignTextNode 
+PASS setStartAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 15 processingInstruction 
+PASS setStartAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 17 comment 
+PASS setStartAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 18 detachedComment 
+PASS setStartAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 19 docfrag 
+PASS setStartAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 20 doctype 
+PASS setStartAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 21 foreignDoctype 
+PASS setStartAfter() with range 22 [testDiv, 2, paras[4], 1], node 0 paras[0] 
+PASS setStartAfter() with range 22 [testDiv, 2, paras[4], 1], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 22 [testDiv, 2, paras[4], 1], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 22 [testDiv, 2, paras[4], 1], node 3 foreignPara1 
+PASS setStartAfter() with range 22 [testDiv, 2, paras[4], 1], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 22 [testDiv, 2, paras[4], 1], node 5 detachedPara1 
+PASS setStartAfter() with range 22 [testDiv, 2, paras[4], 1], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 22 [testDiv, 2, paras[4], 1], node 7 document 
+PASS setStartAfter() with range 22 [testDiv, 2, paras[4], 1], node 8 detachedDiv 
+PASS setStartAfter() with range 22 [testDiv, 2, paras[4], 1], node 9 foreignDoc 
+PASS setStartAfter() with range 22 [testDiv, 2, paras[4], 1], node 10 foreignPara2 
+PASS setStartAfter() with range 22 [testDiv, 2, paras[4], 1], node 11 xmlDoc 
+PASS setStartAfter() with range 22 [testDiv, 2, paras[4], 1], node 12 xmlElement 
+PASS setStartAfter() with range 22 [testDiv, 2, paras[4], 1], node 13 detachedTextNode 
+PASS setStartAfter() with range 22 [testDiv, 2, paras[4], 1], node 14 foreignTextNode 
+PASS setStartAfter() with range 22 [testDiv, 2, paras[4], 1], node 15 processingInstruction 
+PASS setStartAfter() with range 22 [testDiv, 2, paras[4], 1], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 22 [testDiv, 2, paras[4], 1], node 17 comment 
+PASS setStartAfter() with range 22 [testDiv, 2, paras[4], 1], node 18 detachedComment 
+PASS setStartAfter() with range 22 [testDiv, 2, paras[4], 1], node 19 docfrag 
+PASS setStartAfter() with range 22 [testDiv, 2, paras[4], 1], node 20 doctype 
+PASS setStartAfter() with range 22 [testDiv, 2, paras[4], 1], node 21 foreignDoctype 
+PASS setStartAfter() with range 23 [document, 0, document, 1], node 0 paras[0] 
+PASS setStartAfter() with range 23 [document, 0, document, 1], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 23 [document, 0, document, 1], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 23 [document, 0, document, 1], node 3 foreignPara1 
+PASS setStartAfter() with range 23 [document, 0, document, 1], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 23 [document, 0, document, 1], node 5 detachedPara1 
+PASS setStartAfter() with range 23 [document, 0, document, 1], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 23 [document, 0, document, 1], node 7 document 
+PASS setStartAfter() with range 23 [document, 0, document, 1], node 8 detachedDiv 
+PASS setStartAfter() with range 23 [document, 0, document, 1], node 9 foreignDoc 
+PASS setStartAfter() with range 23 [document, 0, document, 1], node 10 foreignPara2 
+PASS setStartAfter() with range 23 [document, 0, document, 1], node 11 xmlDoc 
+PASS setStartAfter() with range 23 [document, 0, document, 1], node 12 xmlElement 
+PASS setStartAfter() with range 23 [document, 0, document, 1], node 13 detachedTextNode 
+PASS setStartAfter() with range 23 [document, 0, document, 1], node 14 foreignTextNode 
+PASS setStartAfter() with range 23 [document, 0, document, 1], node 15 processingInstruction 
+PASS setStartAfter() with range 23 [document, 0, document, 1], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 23 [document, 0, document, 1], node 17 comment 
+PASS setStartAfter() with range 23 [document, 0, document, 1], node 18 detachedComment 
+PASS setStartAfter() with range 23 [document, 0, document, 1], node 19 docfrag 
+PASS setStartAfter() with range 23 [document, 0, document, 1], node 20 doctype 
+PASS setStartAfter() with range 23 [document, 0, document, 1], node 21 foreignDoctype 
+PASS setStartAfter() with range 24 [document, 0, document, 2], node 0 paras[0] 
+PASS setStartAfter() with range 24 [document, 0, document, 2], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 24 [document, 0, document, 2], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 24 [document, 0, document, 2], node 3 foreignPara1 
+PASS setStartAfter() with range 24 [document, 0, document, 2], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 24 [document, 0, document, 2], node 5 detachedPara1 
+PASS setStartAfter() with range 24 [document, 0, document, 2], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 24 [document, 0, document, 2], node 7 document 
+PASS setStartAfter() with range 24 [document, 0, document, 2], node 8 detachedDiv 
+PASS setStartAfter() with range 24 [document, 0, document, 2], node 9 foreignDoc 
+PASS setStartAfter() with range 24 [document, 0, document, 2], node 10 foreignPara2 
+PASS setStartAfter() with range 24 [document, 0, document, 2], node 11 xmlDoc 
+PASS setStartAfter() with range 24 [document, 0, document, 2], node 12 xmlElement 
+PASS setStartAfter() with range 24 [document, 0, document, 2], node 13 detachedTextNode 
+PASS setStartAfter() with range 24 [document, 0, document, 2], node 14 foreignTextNode 
+PASS setStartAfter() with range 24 [document, 0, document, 2], node 15 processingInstruction 
+PASS setStartAfter() with range 24 [document, 0, document, 2], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 24 [document, 0, document, 2], node 17 comment 
+PASS setStartAfter() with range 24 [document, 0, document, 2], node 18 detachedComment 
+PASS setStartAfter() with range 24 [document, 0, document, 2], node 19 docfrag 
+PASS setStartAfter() with range 24 [document, 0, document, 2], node 20 doctype 
+PASS setStartAfter() with range 24 [document, 0, document, 2], node 21 foreignDoctype 
+PASS setStartAfter() with range 25 [comment, 2, comment, 3], node 0 paras[0] 
+PASS setStartAfter() with range 25 [comment, 2, comment, 3], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 25 [comment, 2, comment, 3], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 25 [comment, 2, comment, 3], node 3 foreignPara1 
+PASS setStartAfter() with range 25 [comment, 2, comment, 3], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 25 [comment, 2, comment, 3], node 5 detachedPara1 
+PASS setStartAfter() with range 25 [comment, 2, comment, 3], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 25 [comment, 2, comment, 3], node 7 document 
+PASS setStartAfter() with range 25 [comment, 2, comment, 3], node 8 detachedDiv 
+PASS setStartAfter() with range 25 [comment, 2, comment, 3], node 9 foreignDoc 
+PASS setStartAfter() with range 25 [comment, 2, comment, 3], node 10 foreignPara2 
+PASS setStartAfter() with range 25 [comment, 2, comment, 3], node 11 xmlDoc 
+PASS setStartAfter() with range 25 [comment, 2, comment, 3], node 12 xmlElement 
+PASS setStartAfter() with range 25 [comment, 2, comment, 3], node 13 detachedTextNode 
+PASS setStartAfter() with range 25 [comment, 2, comment, 3], node 14 foreignTextNode 
+PASS setStartAfter() with range 25 [comment, 2, comment, 3], node 15 processingInstruction 
+PASS setStartAfter() with range 25 [comment, 2, comment, 3], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 25 [comment, 2, comment, 3], node 17 comment 
+PASS setStartAfter() with range 25 [comment, 2, comment, 3], node 18 detachedComment 
+PASS setStartAfter() with range 25 [comment, 2, comment, 3], node 19 docfrag 
+PASS setStartAfter() with range 25 [comment, 2, comment, 3], node 20 doctype 
+PASS setStartAfter() with range 25 [comment, 2, comment, 3], node 21 foreignDoctype 
+PASS setStartAfter() with range 26 [testDiv, 0, comment, 5], node 0 paras[0] 
+PASS setStartAfter() with range 26 [testDiv, 0, comment, 5], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 26 [testDiv, 0, comment, 5], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 26 [testDiv, 0, comment, 5], node 3 foreignPara1 
+PASS setStartAfter() with range 26 [testDiv, 0, comment, 5], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 26 [testDiv, 0, comment, 5], node 5 detachedPara1 
+PASS setStartAfter() with range 26 [testDiv, 0, comment, 5], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 26 [testDiv, 0, comment, 5], node 7 document 
+PASS setStartAfter() with range 26 [testDiv, 0, comment, 5], node 8 detachedDiv 
+PASS setStartAfter() with range 26 [testDiv, 0, comment, 5], node 9 foreignDoc 
+PASS setStartAfter() with range 26 [testDiv, 0, comment, 5], node 10 foreignPara2 
+PASS setStartAfter() with range 26 [testDiv, 0, comment, 5], node 11 xmlDoc 
+PASS setStartAfter() with range 26 [testDiv, 0, comment, 5], node 12 xmlElement 
+PASS setStartAfter() with range 26 [testDiv, 0, comment, 5], node 13 detachedTextNode 
+PASS setStartAfter() with range 26 [testDiv, 0, comment, 5], node 14 foreignTextNode 
+PASS setStartAfter() with range 26 [testDiv, 0, comment, 5], node 15 processingInstruction 
+PASS setStartAfter() with range 26 [testDiv, 0, comment, 5], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 26 [testDiv, 0, comment, 5], node 17 comment 
+PASS setStartAfter() with range 26 [testDiv, 0, comment, 5], node 18 detachedComment 
+PASS setStartAfter() with range 26 [testDiv, 0, comment, 5], node 19 docfrag 
+PASS setStartAfter() with range 26 [testDiv, 0, comment, 5], node 20 doctype 
+PASS setStartAfter() with range 26 [testDiv, 0, comment, 5], node 21 foreignDoctype 
+PASS setStartAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 0 paras[0] 
+PASS setStartAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 3 foreignPara1 
+PASS setStartAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 5 detachedPara1 
+PASS setStartAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 7 document 
+PASS setStartAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 8 detachedDiv 
+PASS setStartAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 9 foreignDoc 
+PASS setStartAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 10 foreignPara2 
+PASS setStartAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 11 xmlDoc 
+PASS setStartAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 12 xmlElement 
+PASS setStartAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 13 detachedTextNode 
+PASS setStartAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 14 foreignTextNode 
+PASS setStartAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 15 processingInstruction 
+PASS setStartAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 17 comment 
+PASS setStartAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 18 detachedComment 
+PASS setStartAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 19 docfrag 
+PASS setStartAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 20 doctype 
+PASS setStartAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 21 foreignDoctype 
+PASS setStartAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 0 paras[0] 
+PASS setStartAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 3 foreignPara1 
+PASS setStartAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 5 detachedPara1 
+PASS setStartAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 7 document 
+PASS setStartAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 8 detachedDiv 
+PASS setStartAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 9 foreignDoc 
+PASS setStartAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 10 foreignPara2 
+PASS setStartAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 11 xmlDoc 
+PASS setStartAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 12 xmlElement 
+PASS setStartAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 13 detachedTextNode 
+PASS setStartAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 14 foreignTextNode 
+PASS setStartAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 15 processingInstruction 
+PASS setStartAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 17 comment 
+PASS setStartAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 18 detachedComment 
+PASS setStartAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 19 docfrag 
+PASS setStartAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 20 doctype 
+PASS setStartAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 21 foreignDoctype 
+PASS setStartAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 0 paras[0] 
+PASS setStartAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 3 foreignPara1 
+PASS setStartAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 5 detachedPara1 
+PASS setStartAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 7 document 
+PASS setStartAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 8 detachedDiv 
+PASS setStartAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 9 foreignDoc 
+PASS setStartAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 10 foreignPara2 
+PASS setStartAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 11 xmlDoc 
+PASS setStartAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 12 xmlElement 
+PASS setStartAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 13 detachedTextNode 
+PASS setStartAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 14 foreignTextNode 
+PASS setStartAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 15 processingInstruction 
+PASS setStartAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 17 comment 
+PASS setStartAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 18 detachedComment 
+PASS setStartAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 19 docfrag 
+PASS setStartAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 20 doctype 
+PASS setStartAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 21 foreignDoctype 
+PASS setStartAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 0 paras[0] 
+PASS setStartAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 3 foreignPara1 
+PASS setStartAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 5 detachedPara1 
+PASS setStartAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 7 document 
+PASS setStartAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 8 detachedDiv 
+PASS setStartAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 9 foreignDoc 
+PASS setStartAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 10 foreignPara2 
+PASS setStartAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 11 xmlDoc 
+PASS setStartAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 12 xmlElement 
+PASS setStartAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 13 detachedTextNode 
+PASS setStartAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 14 foreignTextNode 
+PASS setStartAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 15 processingInstruction 
+PASS setStartAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 17 comment 
+PASS setStartAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 18 detachedComment 
+PASS setStartAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 19 docfrag 
+PASS setStartAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 20 doctype 
+PASS setStartAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 21 foreignDoctype 
+PASS setStartAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 0 paras[0] 
+PASS setStartAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 3 foreignPara1 
+PASS setStartAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 5 detachedPara1 
+PASS setStartAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 7 document 
+PASS setStartAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 8 detachedDiv 
+PASS setStartAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 9 foreignDoc 
+PASS setStartAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 10 foreignPara2 
+PASS setStartAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 11 xmlDoc 
+PASS setStartAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 12 xmlElement 
+PASS setStartAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 13 detachedTextNode 
+PASS setStartAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 14 foreignTextNode 
+PASS setStartAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 15 processingInstruction 
+PASS setStartAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 17 comment 
+PASS setStartAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 18 detachedComment 
+PASS setStartAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 19 docfrag 
+PASS setStartAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 20 doctype 
+PASS setStartAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 21 foreignDoctype 
+PASS setStartAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 0 paras[0] 
+PASS setStartAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 3 foreignPara1 
+PASS setStartAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 5 detachedPara1 
+PASS setStartAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 7 document 
+PASS setStartAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 8 detachedDiv 
+PASS setStartAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 9 foreignDoc 
+PASS setStartAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 10 foreignPara2 
+PASS setStartAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 11 xmlDoc 
+PASS setStartAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 12 xmlElement 
+PASS setStartAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 13 detachedTextNode 
+PASS setStartAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 14 foreignTextNode 
+PASS setStartAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 15 processingInstruction 
+PASS setStartAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 17 comment 
+PASS setStartAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 18 detachedComment 
+PASS setStartAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 19 docfrag 
+PASS setStartAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 20 doctype 
+PASS setStartAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 21 foreignDoctype 
+PASS setStartAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 0 paras[0] 
+PASS setStartAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 3 foreignPara1 
+PASS setStartAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 5 detachedPara1 
+PASS setStartAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 7 document 
+PASS setStartAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 8 detachedDiv 
+PASS setStartAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 9 foreignDoc 
+PASS setStartAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 10 foreignPara2 
+PASS setStartAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 11 xmlDoc 
+PASS setStartAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 12 xmlElement 
+PASS setStartAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 13 detachedTextNode 
+PASS setStartAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 14 foreignTextNode 
+PASS setStartAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 15 processingInstruction 
+PASS setStartAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 17 comment 
+PASS setStartAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 18 detachedComment 
+PASS setStartAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 19 docfrag 
+PASS setStartAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 20 doctype 
+PASS setStartAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 21 foreignDoctype 
+PASS setStartAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 0 paras[0] 
+PASS setStartAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 3 foreignPara1 
+PASS setStartAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 5 detachedPara1 
+PASS setStartAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 7 document 
+PASS setStartAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 8 detachedDiv 
+PASS setStartAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 9 foreignDoc 
+PASS setStartAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 10 foreignPara2 
+PASS setStartAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 11 xmlDoc 
+PASS setStartAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 12 xmlElement 
+PASS setStartAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 13 detachedTextNode 
+PASS setStartAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 14 foreignTextNode 
+PASS setStartAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 15 processingInstruction 
+PASS setStartAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 17 comment 
+PASS setStartAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 18 detachedComment 
+PASS setStartAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 19 docfrag 
+PASS setStartAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 20 doctype 
+PASS setStartAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 21 foreignDoctype 
+PASS setStartAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 0 paras[0] 
+PASS setStartAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 3 foreignPara1 
+PASS setStartAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 5 detachedPara1 
+PASS setStartAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 7 document 
+PASS setStartAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 8 detachedDiv 
+PASS setStartAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 9 foreignDoc 
+PASS setStartAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 10 foreignPara2 
+PASS setStartAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 11 xmlDoc 
+PASS setStartAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 12 xmlElement 
+PASS setStartAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 13 detachedTextNode 
+PASS setStartAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 14 foreignTextNode 
+PASS setStartAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 15 processingInstruction 
+PASS setStartAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 17 comment 
+PASS setStartAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 18 detachedComment 
+PASS setStartAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 19 docfrag 
+PASS setStartAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 20 doctype 
+PASS setStartAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 21 foreignDoctype 
+PASS setStartAfter() with range 36 [docfrag, 0, docfrag, 0], node 0 paras[0] 
+PASS setStartAfter() with range 36 [docfrag, 0, docfrag, 0], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 36 [docfrag, 0, docfrag, 0], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 36 [docfrag, 0, docfrag, 0], node 3 foreignPara1 
+PASS setStartAfter() with range 36 [docfrag, 0, docfrag, 0], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 36 [docfrag, 0, docfrag, 0], node 5 detachedPara1 
+PASS setStartAfter() with range 36 [docfrag, 0, docfrag, 0], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 36 [docfrag, 0, docfrag, 0], node 7 document 
+PASS setStartAfter() with range 36 [docfrag, 0, docfrag, 0], node 8 detachedDiv 
+PASS setStartAfter() with range 36 [docfrag, 0, docfrag, 0], node 9 foreignDoc 
+PASS setStartAfter() with range 36 [docfrag, 0, docfrag, 0], node 10 foreignPara2 
+PASS setStartAfter() with range 36 [docfrag, 0, docfrag, 0], node 11 xmlDoc 
+PASS setStartAfter() with range 36 [docfrag, 0, docfrag, 0], node 12 xmlElement 
+PASS setStartAfter() with range 36 [docfrag, 0, docfrag, 0], node 13 detachedTextNode 
+PASS setStartAfter() with range 36 [docfrag, 0, docfrag, 0], node 14 foreignTextNode 
+PASS setStartAfter() with range 36 [docfrag, 0, docfrag, 0], node 15 processingInstruction 
+PASS setStartAfter() with range 36 [docfrag, 0, docfrag, 0], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 36 [docfrag, 0, docfrag, 0], node 17 comment 
+PASS setStartAfter() with range 36 [docfrag, 0, docfrag, 0], node 18 detachedComment 
+PASS setStartAfter() with range 36 [docfrag, 0, docfrag, 0], node 19 docfrag 
+PASS setStartAfter() with range 36 [docfrag, 0, docfrag, 0], node 20 doctype 
+PASS setStartAfter() with range 36 [docfrag, 0, docfrag, 0], node 21 foreignDoctype 
+PASS setStartAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 0 paras[0] 
+PASS setStartAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 1 paras[0].firstChild 
+PASS setStartAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 2 paras[1].firstChild 
+PASS setStartAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 3 foreignPara1 
+PASS setStartAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 4 foreignPara1.firstChild 
+PASS setStartAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 5 detachedPara1 
+PASS setStartAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 6 detachedPara1.firstChild 
+PASS setStartAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 7 document 
+PASS setStartAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 8 detachedDiv 
+PASS setStartAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 9 foreignDoc 
+PASS setStartAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 10 foreignPara2 
+PASS setStartAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 11 xmlDoc 
+PASS setStartAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 12 xmlElement 
+PASS setStartAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 13 detachedTextNode 
+PASS setStartAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 14 foreignTextNode 
+PASS setStartAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 15 processingInstruction 
+PASS setStartAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 16 detachedProcessingInstruction 
+PASS setStartAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 17 comment 
+PASS setStartAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 18 detachedComment 
+PASS setStartAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 19 docfrag 
+PASS setStartAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 20 doctype 
+PASS setStartAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 21 foreignDoctype 
+PASS setEndBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 0 paras[0] 
+PASS setEndBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 3 foreignPara1 
+PASS setEndBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 5 detachedPara1 
+PASS setEndBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 7 document 
+PASS setEndBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 8 detachedDiv 
+PASS setEndBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 9 foreignDoc 
+PASS setEndBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 10 foreignPara2 
+PASS setEndBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 11 xmlDoc 
+PASS setEndBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 12 xmlElement 
+PASS setEndBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 13 detachedTextNode 
+PASS setEndBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 14 foreignTextNode 
+PASS setEndBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 15 processingInstruction 
+PASS setEndBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 17 comment 
+PASS setEndBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 18 detachedComment 
+PASS setEndBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 19 docfrag 
+PASS setEndBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 20 doctype 
+PASS setEndBefore() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 21 foreignDoctype 
+PASS setEndBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 0 paras[0] 
+PASS setEndBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 3 foreignPara1 
+PASS setEndBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 5 detachedPara1 
+PASS setEndBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 7 document 
+PASS setEndBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 8 detachedDiv 
+PASS setEndBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 9 foreignDoc 
+PASS setEndBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 10 foreignPara2 
+PASS setEndBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 11 xmlDoc 
+PASS setEndBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 12 xmlElement 
+PASS setEndBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 13 detachedTextNode 
+PASS setEndBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 14 foreignTextNode 
+PASS setEndBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 15 processingInstruction 
+PASS setEndBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 17 comment 
+PASS setEndBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 18 detachedComment 
+PASS setEndBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 19 docfrag 
+PASS setEndBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 20 doctype 
+PASS setEndBefore() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 21 foreignDoctype 
+PASS setEndBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 0 paras[0] 
+PASS setEndBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 3 foreignPara1 
+PASS setEndBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 5 detachedPara1 
+PASS setEndBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 7 document 
+PASS setEndBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 8 detachedDiv 
+PASS setEndBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 9 foreignDoc 
+PASS setEndBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 10 foreignPara2 
+PASS setEndBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 11 xmlDoc 
+PASS setEndBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 12 xmlElement 
+PASS setEndBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 13 detachedTextNode 
+PASS setEndBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 14 foreignTextNode 
+PASS setEndBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 15 processingInstruction 
+PASS setEndBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 17 comment 
+PASS setEndBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 18 detachedComment 
+PASS setEndBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 19 docfrag 
+PASS setEndBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 20 doctype 
+PASS setEndBefore() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 21 foreignDoctype 
+PASS setEndBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 0 paras[0] 
+PASS setEndBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 3 foreignPara1 
+PASS setEndBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 5 detachedPara1 
+PASS setEndBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 7 document 
+PASS setEndBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 8 detachedDiv 
+PASS setEndBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 9 foreignDoc 
+PASS setEndBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 10 foreignPara2 
+PASS setEndBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 11 xmlDoc 
+PASS setEndBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 12 xmlElement 
+PASS setEndBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 13 detachedTextNode 
+PASS setEndBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 14 foreignTextNode 
+PASS setEndBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 15 processingInstruction 
+PASS setEndBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 17 comment 
+PASS setEndBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 18 detachedComment 
+PASS setEndBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 19 docfrag 
+PASS setEndBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 20 doctype 
+PASS setEndBefore() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 21 foreignDoctype 
+PASS setEndBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 0 paras[0] 
+PASS setEndBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 3 foreignPara1 
+PASS setEndBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 5 detachedPara1 
+PASS setEndBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 7 document 
+PASS setEndBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 8 detachedDiv 
+PASS setEndBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 9 foreignDoc 
+PASS setEndBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 10 foreignPara2 
+PASS setEndBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 11 xmlDoc 
+PASS setEndBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 12 xmlElement 
+PASS setEndBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 13 detachedTextNode 
+PASS setEndBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 14 foreignTextNode 
+PASS setEndBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 15 processingInstruction 
+PASS setEndBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 17 comment 
+PASS setEndBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 18 detachedComment 
+PASS setEndBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 19 docfrag 
+PASS setEndBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 20 doctype 
+PASS setEndBefore() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 21 foreignDoctype 
+PASS setEndBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 0 paras[0] 
+PASS setEndBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 3 foreignPara1 
+PASS setEndBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 5 detachedPara1 
+PASS setEndBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 7 document 
+PASS setEndBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 8 detachedDiv 
+PASS setEndBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 9 foreignDoc 
+PASS setEndBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 10 foreignPara2 
+PASS setEndBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 11 xmlDoc 
+PASS setEndBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 12 xmlElement 
+PASS setEndBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 13 detachedTextNode 
+PASS setEndBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 14 foreignTextNode 
+PASS setEndBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 15 processingInstruction 
+PASS setEndBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 17 comment 
+PASS setEndBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 18 detachedComment 
+PASS setEndBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 19 docfrag 
+PASS setEndBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 20 doctype 
+PASS setEndBefore() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 21 foreignDoctype 
+PASS setEndBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 0 paras[0] 
+PASS setEndBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 3 foreignPara1 
+PASS setEndBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 5 detachedPara1 
+PASS setEndBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 7 document 
+PASS setEndBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 8 detachedDiv 
+PASS setEndBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 9 foreignDoc 
+PASS setEndBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 10 foreignPara2 
+PASS setEndBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 11 xmlDoc 
+PASS setEndBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 12 xmlElement 
+PASS setEndBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 13 detachedTextNode 
+PASS setEndBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 14 foreignTextNode 
+PASS setEndBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 15 processingInstruction 
+PASS setEndBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 17 comment 
+PASS setEndBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 18 detachedComment 
+PASS setEndBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 19 docfrag 
+PASS setEndBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 20 doctype 
+PASS setEndBefore() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 21 foreignDoctype 
+PASS setEndBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 0 paras[0] 
+PASS setEndBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 3 foreignPara1 
+PASS setEndBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 5 detachedPara1 
+PASS setEndBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 7 document 
+PASS setEndBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 8 detachedDiv 
+PASS setEndBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 9 foreignDoc 
+PASS setEndBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 10 foreignPara2 
+PASS setEndBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 11 xmlDoc 
+PASS setEndBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 12 xmlElement 
+PASS setEndBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 13 detachedTextNode 
+PASS setEndBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 14 foreignTextNode 
+PASS setEndBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 15 processingInstruction 
+PASS setEndBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 17 comment 
+PASS setEndBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 18 detachedComment 
+PASS setEndBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 19 docfrag 
+PASS setEndBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 20 doctype 
+PASS setEndBefore() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 21 foreignDoctype 
+PASS setEndBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 0 paras[0] 
+PASS setEndBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 3 foreignPara1 
+PASS setEndBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 5 detachedPara1 
+PASS setEndBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 7 document 
+PASS setEndBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 8 detachedDiv 
+PASS setEndBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 9 foreignDoc 
+PASS setEndBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 10 foreignPara2 
+PASS setEndBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 11 xmlDoc 
+PASS setEndBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 12 xmlElement 
+PASS setEndBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 13 detachedTextNode 
+PASS setEndBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 14 foreignTextNode 
+PASS setEndBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 15 processingInstruction 
+PASS setEndBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 17 comment 
+PASS setEndBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 18 detachedComment 
+PASS setEndBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 19 docfrag 
+PASS setEndBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 20 doctype 
+PASS setEndBefore() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 21 foreignDoctype 
+PASS setEndBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 0 paras[0] 
+PASS setEndBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 3 foreignPara1 
+PASS setEndBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 5 detachedPara1 
+PASS setEndBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 7 document 
+PASS setEndBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 8 detachedDiv 
+PASS setEndBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 9 foreignDoc 
+PASS setEndBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 10 foreignPara2 
+PASS setEndBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 11 xmlDoc 
+PASS setEndBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 12 xmlElement 
+PASS setEndBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 13 detachedTextNode 
+PASS setEndBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 14 foreignTextNode 
+PASS setEndBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 15 processingInstruction 
+PASS setEndBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 17 comment 
+PASS setEndBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 18 detachedComment 
+PASS setEndBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 19 docfrag 
+PASS setEndBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 20 doctype 
+PASS setEndBefore() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 21 foreignDoctype 
+PASS setEndBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 0 paras[0] 
+PASS setEndBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 3 foreignPara1 
+PASS setEndBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 5 detachedPara1 
+PASS setEndBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 7 document 
+PASS setEndBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 8 detachedDiv 
+PASS setEndBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 9 foreignDoc 
+PASS setEndBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 10 foreignPara2 
+PASS setEndBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 11 xmlDoc 
+PASS setEndBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 12 xmlElement 
+PASS setEndBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 13 detachedTextNode 
+PASS setEndBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 14 foreignTextNode 
+PASS setEndBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 15 processingInstruction 
+PASS setEndBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 17 comment 
+PASS setEndBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 18 detachedComment 
+PASS setEndBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 19 docfrag 
+PASS setEndBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 20 doctype 
+PASS setEndBefore() with range 10 [document.documentElement, 0, document.documentElement, 1], node 21 foreignDoctype 
+PASS setEndBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 0 paras[0] 
+PASS setEndBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 3 foreignPara1 
+PASS setEndBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 5 detachedPara1 
+PASS setEndBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 7 document 
+PASS setEndBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 8 detachedDiv 
+PASS setEndBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 9 foreignDoc 
+PASS setEndBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 10 foreignPara2 
+PASS setEndBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 11 xmlDoc 
+PASS setEndBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 12 xmlElement 
+PASS setEndBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 13 detachedTextNode 
+PASS setEndBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 14 foreignTextNode 
+PASS setEndBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 15 processingInstruction 
+PASS setEndBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 17 comment 
+PASS setEndBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 18 detachedComment 
+PASS setEndBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 19 docfrag 
+PASS setEndBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 20 doctype 
+PASS setEndBefore() with range 11 [document.documentElement, 0, document.documentElement, 2], node 21 foreignDoctype 
+PASS setEndBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 0 paras[0] 
+PASS setEndBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 3 foreignPara1 
+PASS setEndBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 5 detachedPara1 
+PASS setEndBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 7 document 
+PASS setEndBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 8 detachedDiv 
+PASS setEndBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 9 foreignDoc 
+PASS setEndBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 10 foreignPara2 
+PASS setEndBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 11 xmlDoc 
+PASS setEndBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 12 xmlElement 
+PASS setEndBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 13 detachedTextNode 
+PASS setEndBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 14 foreignTextNode 
+PASS setEndBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 15 processingInstruction 
+PASS setEndBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 17 comment 
+PASS setEndBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 18 detachedComment 
+PASS setEndBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 19 docfrag 
+PASS setEndBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 20 doctype 
+PASS setEndBefore() with range 12 [document.documentElement, 1, document.documentElement, 2], node 21 foreignDoctype 
+PASS setEndBefore() with range 13 [document.head, 1, document.head, 1], node 0 paras[0] 
+PASS setEndBefore() with range 13 [document.head, 1, document.head, 1], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 13 [document.head, 1, document.head, 1], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 13 [document.head, 1, document.head, 1], node 3 foreignPara1 
+PASS setEndBefore() with range 13 [document.head, 1, document.head, 1], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 13 [document.head, 1, document.head, 1], node 5 detachedPara1 
+PASS setEndBefore() with range 13 [document.head, 1, document.head, 1], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 13 [document.head, 1, document.head, 1], node 7 document 
+PASS setEndBefore() with range 13 [document.head, 1, document.head, 1], node 8 detachedDiv 
+PASS setEndBefore() with range 13 [document.head, 1, document.head, 1], node 9 foreignDoc 
+PASS setEndBefore() with range 13 [document.head, 1, document.head, 1], node 10 foreignPara2 
+PASS setEndBefore() with range 13 [document.head, 1, document.head, 1], node 11 xmlDoc 
+PASS setEndBefore() with range 13 [document.head, 1, document.head, 1], node 12 xmlElement 
+PASS setEndBefore() with range 13 [document.head, 1, document.head, 1], node 13 detachedTextNode 
+PASS setEndBefore() with range 13 [document.head, 1, document.head, 1], node 14 foreignTextNode 
+PASS setEndBefore() with range 13 [document.head, 1, document.head, 1], node 15 processingInstruction 
+PASS setEndBefore() with range 13 [document.head, 1, document.head, 1], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 13 [document.head, 1, document.head, 1], node 17 comment 
+PASS setEndBefore() with range 13 [document.head, 1, document.head, 1], node 18 detachedComment 
+PASS setEndBefore() with range 13 [document.head, 1, document.head, 1], node 19 docfrag 
+PASS setEndBefore() with range 13 [document.head, 1, document.head, 1], node 20 doctype 
+PASS setEndBefore() with range 13 [document.head, 1, document.head, 1], node 21 foreignDoctype 
+PASS setEndBefore() with range 14 [document.body, 4, document.body, 5], node 0 paras[0] 
+PASS setEndBefore() with range 14 [document.body, 4, document.body, 5], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 14 [document.body, 4, document.body, 5], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 14 [document.body, 4, document.body, 5], node 3 foreignPara1 
+PASS setEndBefore() with range 14 [document.body, 4, document.body, 5], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 14 [document.body, 4, document.body, 5], node 5 detachedPara1 
+PASS setEndBefore() with range 14 [document.body, 4, document.body, 5], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 14 [document.body, 4, document.body, 5], node 7 document 
+PASS setEndBefore() with range 14 [document.body, 4, document.body, 5], node 8 detachedDiv 
+PASS setEndBefore() with range 14 [document.body, 4, document.body, 5], node 9 foreignDoc 
+PASS setEndBefore() with range 14 [document.body, 4, document.body, 5], node 10 foreignPara2 
+PASS setEndBefore() with range 14 [document.body, 4, document.body, 5], node 11 xmlDoc 
+PASS setEndBefore() with range 14 [document.body, 4, document.body, 5], node 12 xmlElement 
+PASS setEndBefore() with range 14 [document.body, 4, document.body, 5], node 13 detachedTextNode 
+PASS setEndBefore() with range 14 [document.body, 4, document.body, 5], node 14 foreignTextNode 
+PASS setEndBefore() with range 14 [document.body, 4, document.body, 5], node 15 processingInstruction 
+PASS setEndBefore() with range 14 [document.body, 4, document.body, 5], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 14 [document.body, 4, document.body, 5], node 17 comment 
+PASS setEndBefore() with range 14 [document.body, 4, document.body, 5], node 18 detachedComment 
+PASS setEndBefore() with range 14 [document.body, 4, document.body, 5], node 19 docfrag 
+PASS setEndBefore() with range 14 [document.body, 4, document.body, 5], node 20 doctype 
+PASS setEndBefore() with range 14 [document.body, 4, document.body, 5], node 21 foreignDoctype 
+PASS setEndBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 0 paras[0] 
+PASS setEndBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 3 foreignPara1 
+PASS setEndBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 5 detachedPara1 
+PASS setEndBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 7 document 
+PASS setEndBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 8 detachedDiv 
+PASS setEndBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 9 foreignDoc 
+PASS setEndBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 10 foreignPara2 
+PASS setEndBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 11 xmlDoc 
+PASS setEndBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 12 xmlElement 
+PASS setEndBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 13 detachedTextNode 
+PASS setEndBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 14 foreignTextNode 
+PASS setEndBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 15 processingInstruction 
+PASS setEndBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 17 comment 
+PASS setEndBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 18 detachedComment 
+PASS setEndBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 19 docfrag 
+PASS setEndBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 20 doctype 
+PASS setEndBefore() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 21 foreignDoctype 
+PASS setEndBefore() with range 16 [paras[0], 0, paras[0], 1], node 0 paras[0] 
+PASS setEndBefore() with range 16 [paras[0], 0, paras[0], 1], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 16 [paras[0], 0, paras[0], 1], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 16 [paras[0], 0, paras[0], 1], node 3 foreignPara1 
+PASS setEndBefore() with range 16 [paras[0], 0, paras[0], 1], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 16 [paras[0], 0, paras[0], 1], node 5 detachedPara1 
+PASS setEndBefore() with range 16 [paras[0], 0, paras[0], 1], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 16 [paras[0], 0, paras[0], 1], node 7 document 
+PASS setEndBefore() with range 16 [paras[0], 0, paras[0], 1], node 8 detachedDiv 
+PASS setEndBefore() with range 16 [paras[0], 0, paras[0], 1], node 9 foreignDoc 
+PASS setEndBefore() with range 16 [paras[0], 0, paras[0], 1], node 10 foreignPara2 
+PASS setEndBefore() with range 16 [paras[0], 0, paras[0], 1], node 11 xmlDoc 
+PASS setEndBefore() with range 16 [paras[0], 0, paras[0], 1], node 12 xmlElement 
+PASS setEndBefore() with range 16 [paras[0], 0, paras[0], 1], node 13 detachedTextNode 
+PASS setEndBefore() with range 16 [paras[0], 0, paras[0], 1], node 14 foreignTextNode 
+PASS setEndBefore() with range 16 [paras[0], 0, paras[0], 1], node 15 processingInstruction 
+PASS setEndBefore() with range 16 [paras[0], 0, paras[0], 1], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 16 [paras[0], 0, paras[0], 1], node 17 comment 
+PASS setEndBefore() with range 16 [paras[0], 0, paras[0], 1], node 18 detachedComment 
+PASS setEndBefore() with range 16 [paras[0], 0, paras[0], 1], node 19 docfrag 
+PASS setEndBefore() with range 16 [paras[0], 0, paras[0], 1], node 20 doctype 
+PASS setEndBefore() with range 16 [paras[0], 0, paras[0], 1], node 21 foreignDoctype 
+PASS setEndBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 0 paras[0] 
+PASS setEndBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 3 foreignPara1 
+PASS setEndBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 5 detachedPara1 
+PASS setEndBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 7 document 
+PASS setEndBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 8 detachedDiv 
+PASS setEndBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 9 foreignDoc 
+PASS setEndBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 10 foreignPara2 
+PASS setEndBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 11 xmlDoc 
+PASS setEndBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 12 xmlElement 
+PASS setEndBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 13 detachedTextNode 
+PASS setEndBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 14 foreignTextNode 
+PASS setEndBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 15 processingInstruction 
+PASS setEndBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 17 comment 
+PASS setEndBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 18 detachedComment 
+PASS setEndBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 19 docfrag 
+PASS setEndBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 20 doctype 
+PASS setEndBefore() with range 17 [detachedPara1, 0, detachedPara1, 1], node 21 foreignDoctype 
+PASS setEndBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 0 paras[0] 
+PASS setEndBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 3 foreignPara1 
+PASS setEndBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 5 detachedPara1 
+PASS setEndBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 7 document 
+PASS setEndBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 8 detachedDiv 
+PASS setEndBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 9 foreignDoc 
+PASS setEndBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 10 foreignPara2 
+PASS setEndBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 11 xmlDoc 
+PASS setEndBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 12 xmlElement 
+PASS setEndBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 13 detachedTextNode 
+PASS setEndBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 14 foreignTextNode 
+PASS setEndBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 15 processingInstruction 
+PASS setEndBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 17 comment 
+PASS setEndBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 18 detachedComment 
+PASS setEndBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 19 docfrag 
+PASS setEndBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 20 doctype 
+PASS setEndBefore() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 21 foreignDoctype 
+PASS setEndBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 0 paras[0] 
+PASS setEndBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 3 foreignPara1 
+PASS setEndBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 5 detachedPara1 
+PASS setEndBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 7 document 
+PASS setEndBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 8 detachedDiv 
+PASS setEndBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 9 foreignDoc 
+PASS setEndBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 10 foreignPara2 
+PASS setEndBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 11 xmlDoc 
+PASS setEndBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 12 xmlElement 
+PASS setEndBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 13 detachedTextNode 
+PASS setEndBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 14 foreignTextNode 
+PASS setEndBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 15 processingInstruction 
+PASS setEndBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 17 comment 
+PASS setEndBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 18 detachedComment 
+PASS setEndBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 19 docfrag 
+PASS setEndBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 20 doctype 
+PASS setEndBefore() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 21 foreignDoctype 
+PASS setEndBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 0 paras[0] 
+PASS setEndBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 3 foreignPara1 
+PASS setEndBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 5 detachedPara1 
+PASS setEndBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 7 document 
+PASS setEndBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 8 detachedDiv 
+PASS setEndBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 9 foreignDoc 
+PASS setEndBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 10 foreignPara2 
+PASS setEndBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 11 xmlDoc 
+PASS setEndBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 12 xmlElement 
+PASS setEndBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 13 detachedTextNode 
+PASS setEndBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 14 foreignTextNode 
+PASS setEndBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 15 processingInstruction 
+PASS setEndBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 17 comment 
+PASS setEndBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 18 detachedComment 
+PASS setEndBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 19 docfrag 
+PASS setEndBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 20 doctype 
+PASS setEndBefore() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 21 foreignDoctype 
+PASS setEndBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 0 paras[0] 
+PASS setEndBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 3 foreignPara1 
+PASS setEndBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 5 detachedPara1 
+PASS setEndBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 7 document 
+PASS setEndBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 8 detachedDiv 
+PASS setEndBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 9 foreignDoc 
+PASS setEndBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 10 foreignPara2 
+PASS setEndBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 11 xmlDoc 
+PASS setEndBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 12 xmlElement 
+PASS setEndBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 13 detachedTextNode 
+PASS setEndBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 14 foreignTextNode 
+PASS setEndBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 15 processingInstruction 
+PASS setEndBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 17 comment 
+PASS setEndBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 18 detachedComment 
+PASS setEndBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 19 docfrag 
+PASS setEndBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 20 doctype 
+PASS setEndBefore() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 21 foreignDoctype 
+PASS setEndBefore() with range 22 [testDiv, 2, paras[4], 1], node 0 paras[0] 
+PASS setEndBefore() with range 22 [testDiv, 2, paras[4], 1], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 22 [testDiv, 2, paras[4], 1], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 22 [testDiv, 2, paras[4], 1], node 3 foreignPara1 
+PASS setEndBefore() with range 22 [testDiv, 2, paras[4], 1], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 22 [testDiv, 2, paras[4], 1], node 5 detachedPara1 
+PASS setEndBefore() with range 22 [testDiv, 2, paras[4], 1], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 22 [testDiv, 2, paras[4], 1], node 7 document 
+PASS setEndBefore() with range 22 [testDiv, 2, paras[4], 1], node 8 detachedDiv 
+PASS setEndBefore() with range 22 [testDiv, 2, paras[4], 1], node 9 foreignDoc 
+PASS setEndBefore() with range 22 [testDiv, 2, paras[4], 1], node 10 foreignPara2 
+PASS setEndBefore() with range 22 [testDiv, 2, paras[4], 1], node 11 xmlDoc 
+PASS setEndBefore() with range 22 [testDiv, 2, paras[4], 1], node 12 xmlElement 
+PASS setEndBefore() with range 22 [testDiv, 2, paras[4], 1], node 13 detachedTextNode 
+PASS setEndBefore() with range 22 [testDiv, 2, paras[4], 1], node 14 foreignTextNode 
+PASS setEndBefore() with range 22 [testDiv, 2, paras[4], 1], node 15 processingInstruction 
+PASS setEndBefore() with range 22 [testDiv, 2, paras[4], 1], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 22 [testDiv, 2, paras[4], 1], node 17 comment 
+PASS setEndBefore() with range 22 [testDiv, 2, paras[4], 1], node 18 detachedComment 
+PASS setEndBefore() with range 22 [testDiv, 2, paras[4], 1], node 19 docfrag 
+PASS setEndBefore() with range 22 [testDiv, 2, paras[4], 1], node 20 doctype 
+PASS setEndBefore() with range 22 [testDiv, 2, paras[4], 1], node 21 foreignDoctype 
+PASS setEndBefore() with range 23 [document, 0, document, 1], node 0 paras[0] 
+PASS setEndBefore() with range 23 [document, 0, document, 1], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 23 [document, 0, document, 1], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 23 [document, 0, document, 1], node 3 foreignPara1 
+PASS setEndBefore() with range 23 [document, 0, document, 1], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 23 [document, 0, document, 1], node 5 detachedPara1 
+PASS setEndBefore() with range 23 [document, 0, document, 1], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 23 [document, 0, document, 1], node 7 document 
+PASS setEndBefore() with range 23 [document, 0, document, 1], node 8 detachedDiv 
+PASS setEndBefore() with range 23 [document, 0, document, 1], node 9 foreignDoc 
+PASS setEndBefore() with range 23 [document, 0, document, 1], node 10 foreignPara2 
+PASS setEndBefore() with range 23 [document, 0, document, 1], node 11 xmlDoc 
+PASS setEndBefore() with range 23 [document, 0, document, 1], node 12 xmlElement 
+PASS setEndBefore() with range 23 [document, 0, document, 1], node 13 detachedTextNode 
+PASS setEndBefore() with range 23 [document, 0, document, 1], node 14 foreignTextNode 
+PASS setEndBefore() with range 23 [document, 0, document, 1], node 15 processingInstruction 
+PASS setEndBefore() with range 23 [document, 0, document, 1], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 23 [document, 0, document, 1], node 17 comment 
+PASS setEndBefore() with range 23 [document, 0, document, 1], node 18 detachedComment 
+PASS setEndBefore() with range 23 [document, 0, document, 1], node 19 docfrag 
+PASS setEndBefore() with range 23 [document, 0, document, 1], node 20 doctype 
+PASS setEndBefore() with range 23 [document, 0, document, 1], node 21 foreignDoctype 
+PASS setEndBefore() with range 24 [document, 0, document, 2], node 0 paras[0] 
+PASS setEndBefore() with range 24 [document, 0, document, 2], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 24 [document, 0, document, 2], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 24 [document, 0, document, 2], node 3 foreignPara1 
+PASS setEndBefore() with range 24 [document, 0, document, 2], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 24 [document, 0, document, 2], node 5 detachedPara1 
+PASS setEndBefore() with range 24 [document, 0, document, 2], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 24 [document, 0, document, 2], node 7 document 
+PASS setEndBefore() with range 24 [document, 0, document, 2], node 8 detachedDiv 
+PASS setEndBefore() with range 24 [document, 0, document, 2], node 9 foreignDoc 
+PASS setEndBefore() with range 24 [document, 0, document, 2], node 10 foreignPara2 
+PASS setEndBefore() with range 24 [document, 0, document, 2], node 11 xmlDoc 
+PASS setEndBefore() with range 24 [document, 0, document, 2], node 12 xmlElement 
+PASS setEndBefore() with range 24 [document, 0, document, 2], node 13 detachedTextNode 
+PASS setEndBefore() with range 24 [document, 0, document, 2], node 14 foreignTextNode 
+PASS setEndBefore() with range 24 [document, 0, document, 2], node 15 processingInstruction 
+PASS setEndBefore() with range 24 [document, 0, document, 2], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 24 [document, 0, document, 2], node 17 comment 
+PASS setEndBefore() with range 24 [document, 0, document, 2], node 18 detachedComment 
+PASS setEndBefore() with range 24 [document, 0, document, 2], node 19 docfrag 
+PASS setEndBefore() with range 24 [document, 0, document, 2], node 20 doctype 
+PASS setEndBefore() with range 24 [document, 0, document, 2], node 21 foreignDoctype 
+PASS setEndBefore() with range 25 [comment, 2, comment, 3], node 0 paras[0] 
+PASS setEndBefore() with range 25 [comment, 2, comment, 3], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 25 [comment, 2, comment, 3], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 25 [comment, 2, comment, 3], node 3 foreignPara1 
+PASS setEndBefore() with range 25 [comment, 2, comment, 3], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 25 [comment, 2, comment, 3], node 5 detachedPara1 
+PASS setEndBefore() with range 25 [comment, 2, comment, 3], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 25 [comment, 2, comment, 3], node 7 document 
+PASS setEndBefore() with range 25 [comment, 2, comment, 3], node 8 detachedDiv 
+PASS setEndBefore() with range 25 [comment, 2, comment, 3], node 9 foreignDoc 
+PASS setEndBefore() with range 25 [comment, 2, comment, 3], node 10 foreignPara2 
+PASS setEndBefore() with range 25 [comment, 2, comment, 3], node 11 xmlDoc 
+PASS setEndBefore() with range 25 [comment, 2, comment, 3], node 12 xmlElement 
+PASS setEndBefore() with range 25 [comment, 2, comment, 3], node 13 detachedTextNode 
+PASS setEndBefore() with range 25 [comment, 2, comment, 3], node 14 foreignTextNode 
+PASS setEndBefore() with range 25 [comment, 2, comment, 3], node 15 processingInstruction 
+PASS setEndBefore() with range 25 [comment, 2, comment, 3], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 25 [comment, 2, comment, 3], node 17 comment 
+PASS setEndBefore() with range 25 [comment, 2, comment, 3], node 18 detachedComment 
+PASS setEndBefore() with range 25 [comment, 2, comment, 3], node 19 docfrag 
+PASS setEndBefore() with range 25 [comment, 2, comment, 3], node 20 doctype 
+PASS setEndBefore() with range 25 [comment, 2, comment, 3], node 21 foreignDoctype 
+PASS setEndBefore() with range 26 [testDiv, 0, comment, 5], node 0 paras[0] 
+PASS setEndBefore() with range 26 [testDiv, 0, comment, 5], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 26 [testDiv, 0, comment, 5], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 26 [testDiv, 0, comment, 5], node 3 foreignPara1 
+PASS setEndBefore() with range 26 [testDiv, 0, comment, 5], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 26 [testDiv, 0, comment, 5], node 5 detachedPara1 
+PASS setEndBefore() with range 26 [testDiv, 0, comment, 5], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 26 [testDiv, 0, comment, 5], node 7 document 
+PASS setEndBefore() with range 26 [testDiv, 0, comment, 5], node 8 detachedDiv 
+PASS setEndBefore() with range 26 [testDiv, 0, comment, 5], node 9 foreignDoc 
+PASS setEndBefore() with range 26 [testDiv, 0, comment, 5], node 10 foreignPara2 
+PASS setEndBefore() with range 26 [testDiv, 0, comment, 5], node 11 xmlDoc 
+PASS setEndBefore() with range 26 [testDiv, 0, comment, 5], node 12 xmlElement 
+PASS setEndBefore() with range 26 [testDiv, 0, comment, 5], node 13 detachedTextNode 
+PASS setEndBefore() with range 26 [testDiv, 0, comment, 5], node 14 foreignTextNode 
+PASS setEndBefore() with range 26 [testDiv, 0, comment, 5], node 15 processingInstruction 
+PASS setEndBefore() with range 26 [testDiv, 0, comment, 5], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 26 [testDiv, 0, comment, 5], node 17 comment 
+PASS setEndBefore() with range 26 [testDiv, 0, comment, 5], node 18 detachedComment 
+PASS setEndBefore() with range 26 [testDiv, 0, comment, 5], node 19 docfrag 
+PASS setEndBefore() with range 26 [testDiv, 0, comment, 5], node 20 doctype 
+PASS setEndBefore() with range 26 [testDiv, 0, comment, 5], node 21 foreignDoctype 
+PASS setEndBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 0 paras[0] 
+PASS setEndBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 3 foreignPara1 
+PASS setEndBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 5 detachedPara1 
+PASS setEndBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 7 document 
+PASS setEndBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 8 detachedDiv 
+PASS setEndBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 9 foreignDoc 
+PASS setEndBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 10 foreignPara2 
+PASS setEndBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 11 xmlDoc 
+PASS setEndBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 12 xmlElement 
+PASS setEndBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 13 detachedTextNode 
+PASS setEndBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 14 foreignTextNode 
+PASS setEndBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 15 processingInstruction 
+PASS setEndBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 17 comment 
+PASS setEndBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 18 detachedComment 
+PASS setEndBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 19 docfrag 
+PASS setEndBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 20 doctype 
+PASS setEndBefore() with range 27 [foreignDoc, 1, foreignComment, 2], node 21 foreignDoctype 
+PASS setEndBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 0 paras[0] 
+PASS setEndBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 3 foreignPara1 
+PASS setEndBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 5 detachedPara1 
+PASS setEndBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 7 document 
+PASS setEndBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 8 detachedDiv 
+PASS setEndBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 9 foreignDoc 
+PASS setEndBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 10 foreignPara2 
+PASS setEndBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 11 xmlDoc 
+PASS setEndBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 12 xmlElement 
+PASS setEndBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 13 detachedTextNode 
+PASS setEndBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 14 foreignTextNode 
+PASS setEndBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 15 processingInstruction 
+PASS setEndBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 17 comment 
+PASS setEndBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 18 detachedComment 
+PASS setEndBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 19 docfrag 
+PASS setEndBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 20 doctype 
+PASS setEndBefore() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 21 foreignDoctype 
+PASS setEndBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 0 paras[0] 
+PASS setEndBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 3 foreignPara1 
+PASS setEndBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 5 detachedPara1 
+PASS setEndBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 7 document 
+PASS setEndBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 8 detachedDiv 
+PASS setEndBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 9 foreignDoc 
+PASS setEndBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 10 foreignPara2 
+PASS setEndBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 11 xmlDoc 
+PASS setEndBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 12 xmlElement 
+PASS setEndBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 13 detachedTextNode 
+PASS setEndBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 14 foreignTextNode 
+PASS setEndBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 15 processingInstruction 
+PASS setEndBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 17 comment 
+PASS setEndBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 18 detachedComment 
+PASS setEndBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 19 docfrag 
+PASS setEndBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 20 doctype 
+PASS setEndBefore() with range 29 [xmlDoc, 1, xmlComment, 0], node 21 foreignDoctype 
+PASS setEndBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 0 paras[0] 
+PASS setEndBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 3 foreignPara1 
+PASS setEndBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 5 detachedPara1 
+PASS setEndBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 7 document 
+PASS setEndBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 8 detachedDiv 
+PASS setEndBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 9 foreignDoc 
+PASS setEndBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 10 foreignPara2 
+PASS setEndBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 11 xmlDoc 
+PASS setEndBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 12 xmlElement 
+PASS setEndBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 13 detachedTextNode 
+PASS setEndBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 14 foreignTextNode 
+PASS setEndBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 15 processingInstruction 
+PASS setEndBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 17 comment 
+PASS setEndBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 18 detachedComment 
+PASS setEndBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 19 docfrag 
+PASS setEndBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 20 doctype 
+PASS setEndBefore() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 21 foreignDoctype 
+PASS setEndBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 0 paras[0] 
+PASS setEndBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 3 foreignPara1 
+PASS setEndBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 5 detachedPara1 
+PASS setEndBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 7 document 
+PASS setEndBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 8 detachedDiv 
+PASS setEndBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 9 foreignDoc 
+PASS setEndBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 10 foreignPara2 
+PASS setEndBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 11 xmlDoc 
+PASS setEndBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 12 xmlElement 
+PASS setEndBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 13 detachedTextNode 
+PASS setEndBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 14 foreignTextNode 
+PASS setEndBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 15 processingInstruction 
+PASS setEndBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 17 comment 
+PASS setEndBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 18 detachedComment 
+PASS setEndBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 19 docfrag 
+PASS setEndBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 20 doctype 
+PASS setEndBefore() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 21 foreignDoctype 
+PASS setEndBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 0 paras[0] 
+PASS setEndBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 3 foreignPara1 
+PASS setEndBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 5 detachedPara1 
+PASS setEndBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 7 document 
+PASS setEndBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 8 detachedDiv 
+PASS setEndBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 9 foreignDoc 
+PASS setEndBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 10 foreignPara2 
+PASS setEndBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 11 xmlDoc 
+PASS setEndBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 12 xmlElement 
+PASS setEndBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 13 detachedTextNode 
+PASS setEndBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 14 foreignTextNode 
+PASS setEndBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 15 processingInstruction 
+PASS setEndBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 17 comment 
+PASS setEndBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 18 detachedComment 
+PASS setEndBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 19 docfrag 
+PASS setEndBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 20 doctype 
+PASS setEndBefore() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 21 foreignDoctype 
+PASS setEndBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 0 paras[0] 
+PASS setEndBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 3 foreignPara1 
+PASS setEndBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 5 detachedPara1 
+PASS setEndBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 7 document 
+PASS setEndBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 8 detachedDiv 
+PASS setEndBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 9 foreignDoc 
+PASS setEndBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 10 foreignPara2 
+PASS setEndBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 11 xmlDoc 
+PASS setEndBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 12 xmlElement 
+PASS setEndBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 13 detachedTextNode 
+PASS setEndBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 14 foreignTextNode 
+PASS setEndBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 15 processingInstruction 
+PASS setEndBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 17 comment 
+PASS setEndBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 18 detachedComment 
+PASS setEndBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 19 docfrag 
+PASS setEndBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 20 doctype 
+PASS setEndBefore() with range 33 [detachedComment, 3, detachedComment, 4], node 21 foreignDoctype 
+PASS setEndBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 0 paras[0] 
+PASS setEndBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 3 foreignPara1 
+PASS setEndBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 5 detachedPara1 
+PASS setEndBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 7 document 
+PASS setEndBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 8 detachedDiv 
+PASS setEndBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 9 foreignDoc 
+PASS setEndBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 10 foreignPara2 
+PASS setEndBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 11 xmlDoc 
+PASS setEndBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 12 xmlElement 
+PASS setEndBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 13 detachedTextNode 
+PASS setEndBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 14 foreignTextNode 
+PASS setEndBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 15 processingInstruction 
+PASS setEndBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 17 comment 
+PASS setEndBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 18 detachedComment 
+PASS setEndBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 19 docfrag 
+PASS setEndBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 20 doctype 
+PASS setEndBefore() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 21 foreignDoctype 
+PASS setEndBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 0 paras[0] 
+PASS setEndBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 3 foreignPara1 
+PASS setEndBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 5 detachedPara1 
+PASS setEndBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 7 document 
+PASS setEndBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 8 detachedDiv 
+PASS setEndBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 9 foreignDoc 
+PASS setEndBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 10 foreignPara2 
+PASS setEndBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 11 xmlDoc 
+PASS setEndBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 12 xmlElement 
+PASS setEndBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 13 detachedTextNode 
+PASS setEndBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 14 foreignTextNode 
+PASS setEndBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 15 processingInstruction 
+PASS setEndBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 17 comment 
+PASS setEndBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 18 detachedComment 
+PASS setEndBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 19 docfrag 
+PASS setEndBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 20 doctype 
+PASS setEndBefore() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 21 foreignDoctype 
+PASS setEndBefore() with range 36 [docfrag, 0, docfrag, 0], node 0 paras[0] 
+PASS setEndBefore() with range 36 [docfrag, 0, docfrag, 0], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 36 [docfrag, 0, docfrag, 0], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 36 [docfrag, 0, docfrag, 0], node 3 foreignPara1 
+PASS setEndBefore() with range 36 [docfrag, 0, docfrag, 0], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 36 [docfrag, 0, docfrag, 0], node 5 detachedPara1 
+PASS setEndBefore() with range 36 [docfrag, 0, docfrag, 0], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 36 [docfrag, 0, docfrag, 0], node 7 document 
+PASS setEndBefore() with range 36 [docfrag, 0, docfrag, 0], node 8 detachedDiv 
+PASS setEndBefore() with range 36 [docfrag, 0, docfrag, 0], node 9 foreignDoc 
+PASS setEndBefore() with range 36 [docfrag, 0, docfrag, 0], node 10 foreignPara2 
+PASS setEndBefore() with range 36 [docfrag, 0, docfrag, 0], node 11 xmlDoc 
+PASS setEndBefore() with range 36 [docfrag, 0, docfrag, 0], node 12 xmlElement 
+PASS setEndBefore() with range 36 [docfrag, 0, docfrag, 0], node 13 detachedTextNode 
+PASS setEndBefore() with range 36 [docfrag, 0, docfrag, 0], node 14 foreignTextNode 
+PASS setEndBefore() with range 36 [docfrag, 0, docfrag, 0], node 15 processingInstruction 
+PASS setEndBefore() with range 36 [docfrag, 0, docfrag, 0], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 36 [docfrag, 0, docfrag, 0], node 17 comment 
+PASS setEndBefore() with range 36 [docfrag, 0, docfrag, 0], node 18 detachedComment 
+PASS setEndBefore() with range 36 [docfrag, 0, docfrag, 0], node 19 docfrag 
+PASS setEndBefore() with range 36 [docfrag, 0, docfrag, 0], node 20 doctype 
+PASS setEndBefore() with range 36 [docfrag, 0, docfrag, 0], node 21 foreignDoctype 
+PASS setEndBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 0 paras[0] 
+PASS setEndBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 1 paras[0].firstChild 
+PASS setEndBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 2 paras[1].firstChild 
+PASS setEndBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 3 foreignPara1 
+PASS setEndBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 4 foreignPara1.firstChild 
+PASS setEndBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 5 detachedPara1 
+PASS setEndBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 6 detachedPara1.firstChild 
+PASS setEndBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 7 document 
+PASS setEndBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 8 detachedDiv 
+PASS setEndBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 9 foreignDoc 
+PASS setEndBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 10 foreignPara2 
+PASS setEndBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 11 xmlDoc 
+PASS setEndBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 12 xmlElement 
+PASS setEndBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 13 detachedTextNode 
+PASS setEndBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 14 foreignTextNode 
+PASS setEndBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 15 processingInstruction 
+PASS setEndBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 16 detachedProcessingInstruction 
+PASS setEndBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 17 comment 
+PASS setEndBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 18 detachedComment 
+PASS setEndBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 19 docfrag 
+PASS setEndBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 20 doctype 
+PASS setEndBefore() with range 37 [processingInstruction, 0, processingInstruction, 4], node 21 foreignDoctype 
+PASS setEndAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 0 paras[0] 
+PASS setEndAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 3 foreignPara1 
+PASS setEndAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 5 detachedPara1 
+PASS setEndAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 7 document 
+PASS setEndAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 8 detachedDiv 
+PASS setEndAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 9 foreignDoc 
+PASS setEndAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 10 foreignPara2 
+PASS setEndAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 11 xmlDoc 
+PASS setEndAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 12 xmlElement 
+PASS setEndAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 13 detachedTextNode 
+PASS setEndAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 14 foreignTextNode 
+PASS setEndAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 15 processingInstruction 
+PASS setEndAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 17 comment 
+PASS setEndAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 18 detachedComment 
+PASS setEndAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 19 docfrag 
+PASS setEndAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 20 doctype 
+PASS setEndAfter() with range 0 [paras[0].firstChild, 0, paras[0].firstChild, 0], node 21 foreignDoctype 
+PASS setEndAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 0 paras[0] 
+PASS setEndAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 3 foreignPara1 
+PASS setEndAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 5 detachedPara1 
+PASS setEndAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 7 document 
+PASS setEndAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 8 detachedDiv 
+PASS setEndAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 9 foreignDoc 
+PASS setEndAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 10 foreignPara2 
+PASS setEndAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 11 xmlDoc 
+PASS setEndAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 12 xmlElement 
+PASS setEndAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 13 detachedTextNode 
+PASS setEndAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 14 foreignTextNode 
+PASS setEndAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 15 processingInstruction 
+PASS setEndAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 17 comment 
+PASS setEndAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 18 detachedComment 
+PASS setEndAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 19 docfrag 
+PASS setEndAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 20 doctype 
+PASS setEndAfter() with range 1 [paras[0].firstChild, 0, paras[0].firstChild, 1], node 21 foreignDoctype 
+PASS setEndAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 0 paras[0] 
+PASS setEndAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 3 foreignPara1 
+PASS setEndAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 5 detachedPara1 
+PASS setEndAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 7 document 
+PASS setEndAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 8 detachedDiv 
+PASS setEndAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 9 foreignDoc 
+PASS setEndAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 10 foreignPara2 
+PASS setEndAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 11 xmlDoc 
+PASS setEndAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 12 xmlElement 
+PASS setEndAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 13 detachedTextNode 
+PASS setEndAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 14 foreignTextNode 
+PASS setEndAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 15 processingInstruction 
+PASS setEndAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 17 comment 
+PASS setEndAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 18 detachedComment 
+PASS setEndAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 19 docfrag 
+PASS setEndAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 20 doctype 
+PASS setEndAfter() with range 2 [paras[0].firstChild, 2, paras[0].firstChild, 8], node 21 foreignDoctype 
+PASS setEndAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 0 paras[0] 
+PASS setEndAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 3 foreignPara1 
+PASS setEndAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 5 detachedPara1 
+PASS setEndAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 7 document 
+PASS setEndAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 8 detachedDiv 
+PASS setEndAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 9 foreignDoc 
+PASS setEndAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 10 foreignPara2 
+PASS setEndAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 11 xmlDoc 
+PASS setEndAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 12 xmlElement 
+PASS setEndAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 13 detachedTextNode 
+PASS setEndAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 14 foreignTextNode 
+PASS setEndAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 15 processingInstruction 
+PASS setEndAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 17 comment 
+PASS setEndAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 18 detachedComment 
+PASS setEndAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 19 docfrag 
+PASS setEndAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 20 doctype 
+PASS setEndAfter() with range 3 [paras[0].firstChild, 2, paras[0].firstChild, 9], node 21 foreignDoctype 
+PASS setEndAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 0 paras[0] 
+PASS setEndAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 3 foreignPara1 
+PASS setEndAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 5 detachedPara1 
+PASS setEndAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 7 document 
+PASS setEndAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 8 detachedDiv 
+PASS setEndAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 9 foreignDoc 
+PASS setEndAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 10 foreignPara2 
+PASS setEndAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 11 xmlDoc 
+PASS setEndAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 12 xmlElement 
+PASS setEndAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 13 detachedTextNode 
+PASS setEndAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 14 foreignTextNode 
+PASS setEndAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 15 processingInstruction 
+PASS setEndAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 17 comment 
+PASS setEndAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 18 detachedComment 
+PASS setEndAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 19 docfrag 
+PASS setEndAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 20 doctype 
+PASS setEndAfter() with range 4 [paras[1].firstChild, 0, paras[1].firstChild, 0], node 21 foreignDoctype 
+PASS setEndAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 0 paras[0] 
+PASS setEndAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 3 foreignPara1 
+PASS setEndAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 5 detachedPara1 
+PASS setEndAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 7 document 
+PASS setEndAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 8 detachedDiv 
+PASS setEndAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 9 foreignDoc 
+PASS setEndAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 10 foreignPara2 
+PASS setEndAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 11 xmlDoc 
+PASS setEndAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 12 xmlElement 
+PASS setEndAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 13 detachedTextNode 
+PASS setEndAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 14 foreignTextNode 
+PASS setEndAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 15 processingInstruction 
+PASS setEndAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 17 comment 
+PASS setEndAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 18 detachedComment 
+PASS setEndAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 19 docfrag 
+PASS setEndAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 20 doctype 
+PASS setEndAfter() with range 5 [paras[1].firstChild, 2, paras[1].firstChild, 9], node 21 foreignDoctype 
+PASS setEndAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 0 paras[0] 
+PASS setEndAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 3 foreignPara1 
+PASS setEndAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 5 detachedPara1 
+PASS setEndAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 7 document 
+PASS setEndAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 8 detachedDiv 
+PASS setEndAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 9 foreignDoc 
+PASS setEndAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 10 foreignPara2 
+PASS setEndAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 11 xmlDoc 
+PASS setEndAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 12 xmlElement 
+PASS setEndAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 13 detachedTextNode 
+PASS setEndAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 14 foreignTextNode 
+PASS setEndAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 15 processingInstruction 
+PASS setEndAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 17 comment 
+PASS setEndAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 18 detachedComment 
+PASS setEndAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 19 docfrag 
+PASS setEndAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 20 doctype 
+PASS setEndAfter() with range 6 [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node 21 foreignDoctype 
+PASS setEndAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 0 paras[0] 
+PASS setEndAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 3 foreignPara1 
+PASS setEndAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 5 detachedPara1 
+PASS setEndAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 7 document 
+PASS setEndAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 8 detachedDiv 
+PASS setEndAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 9 foreignDoc 
+PASS setEndAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 10 foreignPara2 
+PASS setEndAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 11 xmlDoc 
+PASS setEndAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 12 xmlElement 
+PASS setEndAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 13 detachedTextNode 
+PASS setEndAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 14 foreignTextNode 
+PASS setEndAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 15 processingInstruction 
+PASS setEndAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 17 comment 
+PASS setEndAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 18 detachedComment 
+PASS setEndAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 19 docfrag 
+PASS setEndAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 20 doctype 
+PASS setEndAfter() with range 7 [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node 21 foreignDoctype 
+PASS setEndAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 0 paras[0] 
+PASS setEndAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 3 foreignPara1 
+PASS setEndAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 5 detachedPara1 
+PASS setEndAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 7 document 
+PASS setEndAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 8 detachedDiv 
+PASS setEndAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 9 foreignDoc 
+PASS setEndAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 10 foreignPara2 
+PASS setEndAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 11 xmlDoc 
+PASS setEndAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 12 xmlElement 
+PASS setEndAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 13 detachedTextNode 
+PASS setEndAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 14 foreignTextNode 
+PASS setEndAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 15 processingInstruction 
+PASS setEndAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 17 comment 
+PASS setEndAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 18 detachedComment 
+PASS setEndAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 19 docfrag 
+PASS setEndAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 20 doctype 
+PASS setEndAfter() with range 8 [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node 21 foreignDoctype 
+PASS setEndAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 0 paras[0] 
+PASS setEndAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 3 foreignPara1 
+PASS setEndAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 5 detachedPara1 
+PASS setEndAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 7 document 
+PASS setEndAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 8 detachedDiv 
+PASS setEndAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 9 foreignDoc 
+PASS setEndAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 10 foreignPara2 
+PASS setEndAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 11 xmlDoc 
+PASS setEndAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 12 xmlElement 
+PASS setEndAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 13 detachedTextNode 
+PASS setEndAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 14 foreignTextNode 
+PASS setEndAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 15 processingInstruction 
+PASS setEndAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 17 comment 
+PASS setEndAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 18 detachedComment 
+PASS setEndAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 19 docfrag 
+PASS setEndAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 20 doctype 
+PASS setEndAfter() with range 9 [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node 21 foreignDoctype 
+PASS setEndAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 0 paras[0] 
+PASS setEndAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 3 foreignPara1 
+PASS setEndAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 5 detachedPara1 
+PASS setEndAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 7 document 
+PASS setEndAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 8 detachedDiv 
+PASS setEndAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 9 foreignDoc 
+PASS setEndAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 10 foreignPara2 
+PASS setEndAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 11 xmlDoc 
+PASS setEndAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 12 xmlElement 
+PASS setEndAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 13 detachedTextNode 
+PASS setEndAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 14 foreignTextNode 
+PASS setEndAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 15 processingInstruction 
+PASS setEndAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 17 comment 
+PASS setEndAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 18 detachedComment 
+PASS setEndAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 19 docfrag 
+PASS setEndAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 20 doctype 
+PASS setEndAfter() with range 10 [document.documentElement, 0, document.documentElement, 1], node 21 foreignDoctype 
+PASS setEndAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 0 paras[0] 
+PASS setEndAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 3 foreignPara1 
+PASS setEndAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 5 detachedPara1 
+PASS setEndAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 7 document 
+PASS setEndAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 8 detachedDiv 
+PASS setEndAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 9 foreignDoc 
+PASS setEndAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 10 foreignPara2 
+PASS setEndAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 11 xmlDoc 
+PASS setEndAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 12 xmlElement 
+PASS setEndAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 13 detachedTextNode 
+PASS setEndAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 14 foreignTextNode 
+PASS setEndAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 15 processingInstruction 
+PASS setEndAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 17 comment 
+PASS setEndAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 18 detachedComment 
+PASS setEndAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 19 docfrag 
+PASS setEndAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 20 doctype 
+PASS setEndAfter() with range 11 [document.documentElement, 0, document.documentElement, 2], node 21 foreignDoctype 
+PASS setEndAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 0 paras[0] 
+PASS setEndAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 3 foreignPara1 
+PASS setEndAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 5 detachedPara1 
+PASS setEndAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 7 document 
+PASS setEndAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 8 detachedDiv 
+PASS setEndAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 9 foreignDoc 
+PASS setEndAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 10 foreignPara2 
+PASS setEndAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 11 xmlDoc 
+PASS setEndAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 12 xmlElement 
+PASS setEndAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 13 detachedTextNode 
+PASS setEndAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 14 foreignTextNode 
+PASS setEndAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 15 processingInstruction 
+PASS setEndAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 17 comment 
+PASS setEndAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 18 detachedComment 
+PASS setEndAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 19 docfrag 
+PASS setEndAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 20 doctype 
+PASS setEndAfter() with range 12 [document.documentElement, 1, document.documentElement, 2], node 21 foreignDoctype 
+PASS setEndAfter() with range 13 [document.head, 1, document.head, 1], node 0 paras[0] 
+PASS setEndAfter() with range 13 [document.head, 1, document.head, 1], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 13 [document.head, 1, document.head, 1], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 13 [document.head, 1, document.head, 1], node 3 foreignPara1 
+PASS setEndAfter() with range 13 [document.head, 1, document.head, 1], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 13 [document.head, 1, document.head, 1], node 5 detachedPara1 
+PASS setEndAfter() with range 13 [document.head, 1, document.head, 1], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 13 [document.head, 1, document.head, 1], node 7 document 
+PASS setEndAfter() with range 13 [document.head, 1, document.head, 1], node 8 detachedDiv 
+PASS setEndAfter() with range 13 [document.head, 1, document.head, 1], node 9 foreignDoc 
+PASS setEndAfter() with range 13 [document.head, 1, document.head, 1], node 10 foreignPara2 
+PASS setEndAfter() with range 13 [document.head, 1, document.head, 1], node 11 xmlDoc 
+PASS setEndAfter() with range 13 [document.head, 1, document.head, 1], node 12 xmlElement 
+PASS setEndAfter() with range 13 [document.head, 1, document.head, 1], node 13 detachedTextNode 
+PASS setEndAfter() with range 13 [document.head, 1, document.head, 1], node 14 foreignTextNode 
+PASS setEndAfter() with range 13 [document.head, 1, document.head, 1], node 15 processingInstruction 
+PASS setEndAfter() with range 13 [document.head, 1, document.head, 1], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 13 [document.head, 1, document.head, 1], node 17 comment 
+PASS setEndAfter() with range 13 [document.head, 1, document.head, 1], node 18 detachedComment 
+PASS setEndAfter() with range 13 [document.head, 1, document.head, 1], node 19 docfrag 
+PASS setEndAfter() with range 13 [document.head, 1, document.head, 1], node 20 doctype 
+PASS setEndAfter() with range 13 [document.head, 1, document.head, 1], node 21 foreignDoctype 
+PASS setEndAfter() with range 14 [document.body, 4, document.body, 5], node 0 paras[0] 
+PASS setEndAfter() with range 14 [document.body, 4, document.body, 5], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 14 [document.body, 4, document.body, 5], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 14 [document.body, 4, document.body, 5], node 3 foreignPara1 
+PASS setEndAfter() with range 14 [document.body, 4, document.body, 5], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 14 [document.body, 4, document.body, 5], node 5 detachedPara1 
+PASS setEndAfter() with range 14 [document.body, 4, document.body, 5], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 14 [document.body, 4, document.body, 5], node 7 document 
+PASS setEndAfter() with range 14 [document.body, 4, document.body, 5], node 8 detachedDiv 
+PASS setEndAfter() with range 14 [document.body, 4, document.body, 5], node 9 foreignDoc 
+PASS setEndAfter() with range 14 [document.body, 4, document.body, 5], node 10 foreignPara2 
+PASS setEndAfter() with range 14 [document.body, 4, document.body, 5], node 11 xmlDoc 
+PASS setEndAfter() with range 14 [document.body, 4, document.body, 5], node 12 xmlElement 
+PASS setEndAfter() with range 14 [document.body, 4, document.body, 5], node 13 detachedTextNode 
+PASS setEndAfter() with range 14 [document.body, 4, document.body, 5], node 14 foreignTextNode 
+PASS setEndAfter() with range 14 [document.body, 4, document.body, 5], node 15 processingInstruction 
+PASS setEndAfter() with range 14 [document.body, 4, document.body, 5], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 14 [document.body, 4, document.body, 5], node 17 comment 
+PASS setEndAfter() with range 14 [document.body, 4, document.body, 5], node 18 detachedComment 
+PASS setEndAfter() with range 14 [document.body, 4, document.body, 5], node 19 docfrag 
+PASS setEndAfter() with range 14 [document.body, 4, document.body, 5], node 20 doctype 
+PASS setEndAfter() with range 14 [document.body, 4, document.body, 5], node 21 foreignDoctype 
+PASS setEndAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 0 paras[0] 
+PASS setEndAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 3 foreignPara1 
+PASS setEndAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 5 detachedPara1 
+PASS setEndAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 7 document 
+PASS setEndAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 8 detachedDiv 
+PASS setEndAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 9 foreignDoc 
+PASS setEndAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 10 foreignPara2 
+PASS setEndAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 11 xmlDoc 
+PASS setEndAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 12 xmlElement 
+PASS setEndAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 13 detachedTextNode 
+PASS setEndAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 14 foreignTextNode 
+PASS setEndAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 15 processingInstruction 
+PASS setEndAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 17 comment 
+PASS setEndAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 18 detachedComment 
+PASS setEndAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 19 docfrag 
+PASS setEndAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 20 doctype 
+PASS setEndAfter() with range 15 [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node 21 foreignDoctype 
+PASS setEndAfter() with range 16 [paras[0], 0, paras[0], 1], node 0 paras[0] 
+PASS setEndAfter() with range 16 [paras[0], 0, paras[0], 1], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 16 [paras[0], 0, paras[0], 1], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 16 [paras[0], 0, paras[0], 1], node 3 foreignPara1 
+PASS setEndAfter() with range 16 [paras[0], 0, paras[0], 1], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 16 [paras[0], 0, paras[0], 1], node 5 detachedPara1 
+PASS setEndAfter() with range 16 [paras[0], 0, paras[0], 1], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 16 [paras[0], 0, paras[0], 1], node 7 document 
+PASS setEndAfter() with range 16 [paras[0], 0, paras[0], 1], node 8 detachedDiv 
+PASS setEndAfter() with range 16 [paras[0], 0, paras[0], 1], node 9 foreignDoc 
+PASS setEndAfter() with range 16 [paras[0], 0, paras[0], 1], node 10 foreignPara2 
+PASS setEndAfter() with range 16 [paras[0], 0, paras[0], 1], node 11 xmlDoc 
+PASS setEndAfter() with range 16 [paras[0], 0, paras[0], 1], node 12 xmlElement 
+PASS setEndAfter() with range 16 [paras[0], 0, paras[0], 1], node 13 detachedTextNode 
+PASS setEndAfter() with range 16 [paras[0], 0, paras[0], 1], node 14 foreignTextNode 
+PASS setEndAfter() with range 16 [paras[0], 0, paras[0], 1], node 15 processingInstruction 
+PASS setEndAfter() with range 16 [paras[0], 0, paras[0], 1], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 16 [paras[0], 0, paras[0], 1], node 17 comment 
+PASS setEndAfter() with range 16 [paras[0], 0, paras[0], 1], node 18 detachedComment 
+PASS setEndAfter() with range 16 [paras[0], 0, paras[0], 1], node 19 docfrag 
+PASS setEndAfter() with range 16 [paras[0], 0, paras[0], 1], node 20 doctype 
+PASS setEndAfter() with range 16 [paras[0], 0, paras[0], 1], node 21 foreignDoctype 
+PASS setEndAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 0 paras[0] 
+PASS setEndAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 3 foreignPara1 
+PASS setEndAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 5 detachedPara1 
+PASS setEndAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 7 document 
+PASS setEndAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 8 detachedDiv 
+PASS setEndAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 9 foreignDoc 
+PASS setEndAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 10 foreignPara2 
+PASS setEndAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 11 xmlDoc 
+PASS setEndAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 12 xmlElement 
+PASS setEndAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 13 detachedTextNode 
+PASS setEndAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 14 foreignTextNode 
+PASS setEndAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 15 processingInstruction 
+PASS setEndAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 17 comment 
+PASS setEndAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 18 detachedComment 
+PASS setEndAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 19 docfrag 
+PASS setEndAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 20 doctype 
+PASS setEndAfter() with range 17 [detachedPara1, 0, detachedPara1, 1], node 21 foreignDoctype 
+PASS setEndAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 0 paras[0] 
+PASS setEndAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 3 foreignPara1 
+PASS setEndAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 5 detachedPara1 
+PASS setEndAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 7 document 
+PASS setEndAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 8 detachedDiv 
+PASS setEndAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 9 foreignDoc 
+PASS setEndAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 10 foreignPara2 
+PASS setEndAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 11 xmlDoc 
+PASS setEndAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 12 xmlElement 
+PASS setEndAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 13 detachedTextNode 
+PASS setEndAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 14 foreignTextNode 
+PASS setEndAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 15 processingInstruction 
+PASS setEndAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 17 comment 
+PASS setEndAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 18 detachedComment 
+PASS setEndAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 19 docfrag 
+PASS setEndAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 20 doctype 
+PASS setEndAfter() with range 18 [paras[0].firstChild, 0, paras[1].firstChild, 0], node 21 foreignDoctype 
+PASS setEndAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 0 paras[0] 
+PASS setEndAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 3 foreignPara1 
+PASS setEndAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 5 detachedPara1 
+PASS setEndAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 7 document 
+PASS setEndAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 8 detachedDiv 
+PASS setEndAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 9 foreignDoc 
+PASS setEndAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 10 foreignPara2 
+PASS setEndAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 11 xmlDoc 
+PASS setEndAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 12 xmlElement 
+PASS setEndAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 13 detachedTextNode 
+PASS setEndAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 14 foreignTextNode 
+PASS setEndAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 15 processingInstruction 
+PASS setEndAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 17 comment 
+PASS setEndAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 18 detachedComment 
+PASS setEndAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 19 docfrag 
+PASS setEndAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 20 doctype 
+PASS setEndAfter() with range 19 [paras[0].firstChild, 0, paras[1].firstChild, 8], node 21 foreignDoctype 
+PASS setEndAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 0 paras[0] 
+PASS setEndAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 3 foreignPara1 
+PASS setEndAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 5 detachedPara1 
+PASS setEndAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 7 document 
+PASS setEndAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 8 detachedDiv 
+PASS setEndAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 9 foreignDoc 
+PASS setEndAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 10 foreignPara2 
+PASS setEndAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 11 xmlDoc 
+PASS setEndAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 12 xmlElement 
+PASS setEndAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 13 detachedTextNode 
+PASS setEndAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 14 foreignTextNode 
+PASS setEndAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 15 processingInstruction 
+PASS setEndAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 17 comment 
+PASS setEndAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 18 detachedComment 
+PASS setEndAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 19 docfrag 
+PASS setEndAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 20 doctype 
+PASS setEndAfter() with range 20 [paras[0].firstChild, 3, paras[3], 1], node 21 foreignDoctype 
+PASS setEndAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 0 paras[0] 
+PASS setEndAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 3 foreignPara1 
+PASS setEndAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 5 detachedPara1 
+PASS setEndAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 7 document 
+PASS setEndAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 8 detachedDiv 
+PASS setEndAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 9 foreignDoc 
+PASS setEndAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 10 foreignPara2 
+PASS setEndAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 11 xmlDoc 
+PASS setEndAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 12 xmlElement 
+PASS setEndAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 13 detachedTextNode 
+PASS setEndAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 14 foreignTextNode 
+PASS setEndAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 15 processingInstruction 
+PASS setEndAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 17 comment 
+PASS setEndAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 18 detachedComment 
+PASS setEndAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 19 docfrag 
+PASS setEndAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 20 doctype 
+PASS setEndAfter() with range 21 [paras[0], 0, paras[0].firstChild, 7], node 21 foreignDoctype 
+PASS setEndAfter() with range 22 [testDiv, 2, paras[4], 1], node 0 paras[0] 
+PASS setEndAfter() with range 22 [testDiv, 2, paras[4], 1], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 22 [testDiv, 2, paras[4], 1], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 22 [testDiv, 2, paras[4], 1], node 3 foreignPara1 
+PASS setEndAfter() with range 22 [testDiv, 2, paras[4], 1], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 22 [testDiv, 2, paras[4], 1], node 5 detachedPara1 
+PASS setEndAfter() with range 22 [testDiv, 2, paras[4], 1], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 22 [testDiv, 2, paras[4], 1], node 7 document 
+PASS setEndAfter() with range 22 [testDiv, 2, paras[4], 1], node 8 detachedDiv 
+PASS setEndAfter() with range 22 [testDiv, 2, paras[4], 1], node 9 foreignDoc 
+PASS setEndAfter() with range 22 [testDiv, 2, paras[4], 1], node 10 foreignPara2 
+PASS setEndAfter() with range 22 [testDiv, 2, paras[4], 1], node 11 xmlDoc 
+PASS setEndAfter() with range 22 [testDiv, 2, paras[4], 1], node 12 xmlElement 
+PASS setEndAfter() with range 22 [testDiv, 2, paras[4], 1], node 13 detachedTextNode 
+PASS setEndAfter() with range 22 [testDiv, 2, paras[4], 1], node 14 foreignTextNode 
+PASS setEndAfter() with range 22 [testDiv, 2, paras[4], 1], node 15 processingInstruction 
+PASS setEndAfter() with range 22 [testDiv, 2, paras[4], 1], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 22 [testDiv, 2, paras[4], 1], node 17 comment 
+PASS setEndAfter() with range 22 [testDiv, 2, paras[4], 1], node 18 detachedComment 
+PASS setEndAfter() with range 22 [testDiv, 2, paras[4], 1], node 19 docfrag 
+PASS setEndAfter() with range 22 [testDiv, 2, paras[4], 1], node 20 doctype 
+PASS setEndAfter() with range 22 [testDiv, 2, paras[4], 1], node 21 foreignDoctype 
+PASS setEndAfter() with range 23 [document, 0, document, 1], node 0 paras[0] 
+PASS setEndAfter() with range 23 [document, 0, document, 1], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 23 [document, 0, document, 1], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 23 [document, 0, document, 1], node 3 foreignPara1 
+PASS setEndAfter() with range 23 [document, 0, document, 1], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 23 [document, 0, document, 1], node 5 detachedPara1 
+PASS setEndAfter() with range 23 [document, 0, document, 1], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 23 [document, 0, document, 1], node 7 document 
+PASS setEndAfter() with range 23 [document, 0, document, 1], node 8 detachedDiv 
+PASS setEndAfter() with range 23 [document, 0, document, 1], node 9 foreignDoc 
+PASS setEndAfter() with range 23 [document, 0, document, 1], node 10 foreignPara2 
+PASS setEndAfter() with range 23 [document, 0, document, 1], node 11 xmlDoc 
+PASS setEndAfter() with range 23 [document, 0, document, 1], node 12 xmlElement 
+PASS setEndAfter() with range 23 [document, 0, document, 1], node 13 detachedTextNode 
+PASS setEndAfter() with range 23 [document, 0, document, 1], node 14 foreignTextNode 
+PASS setEndAfter() with range 23 [document, 0, document, 1], node 15 processingInstruction 
+PASS setEndAfter() with range 23 [document, 0, document, 1], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 23 [document, 0, document, 1], node 17 comment 
+PASS setEndAfter() with range 23 [document, 0, document, 1], node 18 detachedComment 
+PASS setEndAfter() with range 23 [document, 0, document, 1], node 19 docfrag 
+PASS setEndAfter() with range 23 [document, 0, document, 1], node 20 doctype 
+PASS setEndAfter() with range 23 [document, 0, document, 1], node 21 foreignDoctype 
+PASS setEndAfter() with range 24 [document, 0, document, 2], node 0 paras[0] 
+PASS setEndAfter() with range 24 [document, 0, document, 2], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 24 [document, 0, document, 2], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 24 [document, 0, document, 2], node 3 foreignPara1 
+PASS setEndAfter() with range 24 [document, 0, document, 2], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 24 [document, 0, document, 2], node 5 detachedPara1 
+PASS setEndAfter() with range 24 [document, 0, document, 2], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 24 [document, 0, document, 2], node 7 document 
+PASS setEndAfter() with range 24 [document, 0, document, 2], node 8 detachedDiv 
+PASS setEndAfter() with range 24 [document, 0, document, 2], node 9 foreignDoc 
+PASS setEndAfter() with range 24 [document, 0, document, 2], node 10 foreignPara2 
+PASS setEndAfter() with range 24 [document, 0, document, 2], node 11 xmlDoc 
+PASS setEndAfter() with range 24 [document, 0, document, 2], node 12 xmlElement 
+PASS setEndAfter() with range 24 [document, 0, document, 2], node 13 detachedTextNode 
+PASS setEndAfter() with range 24 [document, 0, document, 2], node 14 foreignTextNode 
+PASS setEndAfter() with range 24 [document, 0, document, 2], node 15 processingInstruction 
+PASS setEndAfter() with range 24 [document, 0, document, 2], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 24 [document, 0, document, 2], node 17 comment 
+PASS setEndAfter() with range 24 [document, 0, document, 2], node 18 detachedComment 
+PASS setEndAfter() with range 24 [document, 0, document, 2], node 19 docfrag 
+PASS setEndAfter() with range 24 [document, 0, document, 2], node 20 doctype 
+PASS setEndAfter() with range 24 [document, 0, document, 2], node 21 foreignDoctype 
+PASS setEndAfter() with range 25 [comment, 2, comment, 3], node 0 paras[0] 
+PASS setEndAfter() with range 25 [comment, 2, comment, 3], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 25 [comment, 2, comment, 3], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 25 [comment, 2, comment, 3], node 3 foreignPara1 
+PASS setEndAfter() with range 25 [comment, 2, comment, 3], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 25 [comment, 2, comment, 3], node 5 detachedPara1 
+PASS setEndAfter() with range 25 [comment, 2, comment, 3], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 25 [comment, 2, comment, 3], node 7 document 
+PASS setEndAfter() with range 25 [comment, 2, comment, 3], node 8 detachedDiv 
+PASS setEndAfter() with range 25 [comment, 2, comment, 3], node 9 foreignDoc 
+PASS setEndAfter() with range 25 [comment, 2, comment, 3], node 10 foreignPara2 
+PASS setEndAfter() with range 25 [comment, 2, comment, 3], node 11 xmlDoc 
+PASS setEndAfter() with range 25 [comment, 2, comment, 3], node 12 xmlElement 
+PASS setEndAfter() with range 25 [comment, 2, comment, 3], node 13 detachedTextNode 
+PASS setEndAfter() with range 25 [comment, 2, comment, 3], node 14 foreignTextNode 
+PASS setEndAfter() with range 25 [comment, 2, comment, 3], node 15 processingInstruction 
+PASS setEndAfter() with range 25 [comment, 2, comment, 3], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 25 [comment, 2, comment, 3], node 17 comment 
+PASS setEndAfter() with range 25 [comment, 2, comment, 3], node 18 detachedComment 
+PASS setEndAfter() with range 25 [comment, 2, comment, 3], node 19 docfrag 
+PASS setEndAfter() with range 25 [comment, 2, comment, 3], node 20 doctype 
+PASS setEndAfter() with range 25 [comment, 2, comment, 3], node 21 foreignDoctype 
+PASS setEndAfter() with range 26 [testDiv, 0, comment, 5], node 0 paras[0] 
+PASS setEndAfter() with range 26 [testDiv, 0, comment, 5], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 26 [testDiv, 0, comment, 5], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 26 [testDiv, 0, comment, 5], node 3 foreignPara1 
+PASS setEndAfter() with range 26 [testDiv, 0, comment, 5], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 26 [testDiv, 0, comment, 5], node 5 detachedPara1 
+PASS setEndAfter() with range 26 [testDiv, 0, comment, 5], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 26 [testDiv, 0, comment, 5], node 7 document 
+PASS setEndAfter() with range 26 [testDiv, 0, comment, 5], node 8 detachedDiv 
+PASS setEndAfter() with range 26 [testDiv, 0, comment, 5], node 9 foreignDoc 
+PASS setEndAfter() with range 26 [testDiv, 0, comment, 5], node 10 foreignPara2 
+PASS setEndAfter() with range 26 [testDiv, 0, comment, 5], node 11 xmlDoc 
+PASS setEndAfter() with range 26 [testDiv, 0, comment, 5], node 12 xmlElement 
+PASS setEndAfter() with range 26 [testDiv, 0, comment, 5], node 13 detachedTextNode 
+PASS setEndAfter() with range 26 [testDiv, 0, comment, 5], node 14 foreignTextNode 
+PASS setEndAfter() with range 26 [testDiv, 0, comment, 5], node 15 processingInstruction 
+PASS setEndAfter() with range 26 [testDiv, 0, comment, 5], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 26 [testDiv, 0, comment, 5], node 17 comment 
+PASS setEndAfter() with range 26 [testDiv, 0, comment, 5], node 18 detachedComment 
+PASS setEndAfter() with range 26 [testDiv, 0, comment, 5], node 19 docfrag 
+PASS setEndAfter() with range 26 [testDiv, 0, comment, 5], node 20 doctype 
+PASS setEndAfter() with range 26 [testDiv, 0, comment, 5], node 21 foreignDoctype 
+PASS setEndAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 0 paras[0] 
+PASS setEndAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 3 foreignPara1 
+PASS setEndAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 5 detachedPara1 
+PASS setEndAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 7 document 
+PASS setEndAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 8 detachedDiv 
+PASS setEndAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 9 foreignDoc 
+PASS setEndAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 10 foreignPara2 
+PASS setEndAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 11 xmlDoc 
+PASS setEndAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 12 xmlElement 
+PASS setEndAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 13 detachedTextNode 
+PASS setEndAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 14 foreignTextNode 
+PASS setEndAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 15 processingInstruction 
+PASS setEndAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 17 comment 
+PASS setEndAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 18 detachedComment 
+PASS setEndAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 19 docfrag 
+PASS setEndAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 20 doctype 
+PASS setEndAfter() with range 27 [foreignDoc, 1, foreignComment, 2], node 21 foreignDoctype 
+PASS setEndAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 0 paras[0] 
+PASS setEndAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 3 foreignPara1 
+PASS setEndAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 5 detachedPara1 
+PASS setEndAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 7 document 
+PASS setEndAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 8 detachedDiv 
+PASS setEndAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 9 foreignDoc 
+PASS setEndAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 10 foreignPara2 
+PASS setEndAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 11 xmlDoc 
+PASS setEndAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 12 xmlElement 
+PASS setEndAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 13 detachedTextNode 
+PASS setEndAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 14 foreignTextNode 
+PASS setEndAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 15 processingInstruction 
+PASS setEndAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 17 comment 
+PASS setEndAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 18 detachedComment 
+PASS setEndAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 19 docfrag 
+PASS setEndAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 20 doctype 
+PASS setEndAfter() with range 28 [foreignDoc.body, 0, foreignTextNode, 36], node 21 foreignDoctype 
+PASS setEndAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 0 paras[0] 
+PASS setEndAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 3 foreignPara1 
+PASS setEndAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 5 detachedPara1 
+PASS setEndAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 7 document 
+PASS setEndAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 8 detachedDiv 
+PASS setEndAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 9 foreignDoc 
+PASS setEndAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 10 foreignPara2 
+PASS setEndAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 11 xmlDoc 
+PASS setEndAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 12 xmlElement 
+PASS setEndAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 13 detachedTextNode 
+PASS setEndAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 14 foreignTextNode 
+PASS setEndAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 15 processingInstruction 
+PASS setEndAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 17 comment 
+PASS setEndAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 18 detachedComment 
+PASS setEndAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 19 docfrag 
+PASS setEndAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 20 doctype 
+PASS setEndAfter() with range 29 [xmlDoc, 1, xmlComment, 0], node 21 foreignDoctype 
+PASS setEndAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 0 paras[0] 
+PASS setEndAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 3 foreignPara1 
+PASS setEndAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 5 detachedPara1 
+PASS setEndAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 7 document 
+PASS setEndAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 8 detachedDiv 
+PASS setEndAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 9 foreignDoc 
+PASS setEndAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 10 foreignPara2 
+PASS setEndAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 11 xmlDoc 
+PASS setEndAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 12 xmlElement 
+PASS setEndAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 13 detachedTextNode 
+PASS setEndAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 14 foreignTextNode 
+PASS setEndAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 15 processingInstruction 
+PASS setEndAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 17 comment 
+PASS setEndAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 18 detachedComment 
+PASS setEndAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 19 docfrag 
+PASS setEndAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 20 doctype 
+PASS setEndAfter() with range 30 [detachedTextNode, 0, detachedTextNode, 8], node 21 foreignDoctype 
+PASS setEndAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 0 paras[0] 
+PASS setEndAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 3 foreignPara1 
+PASS setEndAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 5 detachedPara1 
+PASS setEndAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 7 document 
+PASS setEndAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 8 detachedDiv 
+PASS setEndAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 9 foreignDoc 
+PASS setEndAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 10 foreignPara2 
+PASS setEndAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 11 xmlDoc 
+PASS setEndAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 12 xmlElement 
+PASS setEndAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 13 detachedTextNode 
+PASS setEndAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 14 foreignTextNode 
+PASS setEndAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 15 processingInstruction 
+PASS setEndAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 17 comment 
+PASS setEndAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 18 detachedComment 
+PASS setEndAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 19 docfrag 
+PASS setEndAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 20 doctype 
+PASS setEndAfter() with range 31 [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node 21 foreignDoctype 
+PASS setEndAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 0 paras[0] 
+PASS setEndAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 3 foreignPara1 
+PASS setEndAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 5 detachedPara1 
+PASS setEndAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 7 document 
+PASS setEndAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 8 detachedDiv 
+PASS setEndAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 9 foreignDoc 
+PASS setEndAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 10 foreignPara2 
+PASS setEndAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 11 xmlDoc 
+PASS setEndAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 12 xmlElement 
+PASS setEndAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 13 detachedTextNode 
+PASS setEndAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 14 foreignTextNode 
+PASS setEndAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 15 processingInstruction 
+PASS setEndAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 17 comment 
+PASS setEndAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 18 detachedComment 
+PASS setEndAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 19 docfrag 
+PASS setEndAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 20 doctype 
+PASS setEndAfter() with range 32 [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node 21 foreignDoctype 
+PASS setEndAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 0 paras[0] 
+PASS setEndAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 3 foreignPara1 
+PASS setEndAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 5 detachedPara1 
+PASS setEndAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 7 document 
+PASS setEndAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 8 detachedDiv 
+PASS setEndAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 9 foreignDoc 
+PASS setEndAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 10 foreignPara2 
+PASS setEndAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 11 xmlDoc 
+PASS setEndAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 12 xmlElement 
+PASS setEndAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 13 detachedTextNode 
+PASS setEndAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 14 foreignTextNode 
+PASS setEndAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 15 processingInstruction 
+PASS setEndAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 17 comment 
+PASS setEndAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 18 detachedComment 
+PASS setEndAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 19 docfrag 
+PASS setEndAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 20 doctype 
+PASS setEndAfter() with range 33 [detachedComment, 3, detachedComment, 4], node 21 foreignDoctype 
+PASS setEndAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 0 paras[0] 
+PASS setEndAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 3 foreignPara1 
+PASS setEndAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 5 detachedPara1 
+PASS setEndAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 7 document 
+PASS setEndAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 8 detachedDiv 
+PASS setEndAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 9 foreignDoc 
+PASS setEndAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 10 foreignPara2 
+PASS setEndAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 11 xmlDoc 
+PASS setEndAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 12 xmlElement 
+PASS setEndAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 13 detachedTextNode 
+PASS setEndAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 14 foreignTextNode 
+PASS setEndAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 15 processingInstruction 
+PASS setEndAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 17 comment 
+PASS setEndAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 18 detachedComment 
+PASS setEndAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 19 docfrag 
+PASS setEndAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 20 doctype 
+PASS setEndAfter() with range 34 [detachedForeignComment, 0, detachedForeignComment, 1], node 21 foreignDoctype 
+PASS setEndAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 0 paras[0] 
+PASS setEndAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 3 foreignPara1 
+PASS setEndAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 5 detachedPara1 
+PASS setEndAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 7 document 
+PASS setEndAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 8 detachedDiv 
+PASS setEndAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 9 foreignDoc 
+PASS setEndAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 10 foreignPara2 
+PASS setEndAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 11 xmlDoc 
+PASS setEndAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 12 xmlElement 
+PASS setEndAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 13 detachedTextNode 
+PASS setEndAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 14 foreignTextNode 
+PASS setEndAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 15 processingInstruction 
+PASS setEndAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 17 comment 
+PASS setEndAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 18 detachedComment 
+PASS setEndAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 19 docfrag 
+PASS setEndAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 20 doctype 
+PASS setEndAfter() with range 35 [detachedXmlComment, 2, detachedXmlComment, 6], node 21 foreignDoctype 
+PASS setEndAfter() with range 36 [docfrag, 0, docfrag, 0], node 0 paras[0] 
+PASS setEndAfter() with range 36 [docfrag, 0, docfrag, 0], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 36 [docfrag, 0, docfrag, 0], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 36 [docfrag, 0, docfrag, 0], node 3 foreignPara1 
+PASS setEndAfter() with range 36 [docfrag, 0, docfrag, 0], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 36 [docfrag, 0, docfrag, 0], node 5 detachedPara1 
+PASS setEndAfter() with range 36 [docfrag, 0, docfrag, 0], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 36 [docfrag, 0, docfrag, 0], node 7 document 
+PASS setEndAfter() with range 36 [docfrag, 0, docfrag, 0], node 8 detachedDiv 
+PASS setEndAfter() with range 36 [docfrag, 0, docfrag, 0], node 9 foreignDoc 
+PASS setEndAfter() with range 36 [docfrag, 0, docfrag, 0], node 10 foreignPara2 
+PASS setEndAfter() with range 36 [docfrag, 0, docfrag, 0], node 11 xmlDoc 
+PASS setEndAfter() with range 36 [docfrag, 0, docfrag, 0], node 12 xmlElement 
+PASS setEndAfter() with range 36 [docfrag, 0, docfrag, 0], node 13 detachedTextNode 
+PASS setEndAfter() with range 36 [docfrag, 0, docfrag, 0], node 14 foreignTextNode 
+PASS setEndAfter() with range 36 [docfrag, 0, docfrag, 0], node 15 processingInstruction 
+PASS setEndAfter() with range 36 [docfrag, 0, docfrag, 0], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 36 [docfrag, 0, docfrag, 0], node 17 comment 
+PASS setEndAfter() with range 36 [docfrag, 0, docfrag, 0], node 18 detachedComment 
+PASS setEndAfter() with range 36 [docfrag, 0, docfrag, 0], node 19 docfrag 
+PASS setEndAfter() with range 36 [docfrag, 0, docfrag, 0], node 20 doctype 
+PASS setEndAfter() with range 36 [docfrag, 0, docfrag, 0], node 21 foreignDoctype 
+PASS setEndAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 0 paras[0] 
+PASS setEndAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 1 paras[0].firstChild 
+PASS setEndAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 2 paras[1].firstChild 
+PASS setEndAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 3 foreignPara1 
+PASS setEndAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 4 foreignPara1.firstChild 
+PASS setEndAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 5 detachedPara1 
+PASS setEndAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 6 detachedPara1.firstChild 
+PASS setEndAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 7 document 
+PASS setEndAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 8 detachedDiv 
+PASS setEndAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 9 foreignDoc 
+PASS setEndAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 10 foreignPara2 
+PASS setEndAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 11 xmlDoc 
+PASS setEndAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 12 xmlElement 
+PASS setEndAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 13 detachedTextNode 
+PASS setEndAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 14 foreignTextNode 
+PASS setEndAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 15 processingInstruction 
+PASS setEndAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 16 detachedProcessingInstruction 
+PASS setEndAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 17 comment 
+PASS setEndAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 18 detachedComment 
+PASS setEndAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 19 docfrag 
+PASS setEndAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 20 doctype 
+PASS setEndAfter() with range 37 [processingInstruction, 0, processingInstruction, 4], node 21 foreignDoctype 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangesethtmlfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangesethtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-set.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-set.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-set.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-set.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,221 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Range setting tests&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Aryeh Gregor&quot; href=ayg@aryeh.name&gt;
+&lt;meta name=timeout content=long&gt;
+
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;script src=../common.js&gt;&lt;/script&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+
+function testSetStart(range, node, offset) {
+  if (node.nodeType == Node.DOCUMENT_TYPE_NODE) {
+    assert_throws(&quot;INVALID_NODE_TYPE_ERR&quot;, function() {
+      range.setStart(node, offset);
+    }, &quot;setStart() to a doctype must throw INVALID_NODE_TYPE_ERR&quot;);
+    return;
+  }
+
+  if (offset &lt; 0 || offset &gt; nodeLength(node)) {
+    assert_throws(&quot;INDEX_SIZE_ERR&quot;, function() {
+      range.setStart(node, offset);
+    }, &quot;setStart() to a too-large offset must throw INDEX_SIZE_ERR&quot;);
+    return;
+  }
+
+  var newRange = range.cloneRange();
+  newRange.setStart(node, offset);
+
+  assert_equals(newRange.startContainer, node,
+    &quot;setStart() must change startContainer to the new node&quot;);
+  assert_equals(newRange.startOffset, offset,
+    &quot;setStart() must change startOffset to the new offset&quot;);
+
+  // FIXME: I'm assuming comparePoint() is correct, but the tests for that
+  // will depend on setStart()/setEnd().
+  if (furthestAncestor(node) != furthestAncestor(range.startContainer)
+  || range.comparePoint(node, offset) &gt; 0) {
+    assert_equals(newRange.endContainer, node,
+      &quot;setStart(node, offset) where node is after current end or in different document must set the end node to node too&quot;);
+    assert_equals(newRange.endOffset, offset,
+      &quot;setStart(node, offset) where node is after current end or in different document must set the end offset to offset too&quot;);
+  } else {
+    assert_equals(newRange.endContainer, range.endContainer,
+      &quot;setStart() must not change the end node if the new start is before the old end&quot;);
+    assert_equals(newRange.endOffset, range.endOffset,
+      &quot;setStart() must not change the end offset if the new start is before the old end&quot;);
+  }
+}
+
+function testSetEnd(range, node, offset) {
+  if (node.nodeType == Node.DOCUMENT_TYPE_NODE) {
+    assert_throws(&quot;INVALID_NODE_TYPE_ERR&quot;, function() {
+      range.setEnd(node, offset);
+    }, &quot;setEnd() to a doctype must throw INVALID_NODE_TYPE_ERR&quot;);
+    return;
+  }
+
+  if (offset &lt; 0 || offset &gt; nodeLength(node)) {
+    assert_throws(&quot;INDEX_SIZE_ERR&quot;, function() {
+      range.setEnd(node, offset);
+    }, &quot;setEnd() to a too-large offset must throw INDEX_SIZE_ERR&quot;);
+    return;
+  }
+
+  var newRange = range.cloneRange();
+  newRange.setEnd(node, offset);
+
+  // FIXME: I'm assuming comparePoint() is correct, but the tests for that
+  // will depend on setStart()/setEnd().
+  if (furthestAncestor(node) != furthestAncestor(range.startContainer)
+  || range.comparePoint(node, offset) &lt; 0) {
+    assert_equals(newRange.startContainer, node,
+      &quot;setEnd(node, offset) where node is before current start or in different document must set the end node to node too&quot;);
+    assert_equals(newRange.startOffset, offset,
+      &quot;setEnd(node, offset) where node is before current start or in different document must set the end offset to offset too&quot;);
+  } else {
+    assert_equals(newRange.startContainer, range.startContainer,
+      &quot;setEnd() must not change the start node if the new end is after the old start&quot;);
+    assert_equals(newRange.startOffset, range.startOffset,
+      &quot;setEnd() must not change the start offset if the new end is after the old start&quot;);
+  }
+
+  assert_equals(newRange.endContainer, node,
+    &quot;setEnd() must change endContainer to the new node&quot;);
+  assert_equals(newRange.endOffset, offset,
+    &quot;setEnd() must change endOffset to the new offset&quot;);
+}
+
+function testSetStartBefore(range, node) {
+  var parent = node.parentNode;
+  if (parent === null) {
+    assert_throws(&quot;INVALID_NODE_TYPE_ERR&quot;, function () {
+      range.setStartBefore(node);
+    }, &quot;setStartBefore() to a node with null parent must throw INVALID_NODE_TYPE_ERR&quot;);
+    return;
+  }
+
+  var idx = 0;
+  while (node.parentNode.childNodes[idx] != node) {
+    idx++;
+  }
+
+  testSetStart(range, node.parentNode, idx);
+}
+
+function testSetStartAfter(range, node) {
+  var parent = node.parentNode;
+  if (parent === null) {
+    assert_throws(&quot;INVALID_NODE_TYPE_ERR&quot;, function () {
+      range.setStartAfter(node);
+    }, &quot;setStartAfter() to a node with null parent must throw INVALID_NODE_TYPE_ERR&quot;);
+    return;
+  }
+
+  var idx = 0;
+  while (node.parentNode.childNodes[idx] != node) {
+    idx++;
+  }
+
+  testSetStart(range, node.parentNode, idx + 1);
+}
+
+function testSetEndBefore(range, node) {
+  var parent = node.parentNode;
+  if (parent === null) {
+    assert_throws(&quot;INVALID_NODE_TYPE_ERR&quot;, function () {
+      range.setEndBefore(node);
+    }, &quot;setEndBefore() to a node with null parent must throw INVALID_NODE_TYPE_ERR&quot;);
+    return;
+  }
+
+  var idx = 0;
+  while (node.parentNode.childNodes[idx] != node) {
+    idx++;
+  }
+
+  testSetEnd(range, node.parentNode, idx);
+}
+
+function testSetEndAfter(range, node) {
+  var parent = node.parentNode;
+  if (parent === null) {
+    assert_throws(&quot;INVALID_NODE_TYPE_ERR&quot;, function () {
+      range.setEndAfter(node);
+    }, &quot;setEndAfter() to a node with null parent must throw INVALID_NODE_TYPE_ERR&quot;);
+    return;
+  }
+
+  var idx = 0;
+  while (node.parentNode.childNodes[idx] != node) {
+    idx++;
+  }
+
+  testSetEnd(range, node.parentNode, idx + 1);
+}
+
+
+var startTests = [];
+var endTests = [];
+var startBeforeTests = [];
+var startAfterTests = [];
+var endBeforeTests = [];
+var endAfterTests = [];
+
+// Don't want to eval() each point a bazillion times
+var testPointsCached = testPoints.map(eval);
+var testNodesCached = testNodesShort.map(eval);
+
+for (var i = 0; i &lt; testRangesShort.length; i++) {
+  var endpoints = eval(testRangesShort[i]);
+  var range;
+  test(function() {
+    range = ownerDocument(endpoints[0]).createRange();
+    range.setStart(endpoints[0], endpoints[1]);
+    range.setEnd(endpoints[2], endpoints[3]);
+  }, &quot;Set up range &quot; + i + &quot; &quot; + testRangesShort[i]);
+
+  for (var j = 0; j &lt; testPoints.length; j++) {
+    startTests.push([&quot;setStart() with range &quot; + i + &quot; &quot; + testRangesShort[i] + &quot;, point &quot; + j + &quot; &quot; + testPoints[j],
+      range,
+      testPointsCached[j][0],
+      testPointsCached[j][1]
+    ]);
+    endTests.push([&quot;setEnd() with range &quot; + i + &quot; &quot; + testRangesShort[i] + &quot;, point &quot; + j + &quot; &quot; + testPoints[j],
+      range,
+      testPointsCached[j][0],
+      testPointsCached[j][1]
+    ]);
+  }
+
+  for (var j = 0; j &lt; testNodesShort.length; j++) {
+    startBeforeTests.push([&quot;setStartBefore() with range &quot; + i + &quot; &quot; + testRangesShort[i] + &quot;, node &quot; + j + &quot; &quot; + testNodesShort[j],
+      range,
+      testNodesCached[j]
+    ]);
+    startAfterTests.push([&quot;setStartAfter() with range &quot; + i + &quot; &quot; + testRangesShort[i] + &quot;, node &quot; + j + &quot; &quot; + testNodesShort[j],
+      range,
+      testNodesCached[j]
+    ]);
+    endBeforeTests.push([&quot;setEndBefore() with range &quot; + i + &quot; &quot; + testRangesShort[i] + &quot;, node &quot; + j + &quot; &quot; + testNodesShort[j],
+      range,
+      testNodesCached[j]
+    ]);
+    endAfterTests.push([&quot;setEndAfter() with range &quot; + i + &quot; &quot; + testRangesShort[i] + &quot;, node &quot; + j + &quot; &quot; + testNodesShort[j],
+      range,
+      testNodesCached[j]
+    ]);
+  }
+}
+
+generate_tests(testSetStart, startTests);
+generate_tests(testSetEnd, endTests);
+generate_tests(testSetStartBefore, startBeforeTests);
+generate_tests(testSetStartAfter, startAfterTests);
+generate_tests(testSetEndBefore, endBeforeTests);
+generate_tests(testSetEndAfter, endAfterTests);
+
+testDiv.style.display = &quot;none&quot;;
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangesurroundContentsexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangesurroundContentsexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-surroundContents-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-surroundContents-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-surroundContents-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-surroundContents-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,1860 @@
</span><ins>+To debug test failures, add a query parameter &quot;subtest&quot; with the test id (like &quot;?subtest=5,16&quot;). Only that test will be run. Then you can look at the resulting iframes in the DOM.
+
+
+FAIL 0,0: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node paras[0] assert_true: First differing node: expected Element node &lt;p id=&quot;b&quot; style=&quot;display:none&quot;&gt;Ijklmnop
+&lt;/p&gt;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 0,0: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node paras[0] assert_true: First differing node: expected Element node &lt;p id=&quot;b&quot; style=&quot;display:none&quot;&gt;Ijklmnop
+&lt;/p&gt;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 0,1: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node paras[0].firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 0,1: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node paras[0].firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 0,2: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node paras[1].firstChild 
+FAIL 0,2: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node paras[1].firstChild assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 0,3: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node foreignPara1 
+PASS 0,3: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node foreignPara1 
+PASS 0,4: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node foreignPara1.firstChild 
+FAIL 0,4: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node foreignPara1.firstChild assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 0,5: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node detachedPara1 
+PASS 0,5: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node detachedPara1 
+PASS 0,6: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node detachedPara1.firstChild 
+FAIL 0,6: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node detachedPara1.firstChild assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 0,7: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node document 
+PASS 0,7: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node document 
+PASS 0,8: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node detachedDiv 
+PASS 0,8: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node detachedDiv 
+PASS 0,9: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node foreignDoc 
+PASS 0,9: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node foreignDoc 
+PASS 0,10: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node foreignPara2 
+PASS 0,10: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node foreignPara2 
+PASS 0,11: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node xmlDoc 
+PASS 0,11: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node xmlDoc 
+PASS 0,12: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node xmlElement 
+PASS 0,12: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node xmlElement 
+PASS 0,13: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node detachedTextNode 
+FAIL 0,13: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node detachedTextNode assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 0,14: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node foreignTextNode 
+FAIL 0,14: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node foreignTextNode assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 0,15: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node processingInstruction 
+FAIL 0,15: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node processingInstruction assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 0,16: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node detachedProcessingInstruction 
+FAIL 0,16: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node detachedProcessingInstruction assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 0,17: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node comment 
+FAIL 0,17: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node comment assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 0,18: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node detachedComment 
+FAIL 0,18: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node detachedComment assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 0,19: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node docfrag 
+PASS 0,19: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node docfrag 
+PASS 0,20: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node doctype 
+PASS 0,20: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node doctype 
+PASS 0,21: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node foreignDoctype 
+PASS 0,21: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 0], node foreignDoctype 
+FAIL 1,0: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node paras[0] assert_true: First differing node: expected Element node &lt;p id=&quot;b&quot; style=&quot;display:none&quot;&gt;Ijklmnop
+&lt;/p&gt;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 1,0: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node paras[0] assert_true: First differing node: expected Element node &lt;p id=&quot;b&quot; style=&quot;display:none&quot;&gt;Ijklmnop
+&lt;/p&gt;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 1,1: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node paras[0].firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 1,1: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node paras[0].firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 1,2: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node paras[1].firstChild 
+FAIL 1,2: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node paras[1].firstChild assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 1,3: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node foreignPara1 
+PASS 1,3: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node foreignPara1 
+PASS 1,4: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node foreignPara1.firstChild 
+FAIL 1,4: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node foreignPara1.firstChild assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 1,5: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node detachedPara1 
+PASS 1,5: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node detachedPara1 
+PASS 1,6: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node detachedPara1.firstChild 
+FAIL 1,6: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node detachedPara1.firstChild assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 1,7: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node document 
+PASS 1,7: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node document 
+PASS 1,8: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node detachedDiv 
+PASS 1,8: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node detachedDiv 
+PASS 1,9: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node foreignDoc 
+PASS 1,9: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node foreignDoc 
+PASS 1,10: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node foreignPara2 
+PASS 1,10: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node foreignPara2 
+PASS 1,11: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node xmlDoc 
+PASS 1,11: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node xmlDoc 
+PASS 1,12: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node xmlElement 
+PASS 1,12: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node xmlElement 
+PASS 1,13: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node detachedTextNode 
+FAIL 1,13: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node detachedTextNode assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 1,14: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node foreignTextNode 
+FAIL 1,14: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node foreignTextNode assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 1,15: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node processingInstruction 
+FAIL 1,15: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node processingInstruction assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 1,16: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node detachedProcessingInstruction 
+FAIL 1,16: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node detachedProcessingInstruction assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 1,17: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node comment 
+FAIL 1,17: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node comment assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 1,18: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node detachedComment 
+FAIL 1,18: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node detachedComment assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 1,19: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node docfrag 
+PASS 1,19: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node docfrag 
+PASS 1,20: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node doctype 
+PASS 1,20: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node doctype 
+PASS 1,21: resulting DOM for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node foreignDoctype 
+PASS 1,21: resulting range position for range [paras[0].firstChild, 0, paras[0].firstChild, 1], node foreignDoctype 
+FAIL 2,0: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node paras[0] assert_true: First differing node: expected Element node &lt;p id=&quot;b&quot; style=&quot;display:none&quot;&gt;Ijklmnop
+&lt;/p&gt;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 2,0: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node paras[0] assert_true: First differing node: expected Element node &lt;p id=&quot;b&quot; style=&quot;display:none&quot;&gt;Ijklmnop
+&lt;/p&gt;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 2,1: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node paras[0].firstChild assert_true: First differing node: expected Text node &quot;Ä&quot;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 2,1: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node paras[0].firstChild assert_true: First differing node: expected Text node &quot;Ä&quot;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 2,2: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node paras[1].firstChild 
+PASS 2,2: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node paras[1].firstChild 
+PASS 2,3: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node foreignPara1 
+PASS 2,3: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node foreignPara1 
+PASS 2,4: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node foreignPara1.firstChild 
+PASS 2,4: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node foreignPara1.firstChild 
+PASS 2,5: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node detachedPara1 
+PASS 2,5: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node detachedPara1 
+PASS 2,6: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node detachedPara1.firstChild 
+PASS 2,6: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node detachedPara1.firstChild 
+PASS 2,7: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node document 
+PASS 2,7: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node document 
+PASS 2,8: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node detachedDiv 
+PASS 2,8: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node detachedDiv 
+PASS 2,9: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node foreignDoc 
+PASS 2,9: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node foreignDoc 
+PASS 2,10: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node foreignPara2 
+PASS 2,10: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node foreignPara2 
+PASS 2,11: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node xmlDoc 
+PASS 2,11: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node xmlDoc 
+PASS 2,12: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node xmlElement 
+PASS 2,12: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node xmlElement 
+PASS 2,13: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node detachedTextNode 
+PASS 2,13: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node detachedTextNode 
+PASS 2,14: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node foreignTextNode 
+PASS 2,14: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node foreignTextNode 
+PASS 2,15: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node processingInstruction 
+PASS 2,15: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node processingInstruction 
+PASS 2,16: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node detachedProcessingInstruction 
+PASS 2,16: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node detachedProcessingInstruction 
+PASS 2,17: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node comment 
+PASS 2,17: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node comment 
+PASS 2,18: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node detachedComment 
+PASS 2,18: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node detachedComment 
+PASS 2,19: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node docfrag 
+PASS 2,19: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node docfrag 
+PASS 2,20: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node doctype 
+PASS 2,20: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node doctype 
+PASS 2,21: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node foreignDoctype 
+PASS 2,21: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node foreignDoctype 
+FAIL 3,0: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node paras[0] assert_true: First differing node: expected Element node &lt;p id=&quot;b&quot; style=&quot;display:none&quot;&gt;Ijklmnop
+&lt;/p&gt;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 3,0: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node paras[0] assert_true: First differing node: expected Element node &lt;p id=&quot;b&quot; style=&quot;display:none&quot;&gt;Ijklmnop
+&lt;/p&gt;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 3,1: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node paras[0].firstChild assert_true: First differing node: expected Text node &quot;Ä&quot;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 3,1: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node paras[0].firstChild assert_true: First differing node: expected Text node &quot;Ä&quot;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 3,2: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node paras[1].firstChild 
+PASS 3,2: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node paras[1].firstChild 
+PASS 3,3: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node foreignPara1 
+PASS 3,3: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node foreignPara1 
+PASS 3,4: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node foreignPara1.firstChild 
+PASS 3,4: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node foreignPara1.firstChild 
+PASS 3,5: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node detachedPara1 
+PASS 3,5: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node detachedPara1 
+PASS 3,6: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node detachedPara1.firstChild 
+PASS 3,6: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node detachedPara1.firstChild 
+PASS 3,7: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node document 
+PASS 3,7: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node document 
+PASS 3,8: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node detachedDiv 
+PASS 3,8: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node detachedDiv 
+PASS 3,9: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node foreignDoc 
+PASS 3,9: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node foreignDoc 
+PASS 3,10: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node foreignPara2 
+PASS 3,10: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node foreignPara2 
+PASS 3,11: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node xmlDoc 
+PASS 3,11: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node xmlDoc 
+PASS 3,12: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node xmlElement 
+PASS 3,12: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node xmlElement 
+PASS 3,13: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node detachedTextNode 
+PASS 3,13: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node detachedTextNode 
+PASS 3,14: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node foreignTextNode 
+PASS 3,14: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node foreignTextNode 
+PASS 3,15: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node processingInstruction 
+PASS 3,15: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node processingInstruction 
+PASS 3,16: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node detachedProcessingInstruction 
+PASS 3,16: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node detachedProcessingInstruction 
+PASS 3,17: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node comment 
+PASS 3,17: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node comment 
+PASS 3,18: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node detachedComment 
+PASS 3,18: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node detachedComment 
+PASS 3,19: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node docfrag 
+PASS 3,19: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node docfrag 
+PASS 3,20: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node doctype 
+PASS 3,20: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node doctype 
+PASS 3,21: resulting DOM for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node foreignDoctype 
+PASS 3,21: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 9], node foreignDoctype 
+PASS 4,0: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node paras[0] 
+PASS 4,0: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node paras[0] 
+PASS 4,1: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node paras[0].firstChild 
+FAIL 4,1: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node paras[0].firstChild assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+FAIL 4,2: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node paras[1].firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Ijklmnop
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 4,2: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node paras[1].firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Ijklmnop
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 4,3: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignPara1 
+PASS 4,3: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignPara1 
+PASS 4,4: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignPara1.firstChild 
+FAIL 4,4: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignPara1.firstChild assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 4,5: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node detachedPara1 
+PASS 4,5: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node detachedPara1 
+PASS 4,6: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node detachedPara1.firstChild 
+FAIL 4,6: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node detachedPara1.firstChild assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 4,7: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node document 
+PASS 4,7: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node document 
+PASS 4,8: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node detachedDiv 
+PASS 4,8: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node detachedDiv 
+PASS 4,9: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignDoc 
+PASS 4,9: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignDoc 
+PASS 4,10: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignPara2 
+PASS 4,10: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignPara2 
+PASS 4,11: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node xmlDoc 
+PASS 4,11: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node xmlDoc 
+PASS 4,12: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node xmlElement 
+PASS 4,12: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node xmlElement 
+PASS 4,13: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node detachedTextNode 
+FAIL 4,13: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node detachedTextNode assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 4,14: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignTextNode 
+FAIL 4,14: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignTextNode assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 4,15: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node processingInstruction 
+FAIL 4,15: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node processingInstruction assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 4,16: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node detachedProcessingInstruction 
+FAIL 4,16: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node detachedProcessingInstruction assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 4,17: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node comment 
+FAIL 4,17: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node comment assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 4,18: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node detachedComment 
+FAIL 4,18: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node detachedComment assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 4,19: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node docfrag 
+PASS 4,19: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node docfrag 
+PASS 4,20: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node doctype 
+PASS 4,20: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node doctype 
+PASS 4,21: resulting DOM for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignDoctype 
+PASS 4,21: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node foreignDoctype 
+PASS 5,0: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node paras[0] 
+PASS 5,0: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node paras[0] 
+PASS 5,1: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node paras[0].firstChild 
+PASS 5,1: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node paras[0].firstChild 
+FAIL 5,2: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node paras[1].firstChild assert_true: First differing node: expected Text node &quot;Ij&quot;, got Text node &quot;Ijklmnop
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 5,2: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node paras[1].firstChild assert_true: First differing node: expected Text node &quot;Ij&quot;, got Text node &quot;Ijklmnop
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 5,3: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node foreignPara1 
+PASS 5,3: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node foreignPara1 
+PASS 5,4: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node foreignPara1.firstChild 
+PASS 5,4: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node foreignPara1.firstChild 
+PASS 5,5: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node detachedPara1 
+PASS 5,5: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node detachedPara1 
+PASS 5,6: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node detachedPara1.firstChild 
+PASS 5,6: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node detachedPara1.firstChild 
+PASS 5,7: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node document 
+PASS 5,7: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node document 
+PASS 5,8: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node detachedDiv 
+PASS 5,8: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node detachedDiv 
+PASS 5,9: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node foreignDoc 
+PASS 5,9: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node foreignDoc 
+PASS 5,10: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node foreignPara2 
+PASS 5,10: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node foreignPara2 
+PASS 5,11: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node xmlDoc 
+PASS 5,11: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node xmlDoc 
+PASS 5,12: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node xmlElement 
+PASS 5,12: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node xmlElement 
+PASS 5,13: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node detachedTextNode 
+PASS 5,13: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node detachedTextNode 
+PASS 5,14: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node foreignTextNode 
+PASS 5,14: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node foreignTextNode 
+PASS 5,15: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node processingInstruction 
+PASS 5,15: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node processingInstruction 
+PASS 5,16: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node detachedProcessingInstruction 
+PASS 5,16: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node detachedProcessingInstruction 
+PASS 5,17: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node comment 
+PASS 5,17: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node comment 
+PASS 5,18: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node detachedComment 
+PASS 5,18: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node detachedComment 
+PASS 5,19: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node docfrag 
+PASS 5,19: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node docfrag 
+PASS 5,20: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node doctype 
+PASS 5,20: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node doctype 
+PASS 5,21: resulting DOM for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node foreignDoctype 
+PASS 5,21: resulting range position for range [paras[1].firstChild, 2, paras[1].firstChild, 9], node foreignDoctype 
+FAIL 6,0: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node paras[0] InvalidNodeTypeError: DOM Exception 24
+FAIL 6,0: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node paras[0] assert_equals: Unexpected startOffset after surroundContents() expected 1 but got 0
+PASS 6,1: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node paras[0].firstChild 
+FAIL 6,1: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node paras[0].firstChild assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 6,2: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node paras[1].firstChild 
+FAIL 6,2: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node paras[1].firstChild assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+FAIL 6,3: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node foreignPara1 InvalidNodeTypeError: DOM Exception 24
+FAIL 6,3: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node foreignPara1 assert_equals: Unexpected startOffset after surroundContents() expected 1 but got 0
+PASS 6,4: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node foreignPara1.firstChild 
+FAIL 6,4: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node foreignPara1.firstChild assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+FAIL 6,5: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedPara1 assert_true: First differing node: expected Element node &lt;p&gt;Wxyzabcd&lt;/p&gt;, got Text node &quot;Opqrstuv&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 6,5: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedPara1 assert_true: First differing node: expected Element node &lt;p&gt;Wxyzabcd&lt;/p&gt;, got Text node &quot;Opqrstuv&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 6,6: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedPara1.firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Opqrstuv&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 6,6: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedPara1.firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Opqrstuv&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 6,7: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node document 
+PASS 6,7: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node document 
+FAIL 6,8: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedDiv assert_unreached: DOMs were not equal but we couldn't figure out why Reached unreachable code
+FAIL 6,8: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedDiv assert_unreached: DOMs were not equal but we couldn't figure out why Reached unreachable code
+PASS 6,9: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node foreignDoc 
+PASS 6,9: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node foreignDoc 
+FAIL 6,10: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node foreignPara2 InvalidNodeTypeError: DOM Exception 24
+FAIL 6,10: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node foreignPara2 assert_equals: Unexpected startOffset after surroundContents() expected 1 but got 0
+PASS 6,11: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node xmlDoc 
+PASS 6,11: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node xmlDoc 
+FAIL 6,12: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node xmlElement InvalidNodeTypeError: DOM Exception 24
+FAIL 6,12: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node xmlElement assert_equals: Unexpected startOffset after surroundContents() expected 1 but got 0
+PASS 6,13: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedTextNode 
+FAIL 6,13: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedTextNode assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 6,14: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node foreignTextNode 
+FAIL 6,14: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node foreignTextNode assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 6,15: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node processingInstruction 
+FAIL 6,15: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node processingInstruction assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 6,16: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedProcessingInstruction 
+FAIL 6,16: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedProcessingInstruction assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 6,17: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node comment 
+FAIL 6,17: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node comment assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 6,18: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedComment 
+FAIL 6,18: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node detachedComment assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 6,19: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node docfrag 
+PASS 6,19: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node docfrag 
+PASS 6,20: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node doctype 
+PASS 6,20: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node doctype 
+PASS 6,21: resulting DOM for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node foreignDoctype 
+PASS 6,21: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node foreignDoctype 
+FAIL 7,0: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node paras[0] InvalidNodeTypeError: DOM Exception 24
+FAIL 7,0: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node paras[0] assert_equals: Unexpected startOffset after surroundContents() expected 1 but got 2
+PASS 7,1: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node paras[0].firstChild 
+PASS 7,1: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node paras[0].firstChild 
+PASS 7,2: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node paras[1].firstChild 
+PASS 7,2: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node paras[1].firstChild 
+FAIL 7,3: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node foreignPara1 InvalidNodeTypeError: DOM Exception 24
+FAIL 7,3: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node foreignPara1 assert_equals: Unexpected startOffset after surroundContents() expected 1 but got 2
+PASS 7,4: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node foreignPara1.firstChild 
+PASS 7,4: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node foreignPara1.firstChild 
+FAIL 7,5: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedPara1 assert_true: First differing node: expected Element node &lt;p&gt;Wxyzabcd&lt;/p&gt;, got Text node &quot;Opqrstuv&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 7,5: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedPara1 assert_true: First differing node: expected Element node &lt;p&gt;Wxyzabcd&lt;/p&gt;, got Text node &quot;Opqrstuv&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 7,6: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedPara1.firstChild assert_true: First differing node: expected Text node &quot;Op&quot;, got Text node &quot;Opqrstuv&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 7,6: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedPara1.firstChild assert_true: First differing node: expected Text node &quot;Op&quot;, got Text node &quot;Opqrstuv&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 7,7: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node document 
+PASS 7,7: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node document 
+FAIL 7,8: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedDiv assert_unreached: DOMs were not equal but we couldn't figure out why Reached unreachable code
+FAIL 7,8: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedDiv assert_unreached: DOMs were not equal but we couldn't figure out why Reached unreachable code
+PASS 7,9: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node foreignDoc 
+PASS 7,9: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node foreignDoc 
+FAIL 7,10: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node foreignPara2 InvalidNodeTypeError: DOM Exception 24
+FAIL 7,10: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node foreignPara2 assert_equals: Unexpected startOffset after surroundContents() expected 1 but got 2
+PASS 7,11: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node xmlDoc 
+PASS 7,11: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node xmlDoc 
+FAIL 7,12: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node xmlElement InvalidNodeTypeError: DOM Exception 24
+FAIL 7,12: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node xmlElement assert_equals: Unexpected startOffset after surroundContents() expected 1 but got 2
+PASS 7,13: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedTextNode 
+PASS 7,13: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedTextNode 
+PASS 7,14: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node foreignTextNode 
+PASS 7,14: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node foreignTextNode 
+PASS 7,15: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node processingInstruction 
+PASS 7,15: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node processingInstruction 
+PASS 7,16: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedProcessingInstruction 
+PASS 7,16: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedProcessingInstruction 
+PASS 7,17: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node comment 
+PASS 7,17: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node comment 
+PASS 7,18: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedComment 
+PASS 7,18: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node detachedComment 
+PASS 7,19: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node docfrag 
+PASS 7,19: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node docfrag 
+PASS 7,20: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node doctype 
+PASS 7,20: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node doctype 
+PASS 7,21: resulting DOM for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node foreignDoctype 
+PASS 7,21: resulting range position for range [detachedPara1.firstChild, 2, detachedPara1.firstChild, 8], node foreignDoctype 
+PASS 8,0: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node paras[0] 
+PASS 8,0: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node paras[0] 
+PASS 8,1: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node paras[0].firstChild 
+FAIL 8,1: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node paras[0].firstChild assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 8,2: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node paras[1].firstChild 
+FAIL 8,2: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node paras[1].firstChild assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+FAIL 8,3: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignPara1 assert_true: First differing node: expected Element node &lt;p&gt;Mnopqrst&lt;/p&gt;, got Text node &quot;Efghijkl&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 8,3: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignPara1 assert_true: First differing node: expected Element node &lt;p&gt;Mnopqrst&lt;/p&gt;, got Text node &quot;Efghijkl&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 8,4: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignPara1.firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Efghijkl&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 8,4: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignPara1.firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Efghijkl&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 8,5: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedPara1 
+PASS 8,5: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedPara1 
+PASS 8,6: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedPara1.firstChild 
+FAIL 8,6: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedPara1.firstChild assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 8,7: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node document 
+PASS 8,7: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node document 
+PASS 8,8: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedDiv 
+PASS 8,8: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedDiv 
+PASS 8,9: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignDoc 
+PASS 8,9: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignDoc 
+PASS 8,10: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignPara2 
+PASS 8,10: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignPara2 
+PASS 8,11: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node xmlDoc 
+PASS 8,11: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node xmlDoc 
+PASS 8,12: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node xmlElement 
+PASS 8,12: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node xmlElement 
+PASS 8,13: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedTextNode 
+FAIL 8,13: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedTextNode assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 8,14: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignTextNode 
+FAIL 8,14: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignTextNode assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 8,15: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node processingInstruction 
+FAIL 8,15: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node processingInstruction assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 8,16: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedProcessingInstruction 
+FAIL 8,16: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedProcessingInstruction assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 8,17: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node comment 
+FAIL 8,17: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node comment assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 8,18: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedComment 
+FAIL 8,18: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node detachedComment assert_equals: Unexpected endOffset after surroundContents() expected 2 but got 0
+PASS 8,19: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node docfrag 
+PASS 8,19: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node docfrag 
+PASS 8,20: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node doctype 
+PASS 8,20: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node doctype 
+PASS 8,21: resulting DOM for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignDoctype 
+PASS 8,21: resulting range position for range [foreignPara1.firstChild, 0, foreignPara1.firstChild, 0], node foreignDoctype 
+PASS 9,0: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node paras[0] 
+PASS 9,0: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node paras[0] 
+PASS 9,1: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node paras[0].firstChild 
+PASS 9,1: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node paras[0].firstChild 
+PASS 9,2: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node paras[1].firstChild 
+PASS 9,2: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node paras[1].firstChild 
+FAIL 9,3: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignPara1 assert_true: First differing node: expected Element node &lt;p&gt;Mnopqrst&lt;/p&gt;, got Text node &quot;Efghijkl&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 9,3: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignPara1 assert_true: First differing node: expected Element node &lt;p&gt;Mnopqrst&lt;/p&gt;, got Text node &quot;Efghijkl&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 9,4: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignPara1.firstChild assert_true: First differing node: expected Text node &quot;Ef&quot;, got Text node &quot;Efghijkl&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 9,4: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignPara1.firstChild assert_true: First differing node: expected Text node &quot;Ef&quot;, got Text node &quot;Efghijkl&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 9,5: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node detachedPara1 
+PASS 9,5: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node detachedPara1 
+PASS 9,6: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node detachedPara1.firstChild 
+PASS 9,6: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node detachedPara1.firstChild 
+PASS 9,7: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node document 
+PASS 9,7: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node document 
+PASS 9,8: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node detachedDiv 
+PASS 9,8: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node detachedDiv 
+PASS 9,9: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignDoc 
+PASS 9,9: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignDoc 
+PASS 9,10: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignPara2 
+PASS 9,10: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignPara2 
+PASS 9,11: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node xmlDoc 
+PASS 9,11: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node xmlDoc 
+PASS 9,12: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node xmlElement 
+PASS 9,12: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node xmlElement 
+PASS 9,13: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node detachedTextNode 
+PASS 9,13: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node detachedTextNode 
+PASS 9,14: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignTextNode 
+PASS 9,14: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignTextNode 
+PASS 9,15: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node processingInstruction 
+PASS 9,15: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node processingInstruction 
+PASS 9,16: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node detachedProcessingInstruction 
+PASS 9,16: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node detachedProcessingInstruction 
+PASS 9,17: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node comment 
+PASS 9,17: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node comment 
+PASS 9,18: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node detachedComment 
+PASS 9,18: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node detachedComment 
+PASS 9,19: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node docfrag 
+PASS 9,19: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node docfrag 
+PASS 9,20: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node doctype 
+PASS 9,20: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node doctype 
+PASS 9,21: resulting DOM for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignDoctype 
+PASS 9,21: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node foreignDoctype 
+PASS 10,0: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node paras[0] 
+PASS 10,0: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node paras[0] 
+PASS 10,1: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node paras[0].firstChild 
+PASS 10,1: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node paras[0].firstChild 
+PASS 10,2: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node paras[1].firstChild 
+PASS 10,2: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node paras[1].firstChild 
+PASS 10,3: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node foreignPara1 
+PASS 10,3: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node foreignPara1 
+PASS 10,4: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node foreignPara1.firstChild 
+PASS 10,4: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node foreignPara1.firstChild 
+PASS 10,5: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node detachedPara1 
+PASS 10,5: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node detachedPara1 
+PASS 10,6: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node detachedPara1.firstChild 
+PASS 10,6: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node detachedPara1.firstChild 
+PASS 10,7: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node document 
+PASS 10,7: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node document 
+PASS 10,8: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node detachedDiv 
+PASS 10,8: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node detachedDiv 
+PASS 10,9: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node foreignDoc 
+PASS 10,9: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node foreignDoc 
+PASS 10,10: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node foreignPara2 
+PASS 10,10: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node foreignPara2 
+PASS 10,11: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node xmlDoc 
+PASS 10,11: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node xmlDoc 
+PASS 10,12: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node xmlElement 
+PASS 10,12: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node xmlElement 
+PASS 10,13: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node detachedTextNode 
+PASS 10,13: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node detachedTextNode 
+PASS 10,14: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node foreignTextNode 
+PASS 10,14: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node foreignTextNode 
+PASS 10,15: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node processingInstruction 
+PASS 10,15: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node processingInstruction 
+PASS 10,16: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node detachedProcessingInstruction 
+PASS 10,16: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node detachedProcessingInstruction 
+PASS 10,17: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node comment 
+PASS 10,17: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node comment 
+PASS 10,18: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node detachedComment 
+PASS 10,18: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node detachedComment 
+PASS 10,19: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node docfrag 
+PASS 10,19: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node docfrag 
+PASS 10,20: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node doctype 
+PASS 10,20: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node doctype 
+PASS 10,21: resulting DOM for range [document.documentElement, 0, document.documentElement, 1], node foreignDoctype 
+PASS 10,21: resulting range position for range [document.documentElement, 0, document.documentElement, 1], node foreignDoctype 
+PASS 11,0: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node paras[0] 
+PASS 11,0: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node paras[0] 
+PASS 11,1: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node paras[0].firstChild 
+PASS 11,1: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node paras[0].firstChild 
+PASS 11,2: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node paras[1].firstChild 
+PASS 11,2: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node paras[1].firstChild 
+PASS 11,3: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node foreignPara1 
+PASS 11,3: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node foreignPara1 
+PASS 11,4: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node foreignPara1.firstChild 
+PASS 11,4: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node foreignPara1.firstChild 
+PASS 11,5: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node detachedPara1 
+PASS 11,5: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node detachedPara1 
+PASS 11,6: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node detachedPara1.firstChild 
+PASS 11,6: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node detachedPara1.firstChild 
+PASS 11,7: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node document 
+PASS 11,7: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node document 
+PASS 11,8: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node detachedDiv 
+PASS 11,8: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node detachedDiv 
+PASS 11,9: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node foreignDoc 
+PASS 11,9: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node foreignDoc 
+PASS 11,10: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node foreignPara2 
+PASS 11,10: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node foreignPara2 
+PASS 11,11: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node xmlDoc 
+PASS 11,11: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node xmlDoc 
+PASS 11,12: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node xmlElement 
+PASS 11,12: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node xmlElement 
+PASS 11,13: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node detachedTextNode 
+PASS 11,13: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node detachedTextNode 
+PASS 11,14: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node foreignTextNode 
+PASS 11,14: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node foreignTextNode 
+PASS 11,15: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node processingInstruction 
+PASS 11,15: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node processingInstruction 
+PASS 11,16: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node detachedProcessingInstruction 
+PASS 11,16: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node detachedProcessingInstruction 
+PASS 11,17: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node comment 
+PASS 11,17: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node comment 
+PASS 11,18: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node detachedComment 
+PASS 11,18: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node detachedComment 
+PASS 11,19: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node docfrag 
+PASS 11,19: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node docfrag 
+PASS 11,20: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node doctype 
+PASS 11,20: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node doctype 
+PASS 11,21: resulting DOM for range [document.documentElement, 0, document.documentElement, 2], node foreignDoctype 
+PASS 11,21: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node foreignDoctype 
+PASS 12,0: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node paras[0] 
+PASS 12,0: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node paras[0] 
+PASS 12,1: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node paras[0].firstChild 
+PASS 12,1: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node paras[0].firstChild 
+PASS 12,2: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node paras[1].firstChild 
+PASS 12,2: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node paras[1].firstChild 
+PASS 12,3: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node foreignPara1 
+PASS 12,3: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node foreignPara1 
+PASS 12,4: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node foreignPara1.firstChild 
+PASS 12,4: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node foreignPara1.firstChild 
+PASS 12,5: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node detachedPara1 
+PASS 12,5: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node detachedPara1 
+PASS 12,6: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node detachedPara1.firstChild 
+PASS 12,6: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node detachedPara1.firstChild 
+PASS 12,7: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node document 
+PASS 12,7: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node document 
+PASS 12,8: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node detachedDiv 
+PASS 12,8: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node detachedDiv 
+PASS 12,9: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node foreignDoc 
+PASS 12,9: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node foreignDoc 
+PASS 12,10: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node foreignPara2 
+PASS 12,10: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node foreignPara2 
+PASS 12,11: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node xmlDoc 
+PASS 12,11: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node xmlDoc 
+PASS 12,12: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node xmlElement 
+PASS 12,12: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node xmlElement 
+PASS 12,13: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node detachedTextNode 
+PASS 12,13: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node detachedTextNode 
+PASS 12,14: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node foreignTextNode 
+PASS 12,14: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node foreignTextNode 
+PASS 12,15: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node processingInstruction 
+PASS 12,15: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node processingInstruction 
+PASS 12,16: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node detachedProcessingInstruction 
+PASS 12,16: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node detachedProcessingInstruction 
+PASS 12,17: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node comment 
+PASS 12,17: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node comment 
+PASS 12,18: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node detachedComment 
+PASS 12,18: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node detachedComment 
+PASS 12,19: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node docfrag 
+PASS 12,19: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node docfrag 
+PASS 12,20: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node doctype 
+PASS 12,20: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node doctype 
+PASS 12,21: resulting DOM for range [document.documentElement, 1, document.documentElement, 2], node foreignDoctype 
+PASS 12,21: resulting range position for range [document.documentElement, 1, document.documentElement, 2], node foreignDoctype 
+PASS 13,0: resulting DOM for range [document.head, 1, document.head, 1], node paras[0] 
+PASS 13,0: resulting range position for range [document.head, 1, document.head, 1], node paras[0] 
+PASS 13,1: resulting DOM for range [document.head, 1, document.head, 1], node paras[0].firstChild 
+PASS 13,1: resulting range position for range [document.head, 1, document.head, 1], node paras[0].firstChild 
+PASS 13,2: resulting DOM for range [document.head, 1, document.head, 1], node paras[1].firstChild 
+PASS 13,2: resulting range position for range [document.head, 1, document.head, 1], node paras[1].firstChild 
+PASS 13,3: resulting DOM for range [document.head, 1, document.head, 1], node foreignPara1 
+PASS 13,3: resulting range position for range [document.head, 1, document.head, 1], node foreignPara1 
+PASS 13,4: resulting DOM for range [document.head, 1, document.head, 1], node foreignPara1.firstChild 
+PASS 13,4: resulting range position for range [document.head, 1, document.head, 1], node foreignPara1.firstChild 
+PASS 13,5: resulting DOM for range [document.head, 1, document.head, 1], node detachedPara1 
+PASS 13,5: resulting range position for range [document.head, 1, document.head, 1], node detachedPara1 
+PASS 13,6: resulting DOM for range [document.head, 1, document.head, 1], node detachedPara1.firstChild 
+PASS 13,6: resulting range position for range [document.head, 1, document.head, 1], node detachedPara1.firstChild 
+PASS 13,7: resulting DOM for range [document.head, 1, document.head, 1], node document 
+PASS 13,7: resulting range position for range [document.head, 1, document.head, 1], node document 
+PASS 13,8: resulting DOM for range [document.head, 1, document.head, 1], node detachedDiv 
+PASS 13,8: resulting range position for range [document.head, 1, document.head, 1], node detachedDiv 
+PASS 13,9: resulting DOM for range [document.head, 1, document.head, 1], node foreignDoc 
+PASS 13,9: resulting range position for range [document.head, 1, document.head, 1], node foreignDoc 
+PASS 13,10: resulting DOM for range [document.head, 1, document.head, 1], node foreignPara2 
+PASS 13,10: resulting range position for range [document.head, 1, document.head, 1], node foreignPara2 
+PASS 13,11: resulting DOM for range [document.head, 1, document.head, 1], node xmlDoc 
+PASS 13,11: resulting range position for range [document.head, 1, document.head, 1], node xmlDoc 
+PASS 13,12: resulting DOM for range [document.head, 1, document.head, 1], node xmlElement 
+PASS 13,12: resulting range position for range [document.head, 1, document.head, 1], node xmlElement 
+PASS 13,13: resulting DOM for range [document.head, 1, document.head, 1], node detachedTextNode 
+PASS 13,13: resulting range position for range [document.head, 1, document.head, 1], node detachedTextNode 
+PASS 13,14: resulting DOM for range [document.head, 1, document.head, 1], node foreignTextNode 
+PASS 13,14: resulting range position for range [document.head, 1, document.head, 1], node foreignTextNode 
+PASS 13,15: resulting DOM for range [document.head, 1, document.head, 1], node processingInstruction 
+PASS 13,15: resulting range position for range [document.head, 1, document.head, 1], node processingInstruction 
+PASS 13,16: resulting DOM for range [document.head, 1, document.head, 1], node detachedProcessingInstruction 
+PASS 13,16: resulting range position for range [document.head, 1, document.head, 1], node detachedProcessingInstruction 
+PASS 13,17: resulting DOM for range [document.head, 1, document.head, 1], node comment 
+PASS 13,17: resulting range position for range [document.head, 1, document.head, 1], node comment 
+PASS 13,18: resulting DOM for range [document.head, 1, document.head, 1], node detachedComment 
+PASS 13,18: resulting range position for range [document.head, 1, document.head, 1], node detachedComment 
+PASS 13,19: resulting DOM for range [document.head, 1, document.head, 1], node docfrag 
+PASS 13,19: resulting range position for range [document.head, 1, document.head, 1], node docfrag 
+PASS 13,20: resulting DOM for range [document.head, 1, document.head, 1], node doctype 
+PASS 13,20: resulting range position for range [document.head, 1, document.head, 1], node doctype 
+PASS 13,21: resulting DOM for range [document.head, 1, document.head, 1], node foreignDoctype 
+PASS 13,21: resulting range position for range [document.head, 1, document.head, 1], node foreignDoctype 
+PASS 14,0: resulting DOM for range [document.body, 4, document.body, 5], node paras[0] 
+PASS 14,0: resulting range position for range [document.body, 4, document.body, 5], node paras[0] 
+PASS 14,1: resulting DOM for range [document.body, 4, document.body, 5], node paras[0].firstChild 
+PASS 14,1: resulting range position for range [document.body, 4, document.body, 5], node paras[0].firstChild 
+PASS 14,2: resulting DOM for range [document.body, 4, document.body, 5], node paras[1].firstChild 
+PASS 14,2: resulting range position for range [document.body, 4, document.body, 5], node paras[1].firstChild 
+PASS 14,3: resulting DOM for range [document.body, 4, document.body, 5], node foreignPara1 
+PASS 14,3: resulting range position for range [document.body, 4, document.body, 5], node foreignPara1 
+PASS 14,4: resulting DOM for range [document.body, 4, document.body, 5], node foreignPara1.firstChild 
+PASS 14,4: resulting range position for range [document.body, 4, document.body, 5], node foreignPara1.firstChild 
+PASS 14,5: resulting DOM for range [document.body, 4, document.body, 5], node detachedPara1 
+PASS 14,5: resulting range position for range [document.body, 4, document.body, 5], node detachedPara1 
+PASS 14,6: resulting DOM for range [document.body, 4, document.body, 5], node detachedPara1.firstChild 
+PASS 14,6: resulting range position for range [document.body, 4, document.body, 5], node detachedPara1.firstChild 
+PASS 14,7: resulting DOM for range [document.body, 4, document.body, 5], node document 
+PASS 14,7: resulting range position for range [document.body, 4, document.body, 5], node document 
+PASS 14,8: resulting DOM for range [document.body, 4, document.body, 5], node detachedDiv 
+PASS 14,8: resulting range position for range [document.body, 4, document.body, 5], node detachedDiv 
+PASS 14,9: resulting DOM for range [document.body, 4, document.body, 5], node foreignDoc 
+PASS 14,9: resulting range position for range [document.body, 4, document.body, 5], node foreignDoc 
+PASS 14,10: resulting DOM for range [document.body, 4, document.body, 5], node foreignPara2 
+PASS 14,10: resulting range position for range [document.body, 4, document.body, 5], node foreignPara2 
+PASS 14,11: resulting DOM for range [document.body, 4, document.body, 5], node xmlDoc 
+PASS 14,11: resulting range position for range [document.body, 4, document.body, 5], node xmlDoc 
+PASS 14,12: resulting DOM for range [document.body, 4, document.body, 5], node xmlElement 
+PASS 14,12: resulting range position for range [document.body, 4, document.body, 5], node xmlElement 
+PASS 14,13: resulting DOM for range [document.body, 4, document.body, 5], node detachedTextNode 
+PASS 14,13: resulting range position for range [document.body, 4, document.body, 5], node detachedTextNode 
+PASS 14,14: resulting DOM for range [document.body, 4, document.body, 5], node foreignTextNode 
+PASS 14,14: resulting range position for range [document.body, 4, document.body, 5], node foreignTextNode 
+PASS 14,15: resulting DOM for range [document.body, 4, document.body, 5], node processingInstruction 
+PASS 14,15: resulting range position for range [document.body, 4, document.body, 5], node processingInstruction 
+PASS 14,16: resulting DOM for range [document.body, 4, document.body, 5], node detachedProcessingInstruction 
+PASS 14,16: resulting range position for range [document.body, 4, document.body, 5], node detachedProcessingInstruction 
+PASS 14,17: resulting DOM for range [document.body, 4, document.body, 5], node comment 
+PASS 14,17: resulting range position for range [document.body, 4, document.body, 5], node comment 
+PASS 14,18: resulting DOM for range [document.body, 4, document.body, 5], node detachedComment 
+PASS 14,18: resulting range position for range [document.body, 4, document.body, 5], node detachedComment 
+PASS 14,19: resulting DOM for range [document.body, 4, document.body, 5], node docfrag 
+PASS 14,19: resulting range position for range [document.body, 4, document.body, 5], node docfrag 
+PASS 14,20: resulting DOM for range [document.body, 4, document.body, 5], node doctype 
+PASS 14,20: resulting range position for range [document.body, 4, document.body, 5], node doctype 
+PASS 14,21: resulting DOM for range [document.body, 4, document.body, 5], node foreignDoctype 
+PASS 14,21: resulting range position for range [document.body, 4, document.body, 5], node foreignDoctype 
+PASS 15,0: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node paras[0] 
+PASS 15,0: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node paras[0] 
+PASS 15,1: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node paras[0].firstChild 
+PASS 15,1: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node paras[0].firstChild 
+PASS 15,2: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node paras[1].firstChild 
+PASS 15,2: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node paras[1].firstChild 
+PASS 15,3: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node foreignPara1 
+PASS 15,3: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node foreignPara1 
+PASS 15,4: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node foreignPara1.firstChild 
+PASS 15,4: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node foreignPara1.firstChild 
+PASS 15,5: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node detachedPara1 
+PASS 15,5: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node detachedPara1 
+PASS 15,6: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node detachedPara1.firstChild 
+PASS 15,6: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node detachedPara1.firstChild 
+PASS 15,7: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node document 
+PASS 15,7: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node document 
+PASS 15,8: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node detachedDiv 
+PASS 15,8: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node detachedDiv 
+PASS 15,9: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node foreignDoc 
+PASS 15,9: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node foreignDoc 
+PASS 15,10: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node foreignPara2 
+PASS 15,10: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node foreignPara2 
+PASS 15,11: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node xmlDoc 
+PASS 15,11: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node xmlDoc 
+PASS 15,12: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node xmlElement 
+PASS 15,12: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node xmlElement 
+PASS 15,13: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node detachedTextNode 
+PASS 15,13: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node detachedTextNode 
+PASS 15,14: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node foreignTextNode 
+PASS 15,14: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node foreignTextNode 
+PASS 15,15: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node processingInstruction 
+PASS 15,15: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node processingInstruction 
+PASS 15,16: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node detachedProcessingInstruction 
+PASS 15,16: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node detachedProcessingInstruction 
+PASS 15,17: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node comment 
+PASS 15,17: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node comment 
+PASS 15,18: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node detachedComment 
+PASS 15,18: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node detachedComment 
+PASS 15,19: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node docfrag 
+PASS 15,19: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node docfrag 
+PASS 15,20: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node doctype 
+PASS 15,20: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node doctype 
+PASS 15,21: resulting DOM for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node foreignDoctype 
+PASS 15,21: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node foreignDoctype 
+FAIL 16,0: resulting DOM for range [paras[0], 0, paras[0], 1], node paras[0] assert_true: First differing node: expected Element node &lt;p id=&quot;b&quot; style=&quot;display:none&quot;&gt;Ijklmnop
+&lt;/p&gt;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 16,0: resulting range position for range [paras[0], 0, paras[0], 1], node paras[0] assert_true: First differing node: expected Element node &lt;p id=&quot;b&quot; style=&quot;display:none&quot;&gt;Ijklmnop
+&lt;/p&gt;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 16,1: resulting DOM for range [paras[0], 0, paras[0], 1], node paras[0].firstChild 
+PASS 16,1: resulting range position for range [paras[0], 0, paras[0], 1], node paras[0].firstChild 
+PASS 16,2: resulting DOM for range [paras[0], 0, paras[0], 1], node paras[1].firstChild 
+PASS 16,2: resulting range position for range [paras[0], 0, paras[0], 1], node paras[1].firstChild 
+PASS 16,3: resulting DOM for range [paras[0], 0, paras[0], 1], node foreignPara1 
+PASS 16,3: resulting range position for range [paras[0], 0, paras[0], 1], node foreignPara1 
+PASS 16,4: resulting DOM for range [paras[0], 0, paras[0], 1], node foreignPara1.firstChild 
+PASS 16,4: resulting range position for range [paras[0], 0, paras[0], 1], node foreignPara1.firstChild 
+PASS 16,5: resulting DOM for range [paras[0], 0, paras[0], 1], node detachedPara1 
+PASS 16,5: resulting range position for range [paras[0], 0, paras[0], 1], node detachedPara1 
+PASS 16,6: resulting DOM for range [paras[0], 0, paras[0], 1], node detachedPara1.firstChild 
+PASS 16,6: resulting range position for range [paras[0], 0, paras[0], 1], node detachedPara1.firstChild 
+PASS 16,7: resulting DOM for range [paras[0], 0, paras[0], 1], node document 
+PASS 16,7: resulting range position for range [paras[0], 0, paras[0], 1], node document 
+PASS 16,8: resulting DOM for range [paras[0], 0, paras[0], 1], node detachedDiv 
+PASS 16,8: resulting range position for range [paras[0], 0, paras[0], 1], node detachedDiv 
+PASS 16,9: resulting DOM for range [paras[0], 0, paras[0], 1], node foreignDoc 
+PASS 16,9: resulting range position for range [paras[0], 0, paras[0], 1], node foreignDoc 
+PASS 16,10: resulting DOM for range [paras[0], 0, paras[0], 1], node foreignPara2 
+PASS 16,10: resulting range position for range [paras[0], 0, paras[0], 1], node foreignPara2 
+PASS 16,11: resulting DOM for range [paras[0], 0, paras[0], 1], node xmlDoc 
+PASS 16,11: resulting range position for range [paras[0], 0, paras[0], 1], node xmlDoc 
+PASS 16,12: resulting DOM for range [paras[0], 0, paras[0], 1], node xmlElement 
+PASS 16,12: resulting range position for range [paras[0], 0, paras[0], 1], node xmlElement 
+PASS 16,13: resulting DOM for range [paras[0], 0, paras[0], 1], node detachedTextNode 
+PASS 16,13: resulting range position for range [paras[0], 0, paras[0], 1], node detachedTextNode 
+PASS 16,14: resulting DOM for range [paras[0], 0, paras[0], 1], node foreignTextNode 
+PASS 16,14: resulting range position for range [paras[0], 0, paras[0], 1], node foreignTextNode 
+PASS 16,15: resulting DOM for range [paras[0], 0, paras[0], 1], node processingInstruction 
+PASS 16,15: resulting range position for range [paras[0], 0, paras[0], 1], node processingInstruction 
+PASS 16,16: resulting DOM for range [paras[0], 0, paras[0], 1], node detachedProcessingInstruction 
+PASS 16,16: resulting range position for range [paras[0], 0, paras[0], 1], node detachedProcessingInstruction 
+PASS 16,17: resulting DOM for range [paras[0], 0, paras[0], 1], node comment 
+PASS 16,17: resulting range position for range [paras[0], 0, paras[0], 1], node comment 
+PASS 16,18: resulting DOM for range [paras[0], 0, paras[0], 1], node detachedComment 
+PASS 16,18: resulting range position for range [paras[0], 0, paras[0], 1], node detachedComment 
+PASS 16,19: resulting DOM for range [paras[0], 0, paras[0], 1], node docfrag 
+PASS 16,19: resulting range position for range [paras[0], 0, paras[0], 1], node docfrag 
+PASS 16,20: resulting DOM for range [paras[0], 0, paras[0], 1], node doctype 
+PASS 16,20: resulting range position for range [paras[0], 0, paras[0], 1], node doctype 
+PASS 16,21: resulting DOM for range [paras[0], 0, paras[0], 1], node foreignDoctype 
+PASS 16,21: resulting range position for range [paras[0], 0, paras[0], 1], node foreignDoctype 
+FAIL 17,0: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node paras[0] InvalidNodeTypeError: DOM Exception 24
+PASS 17,0: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node paras[0] 
+PASS 17,1: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node paras[0].firstChild 
+PASS 17,1: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node paras[0].firstChild 
+PASS 17,2: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node paras[1].firstChild 
+PASS 17,2: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node paras[1].firstChild 
+FAIL 17,3: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node foreignPara1 InvalidNodeTypeError: DOM Exception 24
+PASS 17,3: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node foreignPara1 
+PASS 17,4: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node foreignPara1.firstChild 
+PASS 17,4: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node foreignPara1.firstChild 
+FAIL 17,5: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node detachedPara1 assert_true: First differing node: expected Element node &lt;p&gt;Wxyzabcd&lt;/p&gt;, got Text node &quot;Opqrstuv&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 17,5: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node detachedPara1 assert_true: First differing node: expected Element node &lt;p&gt;Wxyzabcd&lt;/p&gt;, got Text node &quot;Opqrstuv&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 17,6: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node detachedPara1.firstChild 
+PASS 17,6: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node detachedPara1.firstChild 
+PASS 17,7: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node document 
+PASS 17,7: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node document 
+FAIL 17,8: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node detachedDiv assert_unreached: DOMs were not equal but we couldn't figure out why Reached unreachable code
+FAIL 17,8: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node detachedDiv assert_unreached: DOMs were not equal but we couldn't figure out why Reached unreachable code
+PASS 17,9: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node foreignDoc 
+PASS 17,9: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node foreignDoc 
+FAIL 17,10: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node foreignPara2 InvalidNodeTypeError: DOM Exception 24
+PASS 17,10: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node foreignPara2 
+PASS 17,11: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node xmlDoc 
+PASS 17,11: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node xmlDoc 
+FAIL 17,12: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node xmlElement InvalidNodeTypeError: DOM Exception 24
+PASS 17,12: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node xmlElement 
+PASS 17,13: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node detachedTextNode 
+PASS 17,13: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node detachedTextNode 
+PASS 17,14: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node foreignTextNode 
+PASS 17,14: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node foreignTextNode 
+PASS 17,15: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node processingInstruction 
+PASS 17,15: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node processingInstruction 
+PASS 17,16: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node detachedProcessingInstruction 
+PASS 17,16: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node detachedProcessingInstruction 
+PASS 17,17: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node comment 
+PASS 17,17: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node comment 
+PASS 17,18: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node detachedComment 
+PASS 17,18: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node detachedComment 
+PASS 17,19: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node docfrag 
+PASS 17,19: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node docfrag 
+PASS 17,20: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node doctype 
+PASS 17,20: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node doctype 
+PASS 17,21: resulting DOM for range [detachedPara1, 0, detachedPara1, 1], node foreignDoctype 
+PASS 17,21: resulting range position for range [detachedPara1, 0, detachedPara1, 1], node foreignDoctype 
+FAIL 18,0: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node paras[0] assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 18,0: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node paras[0] 
+FAIL 18,1: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node paras[0].firstChild assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 18,1: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node paras[0].firstChild 
+PASS 18,2: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node paras[1].firstChild 
+PASS 18,2: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node paras[1].firstChild 
+PASS 18,3: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node foreignPara1 
+PASS 18,3: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node foreignPara1 
+PASS 18,4: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node foreignPara1.firstChild 
+PASS 18,4: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node foreignPara1.firstChild 
+PASS 18,5: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node detachedPara1 
+PASS 18,5: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node detachedPara1 
+PASS 18,6: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node detachedPara1.firstChild 
+PASS 18,6: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node detachedPara1.firstChild 
+FAIL 18,7: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node document assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 18,7: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node document 
+PASS 18,8: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node detachedDiv 
+PASS 18,8: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node detachedDiv 
+FAIL 18,9: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node foreignDoc assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 18,9: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node foreignDoc 
+PASS 18,10: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node foreignPara2 
+PASS 18,10: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node foreignPara2 
+FAIL 18,11: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node xmlDoc assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 18,11: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node xmlDoc 
+PASS 18,12: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node xmlElement 
+PASS 18,12: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node xmlElement 
+PASS 18,13: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node detachedTextNode 
+PASS 18,13: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node detachedTextNode 
+PASS 18,14: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node foreignTextNode 
+PASS 18,14: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node foreignTextNode 
+PASS 18,15: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node processingInstruction 
+PASS 18,15: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node processingInstruction 
+PASS 18,16: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node detachedProcessingInstruction 
+PASS 18,16: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node detachedProcessingInstruction 
+PASS 18,17: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node comment 
+PASS 18,17: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node comment 
+PASS 18,18: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node detachedComment 
+PASS 18,18: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node detachedComment 
+FAIL 18,19: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node docfrag assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 18,19: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node docfrag 
+FAIL 18,20: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node doctype assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 18,20: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node doctype 
+FAIL 18,21: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node foreignDoctype assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 18,21: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node foreignDoctype 
+FAIL 19,0: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node paras[0] assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 19,0: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node paras[0] 
+FAIL 19,1: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node paras[0].firstChild assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 19,1: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node paras[0].firstChild 
+PASS 19,2: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node paras[1].firstChild 
+PASS 19,2: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node paras[1].firstChild 
+PASS 19,3: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node foreignPara1 
+PASS 19,3: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node foreignPara1 
+PASS 19,4: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node foreignPara1.firstChild 
+PASS 19,4: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node foreignPara1.firstChild 
+PASS 19,5: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node detachedPara1 
+PASS 19,5: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node detachedPara1 
+PASS 19,6: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node detachedPara1.firstChild 
+PASS 19,6: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node detachedPara1.firstChild 
+FAIL 19,7: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node document assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 19,7: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node document 
+PASS 19,8: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node detachedDiv 
+PASS 19,8: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node detachedDiv 
+FAIL 19,9: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node foreignDoc assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 19,9: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node foreignDoc 
+PASS 19,10: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node foreignPara2 
+PASS 19,10: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node foreignPara2 
+FAIL 19,11: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node xmlDoc assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 19,11: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node xmlDoc 
+PASS 19,12: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node xmlElement 
+PASS 19,12: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node xmlElement 
+PASS 19,13: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node detachedTextNode 
+PASS 19,13: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node detachedTextNode 
+PASS 19,14: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node foreignTextNode 
+PASS 19,14: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node foreignTextNode 
+PASS 19,15: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node processingInstruction 
+PASS 19,15: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node processingInstruction 
+PASS 19,16: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node detachedProcessingInstruction 
+PASS 19,16: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node detachedProcessingInstruction 
+PASS 19,17: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node comment 
+PASS 19,17: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node comment 
+PASS 19,18: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node detachedComment 
+PASS 19,18: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node detachedComment 
+FAIL 19,19: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node docfrag assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 19,19: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node docfrag 
+FAIL 19,20: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node doctype assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 19,20: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node doctype 
+FAIL 19,21: resulting DOM for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node foreignDoctype assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 19,21: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 8], node foreignDoctype 
+FAIL 20,0: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node paras[0] assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 20,0: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node paras[0] 
+FAIL 20,1: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node paras[0].firstChild assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 20,1: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node paras[0].firstChild 
+PASS 20,2: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node paras[1].firstChild 
+PASS 20,2: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node paras[1].firstChild 
+PASS 20,3: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node foreignPara1 
+PASS 20,3: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node foreignPara1 
+PASS 20,4: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node foreignPara1.firstChild 
+PASS 20,4: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node foreignPara1.firstChild 
+PASS 20,5: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node detachedPara1 
+PASS 20,5: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node detachedPara1 
+PASS 20,6: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node detachedPara1.firstChild 
+PASS 20,6: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node detachedPara1.firstChild 
+FAIL 20,7: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node document assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 20,7: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node document 
+PASS 20,8: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node detachedDiv 
+PASS 20,8: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node detachedDiv 
+FAIL 20,9: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node foreignDoc assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 20,9: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node foreignDoc 
+PASS 20,10: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node foreignPara2 
+PASS 20,10: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node foreignPara2 
+FAIL 20,11: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node xmlDoc assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 20,11: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node xmlDoc 
+PASS 20,12: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node xmlElement 
+PASS 20,12: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node xmlElement 
+PASS 20,13: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node detachedTextNode 
+PASS 20,13: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node detachedTextNode 
+PASS 20,14: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node foreignTextNode 
+PASS 20,14: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node foreignTextNode 
+PASS 20,15: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node processingInstruction 
+PASS 20,15: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node processingInstruction 
+PASS 20,16: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node detachedProcessingInstruction 
+PASS 20,16: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node detachedProcessingInstruction 
+PASS 20,17: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node comment 
+PASS 20,17: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node comment 
+PASS 20,18: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node detachedComment 
+PASS 20,18: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node detachedComment 
+FAIL 20,19: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node docfrag assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 20,19: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node docfrag 
+FAIL 20,20: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node doctype assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 20,20: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node doctype 
+FAIL 20,21: resulting DOM for range [paras[0].firstChild, 3, paras[3], 1], node foreignDoctype assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 20,21: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node foreignDoctype 
+FAIL 21,0: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node paras[0] assert_true: First differing node: expected Element node &lt;p id=&quot;b&quot; style=&quot;display:none&quot;&gt;Ijklmnop
+&lt;/p&gt;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 21,0: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node paras[0] assert_true: First differing node: expected Element node &lt;p id=&quot;b&quot; style=&quot;display:none&quot;&gt;Ijklmnop
+&lt;/p&gt;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 21,1: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node paras[0].firstChild 
+PASS 21,1: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node paras[0].firstChild 
+PASS 21,2: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node paras[1].firstChild 
+PASS 21,2: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node paras[1].firstChild 
+PASS 21,3: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node foreignPara1 
+PASS 21,3: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node foreignPara1 
+PASS 21,4: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node foreignPara1.firstChild 
+PASS 21,4: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node foreignPara1.firstChild 
+PASS 21,5: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node detachedPara1 
+PASS 21,5: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node detachedPara1 
+PASS 21,6: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node detachedPara1.firstChild 
+PASS 21,6: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node detachedPara1.firstChild 
+PASS 21,7: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node document 
+PASS 21,7: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node document 
+PASS 21,8: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node detachedDiv 
+PASS 21,8: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node detachedDiv 
+PASS 21,9: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node foreignDoc 
+PASS 21,9: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node foreignDoc 
+PASS 21,10: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node foreignPara2 
+PASS 21,10: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node foreignPara2 
+PASS 21,11: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node xmlDoc 
+PASS 21,11: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node xmlDoc 
+PASS 21,12: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node xmlElement 
+PASS 21,12: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node xmlElement 
+PASS 21,13: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node detachedTextNode 
+PASS 21,13: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node detachedTextNode 
+PASS 21,14: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node foreignTextNode 
+PASS 21,14: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node foreignTextNode 
+PASS 21,15: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node processingInstruction 
+PASS 21,15: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node processingInstruction 
+PASS 21,16: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node detachedProcessingInstruction 
+PASS 21,16: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node detachedProcessingInstruction 
+PASS 21,17: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node comment 
+PASS 21,17: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node comment 
+PASS 21,18: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node detachedComment 
+PASS 21,18: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node detachedComment 
+PASS 21,19: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node docfrag 
+PASS 21,19: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node docfrag 
+PASS 21,20: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node doctype 
+PASS 21,20: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node doctype 
+PASS 21,21: resulting DOM for range [paras[0], 0, paras[0].firstChild, 7], node foreignDoctype 
+PASS 21,21: resulting range position for range [paras[0], 0, paras[0].firstChild, 7], node foreignDoctype 
+PASS 22,0: resulting DOM for range [testDiv, 2, paras[4], 1], node paras[0] 
+PASS 22,0: resulting range position for range [testDiv, 2, paras[4], 1], node paras[0] 
+PASS 22,1: resulting DOM for range [testDiv, 2, paras[4], 1], node paras[0].firstChild 
+PASS 22,1: resulting range position for range [testDiv, 2, paras[4], 1], node paras[0].firstChild 
+PASS 22,2: resulting DOM for range [testDiv, 2, paras[4], 1], node paras[1].firstChild 
+PASS 22,2: resulting range position for range [testDiv, 2, paras[4], 1], node paras[1].firstChild 
+PASS 22,3: resulting DOM for range [testDiv, 2, paras[4], 1], node foreignPara1 
+PASS 22,3: resulting range position for range [testDiv, 2, paras[4], 1], node foreignPara1 
+PASS 22,4: resulting DOM for range [testDiv, 2, paras[4], 1], node foreignPara1.firstChild 
+PASS 22,4: resulting range position for range [testDiv, 2, paras[4], 1], node foreignPara1.firstChild 
+PASS 22,5: resulting DOM for range [testDiv, 2, paras[4], 1], node detachedPara1 
+PASS 22,5: resulting range position for range [testDiv, 2, paras[4], 1], node detachedPara1 
+PASS 22,6: resulting DOM for range [testDiv, 2, paras[4], 1], node detachedPara1.firstChild 
+PASS 22,6: resulting range position for range [testDiv, 2, paras[4], 1], node detachedPara1.firstChild 
+FAIL 22,7: resulting DOM for range [testDiv, 2, paras[4], 1], node document assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 22,7: resulting range position for range [testDiv, 2, paras[4], 1], node document 
+PASS 22,8: resulting DOM for range [testDiv, 2, paras[4], 1], node detachedDiv 
+PASS 22,8: resulting range position for range [testDiv, 2, paras[4], 1], node detachedDiv 
+FAIL 22,9: resulting DOM for range [testDiv, 2, paras[4], 1], node foreignDoc assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 22,9: resulting range position for range [testDiv, 2, paras[4], 1], node foreignDoc 
+PASS 22,10: resulting DOM for range [testDiv, 2, paras[4], 1], node foreignPara2 
+PASS 22,10: resulting range position for range [testDiv, 2, paras[4], 1], node foreignPara2 
+FAIL 22,11: resulting DOM for range [testDiv, 2, paras[4], 1], node xmlDoc assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 22,11: resulting range position for range [testDiv, 2, paras[4], 1], node xmlDoc 
+PASS 22,12: resulting DOM for range [testDiv, 2, paras[4], 1], node xmlElement 
+PASS 22,12: resulting range position for range [testDiv, 2, paras[4], 1], node xmlElement 
+PASS 22,13: resulting DOM for range [testDiv, 2, paras[4], 1], node detachedTextNode 
+PASS 22,13: resulting range position for range [testDiv, 2, paras[4], 1], node detachedTextNode 
+PASS 22,14: resulting DOM for range [testDiv, 2, paras[4], 1], node foreignTextNode 
+PASS 22,14: resulting range position for range [testDiv, 2, paras[4], 1], node foreignTextNode 
+PASS 22,15: resulting DOM for range [testDiv, 2, paras[4], 1], node processingInstruction 
+PASS 22,15: resulting range position for range [testDiv, 2, paras[4], 1], node processingInstruction 
+PASS 22,16: resulting DOM for range [testDiv, 2, paras[4], 1], node detachedProcessingInstruction 
+PASS 22,16: resulting range position for range [testDiv, 2, paras[4], 1], node detachedProcessingInstruction 
+PASS 22,17: resulting DOM for range [testDiv, 2, paras[4], 1], node comment 
+PASS 22,17: resulting range position for range [testDiv, 2, paras[4], 1], node comment 
+PASS 22,18: resulting DOM for range [testDiv, 2, paras[4], 1], node detachedComment 
+PASS 22,18: resulting range position for range [testDiv, 2, paras[4], 1], node detachedComment 
+FAIL 22,19: resulting DOM for range [testDiv, 2, paras[4], 1], node docfrag assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 22,19: resulting range position for range [testDiv, 2, paras[4], 1], node docfrag 
+FAIL 22,20: resulting DOM for range [testDiv, 2, paras[4], 1], node doctype assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 22,20: resulting range position for range [testDiv, 2, paras[4], 1], node doctype 
+FAIL 22,21: resulting DOM for range [testDiv, 2, paras[4], 1], node foreignDoctype assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 22,21: resulting range position for range [testDiv, 2, paras[4], 1], node foreignDoctype 
+PASS 23,0: resulting DOM for range [document, 0, document, 1], node paras[0] 
+PASS 23,0: resulting range position for range [document, 0, document, 1], node paras[0] 
+PASS 23,1: resulting DOM for range [document, 0, document, 1], node paras[0].firstChild 
+PASS 23,1: resulting range position for range [document, 0, document, 1], node paras[0].firstChild 
+PASS 23,2: resulting DOM for range [document, 0, document, 1], node paras[1].firstChild 
+PASS 23,2: resulting range position for range [document, 0, document, 1], node paras[1].firstChild 
+PASS 23,3: resulting DOM for range [document, 0, document, 1], node foreignPara1 
+PASS 23,3: resulting range position for range [document, 0, document, 1], node foreignPara1 
+PASS 23,4: resulting DOM for range [document, 0, document, 1], node foreignPara1.firstChild 
+PASS 23,4: resulting range position for range [document, 0, document, 1], node foreignPara1.firstChild 
+PASS 23,5: resulting DOM for range [document, 0, document, 1], node detachedPara1 
+PASS 23,5: resulting range position for range [document, 0, document, 1], node detachedPara1 
+PASS 23,6: resulting DOM for range [document, 0, document, 1], node detachedPara1.firstChild 
+PASS 23,6: resulting range position for range [document, 0, document, 1], node detachedPara1.firstChild 
+PASS 23,7: resulting DOM for range [document, 0, document, 1], node document 
+PASS 23,7: resulting range position for range [document, 0, document, 1], node document 
+PASS 23,8: resulting DOM for range [document, 0, document, 1], node detachedDiv 
+PASS 23,8: resulting range position for range [document, 0, document, 1], node detachedDiv 
+PASS 23,9: resulting DOM for range [document, 0, document, 1], node foreignDoc 
+PASS 23,9: resulting range position for range [document, 0, document, 1], node foreignDoc 
+PASS 23,10: resulting DOM for range [document, 0, document, 1], node foreignPara2 
+PASS 23,10: resulting range position for range [document, 0, document, 1], node foreignPara2 
+PASS 23,11: resulting DOM for range [document, 0, document, 1], node xmlDoc 
+PASS 23,11: resulting range position for range [document, 0, document, 1], node xmlDoc 
+PASS 23,12: resulting DOM for range [document, 0, document, 1], node xmlElement 
+PASS 23,12: resulting range position for range [document, 0, document, 1], node xmlElement 
+PASS 23,13: resulting DOM for range [document, 0, document, 1], node detachedTextNode 
+PASS 23,13: resulting range position for range [document, 0, document, 1], node detachedTextNode 
+PASS 23,14: resulting DOM for range [document, 0, document, 1], node foreignTextNode 
+PASS 23,14: resulting range position for range [document, 0, document, 1], node foreignTextNode 
+PASS 23,15: resulting DOM for range [document, 0, document, 1], node processingInstruction 
+PASS 23,15: resulting range position for range [document, 0, document, 1], node processingInstruction 
+PASS 23,16: resulting DOM for range [document, 0, document, 1], node detachedProcessingInstruction 
+PASS 23,16: resulting range position for range [document, 0, document, 1], node detachedProcessingInstruction 
+PASS 23,17: resulting DOM for range [document, 0, document, 1], node comment 
+PASS 23,17: resulting range position for range [document, 0, document, 1], node comment 
+PASS 23,18: resulting DOM for range [document, 0, document, 1], node detachedComment 
+PASS 23,18: resulting range position for range [document, 0, document, 1], node detachedComment 
+PASS 23,19: resulting DOM for range [document, 0, document, 1], node docfrag 
+PASS 23,19: resulting range position for range [document, 0, document, 1], node docfrag 
+PASS 23,20: resulting DOM for range [document, 0, document, 1], node doctype 
+PASS 23,20: resulting range position for range [document, 0, document, 1], node doctype 
+PASS 23,21: resulting DOM for range [document, 0, document, 1], node foreignDoctype 
+PASS 23,21: resulting range position for range [document, 0, document, 1], node foreignDoctype 
+PASS 24,0: resulting DOM for range [document, 0, document, 2], node paras[0] 
+PASS 24,0: resulting range position for range [document, 0, document, 2], node paras[0] 
+PASS 24,1: resulting DOM for range [document, 0, document, 2], node paras[0].firstChild 
+PASS 24,1: resulting range position for range [document, 0, document, 2], node paras[0].firstChild 
+PASS 24,2: resulting DOM for range [document, 0, document, 2], node paras[1].firstChild 
+PASS 24,2: resulting range position for range [document, 0, document, 2], node paras[1].firstChild 
+PASS 24,3: resulting DOM for range [document, 0, document, 2], node foreignPara1 
+PASS 24,3: resulting range position for range [document, 0, document, 2], node foreignPara1 
+PASS 24,4: resulting DOM for range [document, 0, document, 2], node foreignPara1.firstChild 
+PASS 24,4: resulting range position for range [document, 0, document, 2], node foreignPara1.firstChild 
+PASS 24,5: resulting DOM for range [document, 0, document, 2], node detachedPara1 
+PASS 24,5: resulting range position for range [document, 0, document, 2], node detachedPara1 
+PASS 24,6: resulting DOM for range [document, 0, document, 2], node detachedPara1.firstChild 
+PASS 24,6: resulting range position for range [document, 0, document, 2], node detachedPara1.firstChild 
+PASS 24,7: resulting DOM for range [document, 0, document, 2], node document 
+PASS 24,7: resulting range position for range [document, 0, document, 2], node document 
+PASS 24,8: resulting DOM for range [document, 0, document, 2], node detachedDiv 
+PASS 24,8: resulting range position for range [document, 0, document, 2], node detachedDiv 
+PASS 24,9: resulting DOM for range [document, 0, document, 2], node foreignDoc 
+PASS 24,9: resulting range position for range [document, 0, document, 2], node foreignDoc 
+PASS 24,10: resulting DOM for range [document, 0, document, 2], node foreignPara2 
+PASS 24,10: resulting range position for range [document, 0, document, 2], node foreignPara2 
+PASS 24,11: resulting DOM for range [document, 0, document, 2], node xmlDoc 
+PASS 24,11: resulting range position for range [document, 0, document, 2], node xmlDoc 
+PASS 24,12: resulting DOM for range [document, 0, document, 2], node xmlElement 
+PASS 24,12: resulting range position for range [document, 0, document, 2], node xmlElement 
+PASS 24,13: resulting DOM for range [document, 0, document, 2], node detachedTextNode 
+PASS 24,13: resulting range position for range [document, 0, document, 2], node detachedTextNode 
+PASS 24,14: resulting DOM for range [document, 0, document, 2], node foreignTextNode 
+PASS 24,14: resulting range position for range [document, 0, document, 2], node foreignTextNode 
+PASS 24,15: resulting DOM for range [document, 0, document, 2], node processingInstruction 
+PASS 24,15: resulting range position for range [document, 0, document, 2], node processingInstruction 
+PASS 24,16: resulting DOM for range [document, 0, document, 2], node detachedProcessingInstruction 
+PASS 24,16: resulting range position for range [document, 0, document, 2], node detachedProcessingInstruction 
+PASS 24,17: resulting DOM for range [document, 0, document, 2], node comment 
+PASS 24,17: resulting range position for range [document, 0, document, 2], node comment 
+PASS 24,18: resulting DOM for range [document, 0, document, 2], node detachedComment 
+PASS 24,18: resulting range position for range [document, 0, document, 2], node detachedComment 
+PASS 24,19: resulting DOM for range [document, 0, document, 2], node docfrag 
+PASS 24,19: resulting range position for range [document, 0, document, 2], node docfrag 
+PASS 24,20: resulting DOM for range [document, 0, document, 2], node doctype 
+PASS 24,20: resulting range position for range [document, 0, document, 2], node doctype 
+PASS 24,21: resulting DOM for range [document, 0, document, 2], node foreignDoctype 
+PASS 24,21: resulting range position for range [document, 0, document, 2], node foreignDoctype 
+PASS 25,0: resulting DOM for range [comment, 2, comment, 3], node paras[0] 
+PASS 25,0: resulting range position for range [comment, 2, comment, 3], node paras[0] 
+PASS 25,1: resulting DOM for range [comment, 2, comment, 3], node paras[0].firstChild 
+PASS 25,1: resulting range position for range [comment, 2, comment, 3], node paras[0].firstChild 
+PASS 25,2: resulting DOM for range [comment, 2, comment, 3], node paras[1].firstChild 
+PASS 25,2: resulting range position for range [comment, 2, comment, 3], node paras[1].firstChild 
+PASS 25,3: resulting DOM for range [comment, 2, comment, 3], node foreignPara1 
+PASS 25,3: resulting range position for range [comment, 2, comment, 3], node foreignPara1 
+PASS 25,4: resulting DOM for range [comment, 2, comment, 3], node foreignPara1.firstChild 
+PASS 25,4: resulting range position for range [comment, 2, comment, 3], node foreignPara1.firstChild 
+PASS 25,5: resulting DOM for range [comment, 2, comment, 3], node detachedPara1 
+PASS 25,5: resulting range position for range [comment, 2, comment, 3], node detachedPara1 
+PASS 25,6: resulting DOM for range [comment, 2, comment, 3], node detachedPara1.firstChild 
+PASS 25,6: resulting range position for range [comment, 2, comment, 3], node detachedPara1.firstChild 
+PASS 25,7: resulting DOM for range [comment, 2, comment, 3], node document 
+PASS 25,7: resulting range position for range [comment, 2, comment, 3], node document 
+PASS 25,8: resulting DOM for range [comment, 2, comment, 3], node detachedDiv 
+PASS 25,8: resulting range position for range [comment, 2, comment, 3], node detachedDiv 
+PASS 25,9: resulting DOM for range [comment, 2, comment, 3], node foreignDoc 
+PASS 25,9: resulting range position for range [comment, 2, comment, 3], node foreignDoc 
+PASS 25,10: resulting DOM for range [comment, 2, comment, 3], node foreignPara2 
+PASS 25,10: resulting range position for range [comment, 2, comment, 3], node foreignPara2 
+PASS 25,11: resulting DOM for range [comment, 2, comment, 3], node xmlDoc 
+PASS 25,11: resulting range position for range [comment, 2, comment, 3], node xmlDoc 
+PASS 25,12: resulting DOM for range [comment, 2, comment, 3], node xmlElement 
+PASS 25,12: resulting range position for range [comment, 2, comment, 3], node xmlElement 
+PASS 25,13: resulting DOM for range [comment, 2, comment, 3], node detachedTextNode 
+PASS 25,13: resulting range position for range [comment, 2, comment, 3], node detachedTextNode 
+PASS 25,14: resulting DOM for range [comment, 2, comment, 3], node foreignTextNode 
+PASS 25,14: resulting range position for range [comment, 2, comment, 3], node foreignTextNode 
+PASS 25,15: resulting DOM for range [comment, 2, comment, 3], node processingInstruction 
+PASS 25,15: resulting range position for range [comment, 2, comment, 3], node processingInstruction 
+PASS 25,16: resulting DOM for range [comment, 2, comment, 3], node detachedProcessingInstruction 
+PASS 25,16: resulting range position for range [comment, 2, comment, 3], node detachedProcessingInstruction 
+FAIL 25,17: resulting DOM for range [comment, 2, comment, 3], node comment assert_true: First differing node: expected Comment node &lt;!--Alhabet soup?--&gt;, got Comment node &lt;!--Alphabet soup?--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 25,17: resulting range position for range [comment, 2, comment, 3], node comment assert_true: First differing node: expected Comment node &lt;!--Alhabet soup?--&gt;, got Comment node &lt;!--Alphabet soup?--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 25,18: resulting DOM for range [comment, 2, comment, 3], node detachedComment 
+PASS 25,18: resulting range position for range [comment, 2, comment, 3], node detachedComment 
+PASS 25,19: resulting DOM for range [comment, 2, comment, 3], node docfrag 
+PASS 25,19: resulting range position for range [comment, 2, comment, 3], node docfrag 
+PASS 25,20: resulting DOM for range [comment, 2, comment, 3], node doctype 
+PASS 25,20: resulting range position for range [comment, 2, comment, 3], node doctype 
+PASS 25,21: resulting DOM for range [comment, 2, comment, 3], node foreignDoctype 
+PASS 25,21: resulting range position for range [comment, 2, comment, 3], node foreignDoctype 
+PASS 26,0: resulting DOM for range [testDiv, 0, comment, 5], node paras[0] 
+PASS 26,0: resulting range position for range [testDiv, 0, comment, 5], node paras[0] 
+PASS 26,1: resulting DOM for range [testDiv, 0, comment, 5], node paras[0].firstChild 
+PASS 26,1: resulting range position for range [testDiv, 0, comment, 5], node paras[0].firstChild 
+PASS 26,2: resulting DOM for range [testDiv, 0, comment, 5], node paras[1].firstChild 
+PASS 26,2: resulting range position for range [testDiv, 0, comment, 5], node paras[1].firstChild 
+PASS 26,3: resulting DOM for range [testDiv, 0, comment, 5], node foreignPara1 
+PASS 26,3: resulting range position for range [testDiv, 0, comment, 5], node foreignPara1 
+PASS 26,4: resulting DOM for range [testDiv, 0, comment, 5], node foreignPara1.firstChild 
+PASS 26,4: resulting range position for range [testDiv, 0, comment, 5], node foreignPara1.firstChild 
+PASS 26,5: resulting DOM for range [testDiv, 0, comment, 5], node detachedPara1 
+PASS 26,5: resulting range position for range [testDiv, 0, comment, 5], node detachedPara1 
+PASS 26,6: resulting DOM for range [testDiv, 0, comment, 5], node detachedPara1.firstChild 
+PASS 26,6: resulting range position for range [testDiv, 0, comment, 5], node detachedPara1.firstChild 
+FAIL 26,7: resulting DOM for range [testDiv, 0, comment, 5], node document assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 26,7: resulting range position for range [testDiv, 0, comment, 5], node document 
+PASS 26,8: resulting DOM for range [testDiv, 0, comment, 5], node detachedDiv 
+PASS 26,8: resulting range position for range [testDiv, 0, comment, 5], node detachedDiv 
+FAIL 26,9: resulting DOM for range [testDiv, 0, comment, 5], node foreignDoc assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 26,9: resulting range position for range [testDiv, 0, comment, 5], node foreignDoc 
+PASS 26,10: resulting DOM for range [testDiv, 0, comment, 5], node foreignPara2 
+PASS 26,10: resulting range position for range [testDiv, 0, comment, 5], node foreignPara2 
+FAIL 26,11: resulting DOM for range [testDiv, 0, comment, 5], node xmlDoc assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 26,11: resulting range position for range [testDiv, 0, comment, 5], node xmlDoc 
+PASS 26,12: resulting DOM for range [testDiv, 0, comment, 5], node xmlElement 
+PASS 26,12: resulting range position for range [testDiv, 0, comment, 5], node xmlElement 
+PASS 26,13: resulting DOM for range [testDiv, 0, comment, 5], node detachedTextNode 
+PASS 26,13: resulting range position for range [testDiv, 0, comment, 5], node detachedTextNode 
+PASS 26,14: resulting DOM for range [testDiv, 0, comment, 5], node foreignTextNode 
+PASS 26,14: resulting range position for range [testDiv, 0, comment, 5], node foreignTextNode 
+PASS 26,15: resulting DOM for range [testDiv, 0, comment, 5], node processingInstruction 
+PASS 26,15: resulting range position for range [testDiv, 0, comment, 5], node processingInstruction 
+PASS 26,16: resulting DOM for range [testDiv, 0, comment, 5], node detachedProcessingInstruction 
+PASS 26,16: resulting range position for range [testDiv, 0, comment, 5], node detachedProcessingInstruction 
+PASS 26,17: resulting DOM for range [testDiv, 0, comment, 5], node comment 
+PASS 26,17: resulting range position for range [testDiv, 0, comment, 5], node comment 
+PASS 26,18: resulting DOM for range [testDiv, 0, comment, 5], node detachedComment 
+PASS 26,18: resulting range position for range [testDiv, 0, comment, 5], node detachedComment 
+FAIL 26,19: resulting DOM for range [testDiv, 0, comment, 5], node docfrag assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 26,19: resulting range position for range [testDiv, 0, comment, 5], node docfrag 
+FAIL 26,20: resulting DOM for range [testDiv, 0, comment, 5], node doctype assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 26,20: resulting range position for range [testDiv, 0, comment, 5], node doctype 
+FAIL 26,21: resulting DOM for range [testDiv, 0, comment, 5], node foreignDoctype assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 26,21: resulting range position for range [testDiv, 0, comment, 5], node foreignDoctype 
+FAIL 27,0: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node paras[0] assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 27,0: resulting range position for range [foreignDoc, 1, foreignComment, 2], node paras[0] 
+FAIL 27,1: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node paras[0].firstChild assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 27,1: resulting range position for range [foreignDoc, 1, foreignComment, 2], node paras[0].firstChild 
+FAIL 27,2: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node paras[1].firstChild assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 27,2: resulting range position for range [foreignDoc, 1, foreignComment, 2], node paras[1].firstChild 
+FAIL 27,3: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node foreignPara1 assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 27,3: resulting range position for range [foreignDoc, 1, foreignComment, 2], node foreignPara1 
+FAIL 27,4: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node foreignPara1.firstChild assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 27,4: resulting range position for range [foreignDoc, 1, foreignComment, 2], node foreignPara1.firstChild 
+FAIL 27,5: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node detachedPara1 assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 27,5: resulting range position for range [foreignDoc, 1, foreignComment, 2], node detachedPara1 
+FAIL 27,6: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node detachedPara1.firstChild assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 27,6: resulting range position for range [foreignDoc, 1, foreignComment, 2], node detachedPara1.firstChild 
+FAIL 27,7: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node document assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 27,7: resulting range position for range [foreignDoc, 1, foreignComment, 2], node document 
+FAIL 27,8: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node detachedDiv assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 27,8: resulting range position for range [foreignDoc, 1, foreignComment, 2], node detachedDiv 
+FAIL 27,9: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node foreignDoc assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 27,9: resulting range position for range [foreignDoc, 1, foreignComment, 2], node foreignDoc 
+FAIL 27,10: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node foreignPara2 assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 27,10: resulting range position for range [foreignDoc, 1, foreignComment, 2], node foreignPara2 
+FAIL 27,11: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node xmlDoc assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 27,11: resulting range position for range [foreignDoc, 1, foreignComment, 2], node xmlDoc 
+FAIL 27,12: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node xmlElement assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 27,12: resulting range position for range [foreignDoc, 1, foreignComment, 2], node xmlElement 
+FAIL 27,13: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node detachedTextNode assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 27,13: resulting range position for range [foreignDoc, 1, foreignComment, 2], node detachedTextNode 
+FAIL 27,14: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node foreignTextNode assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 27,14: resulting range position for range [foreignDoc, 1, foreignComment, 2], node foreignTextNode 
+PASS 27,15: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node processingInstruction 
+PASS 27,15: resulting range position for range [foreignDoc, 1, foreignComment, 2], node processingInstruction 
+PASS 27,16: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node detachedProcessingInstruction 
+PASS 27,16: resulting range position for range [foreignDoc, 1, foreignComment, 2], node detachedProcessingInstruction 
+PASS 27,17: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node comment 
+PASS 27,17: resulting range position for range [foreignDoc, 1, foreignComment, 2], node comment 
+PASS 27,18: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node detachedComment 
+PASS 27,18: resulting range position for range [foreignDoc, 1, foreignComment, 2], node detachedComment 
+FAIL 27,19: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node docfrag assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 27,19: resulting range position for range [foreignDoc, 1, foreignComment, 2], node docfrag 
+FAIL 27,20: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node doctype assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 27,20: resulting range position for range [foreignDoc, 1, foreignComment, 2], node doctype 
+FAIL 27,21: resulting DOM for range [foreignDoc, 1, foreignComment, 2], node foreignDoctype assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 27,21: resulting range position for range [foreignDoc, 1, foreignComment, 2], node foreignDoctype 
+PASS 28,0: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node paras[0] 
+PASS 28,0: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node paras[0] 
+PASS 28,1: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node paras[0].firstChild 
+PASS 28,1: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node paras[0].firstChild 
+PASS 28,2: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node paras[1].firstChild 
+PASS 28,2: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node paras[1].firstChild 
+PASS 28,3: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node foreignPara1 
+PASS 28,3: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node foreignPara1 
+PASS 28,4: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node foreignPara1.firstChild 
+PASS 28,4: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node foreignPara1.firstChild 
+PASS 28,5: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node detachedPara1 
+PASS 28,5: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node detachedPara1 
+PASS 28,6: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node detachedPara1.firstChild 
+PASS 28,6: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node detachedPara1.firstChild 
+PASS 28,7: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node document 
+PASS 28,7: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node document 
+PASS 28,8: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node detachedDiv 
+PASS 28,8: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node detachedDiv 
+PASS 28,9: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node foreignDoc 
+PASS 28,9: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node foreignDoc 
+PASS 28,10: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node foreignPara2 
+PASS 28,10: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node foreignPara2 
+PASS 28,11: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node xmlDoc 
+PASS 28,11: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node xmlDoc 
+PASS 28,12: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node xmlElement 
+PASS 28,12: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node xmlElement 
+PASS 28,13: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node detachedTextNode 
+PASS 28,13: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node detachedTextNode 
+PASS 28,14: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node foreignTextNode 
+PASS 28,14: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node foreignTextNode 
+PASS 28,15: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node processingInstruction 
+PASS 28,15: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node processingInstruction 
+PASS 28,16: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node detachedProcessingInstruction 
+PASS 28,16: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node detachedProcessingInstruction 
+PASS 28,17: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node comment 
+PASS 28,17: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node comment 
+PASS 28,18: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node detachedComment 
+PASS 28,18: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node detachedComment 
+PASS 28,19: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node docfrag 
+PASS 28,19: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node docfrag 
+PASS 28,20: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node doctype 
+PASS 28,20: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node doctype 
+PASS 28,21: resulting DOM for range [foreignDoc.body, 0, foreignTextNode, 36], node foreignDoctype 
+PASS 28,21: resulting range position for range [foreignDoc.body, 0, foreignTextNode, 36], node foreignDoctype 
+FAIL 29,0: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node paras[0] assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 29,0: resulting range position for range [xmlDoc, 1, xmlComment, 0], node paras[0] 
+FAIL 29,1: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node paras[0].firstChild assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 29,1: resulting range position for range [xmlDoc, 1, xmlComment, 0], node paras[0].firstChild 
+FAIL 29,2: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node paras[1].firstChild assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 29,2: resulting range position for range [xmlDoc, 1, xmlComment, 0], node paras[1].firstChild 
+FAIL 29,3: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node foreignPara1 assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 29,3: resulting range position for range [xmlDoc, 1, xmlComment, 0], node foreignPara1 
+FAIL 29,4: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node foreignPara1.firstChild assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 29,4: resulting range position for range [xmlDoc, 1, xmlComment, 0], node foreignPara1.firstChild 
+FAIL 29,5: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node detachedPara1 assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 29,5: resulting range position for range [xmlDoc, 1, xmlComment, 0], node detachedPara1 
+FAIL 29,6: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node detachedPara1.firstChild assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 29,6: resulting range position for range [xmlDoc, 1, xmlComment, 0], node detachedPara1.firstChild 
+FAIL 29,7: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node document assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 29,7: resulting range position for range [xmlDoc, 1, xmlComment, 0], node document 
+FAIL 29,8: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node detachedDiv assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 29,8: resulting range position for range [xmlDoc, 1, xmlComment, 0], node detachedDiv 
+FAIL 29,9: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node foreignDoc assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 29,9: resulting range position for range [xmlDoc, 1, xmlComment, 0], node foreignDoc 
+FAIL 29,10: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node foreignPara2 assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 29,10: resulting range position for range [xmlDoc, 1, xmlComment, 0], node foreignPara2 
+FAIL 29,11: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node xmlDoc assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 29,11: resulting range position for range [xmlDoc, 1, xmlComment, 0], node xmlDoc 
+FAIL 29,12: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node xmlElement assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 29,12: resulting range position for range [xmlDoc, 1, xmlComment, 0], node xmlElement 
+FAIL 29,13: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node detachedTextNode assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 29,13: resulting range position for range [xmlDoc, 1, xmlComment, 0], node detachedTextNode 
+FAIL 29,14: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node foreignTextNode assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: HierarchyRequestError: DOM Exception 3&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 3, expected 11
+PASS 29,14: resulting range position for range [xmlDoc, 1, xmlComment, 0], node foreignTextNode 
+PASS 29,15: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node processingInstruction 
+PASS 29,15: resulting range position for range [xmlDoc, 1, xmlComment, 0], node processingInstruction 
+PASS 29,16: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node detachedProcessingInstruction 
+PASS 29,16: resulting range position for range [xmlDoc, 1, xmlComment, 0], node detachedProcessingInstruction 
+PASS 29,17: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node comment 
+PASS 29,17: resulting range position for range [xmlDoc, 1, xmlComment, 0], node comment 
+PASS 29,18: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node detachedComment 
+PASS 29,18: resulting range position for range [xmlDoc, 1, xmlComment, 0], node detachedComment 
+FAIL 29,19: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node docfrag assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 29,19: resulting range position for range [xmlDoc, 1, xmlComment, 0], node docfrag 
+FAIL 29,20: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node doctype assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 29,20: resulting range position for range [xmlDoc, 1, xmlComment, 0], node doctype 
+FAIL 29,21: resulting DOM for range [xmlDoc, 1, xmlComment, 0], node foreignDoctype assert_throws: A INVALID_STATE_ERR must be thrown in this case function &quot;function () {
+        try {
+          actualRange.surroun...&quot; threw object &quot;Error: InvalidNodeTypeError: DOM Exception 24&quot; that is not a DOMException INVALID_STATE_ERR: property &quot;code&quot; is equal to 24, expected 11
+PASS 29,21: resulting range position for range [xmlDoc, 1, xmlComment, 0], node foreignDoctype 
+FAIL 30,0: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node paras[0] assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 30,0: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node paras[0] assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 30,1: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node paras[0].firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 30,1: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node paras[0].firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 30,2: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node paras[1].firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 30,2: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node paras[1].firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 30,3: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node foreignPara1 assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 30,3: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node foreignPara1 assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 30,4: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node foreignPara1.firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 30,4: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node foreignPara1.firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 30,5: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node detachedPara1 assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 30,5: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node detachedPara1 assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 30,6: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node detachedPara1.firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 30,6: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node detachedPara1.firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 30,7: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node document 
+PASS 30,7: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node document 
+FAIL 30,8: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node detachedDiv assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 30,8: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node detachedDiv assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 30,9: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node foreignDoc 
+PASS 30,9: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node foreignDoc 
+FAIL 30,10: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node foreignPara2 assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 30,10: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node foreignPara2 assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 30,11: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node xmlDoc 
+PASS 30,11: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node xmlDoc 
+FAIL 30,12: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node xmlElement assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 30,12: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node xmlElement assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 30,13: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node detachedTextNode assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 30,13: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node detachedTextNode assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 30,14: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node foreignTextNode assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 30,14: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node foreignTextNode assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 30,15: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node processingInstruction assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 30,15: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node processingInstruction assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 30,16: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node detachedProcessingInstruction assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 30,16: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node detachedProcessingInstruction assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 30,17: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node comment assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 30,17: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node comment assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 30,18: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node detachedComment assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 30,18: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node detachedComment assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Uvwxyzab&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 30,19: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node docfrag 
+PASS 30,19: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node docfrag 
+PASS 30,20: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node doctype 
+PASS 30,20: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node doctype 
+PASS 30,21: resulting DOM for range [detachedTextNode, 0, detachedTextNode, 8], node foreignDoctype 
+PASS 30,21: resulting range position for range [detachedTextNode, 0, detachedTextNode, 8], node foreignDoctype 
+FAIL 31,0: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node paras[0] assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 31,0: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node paras[0] assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 31,1: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node paras[0].firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 31,1: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node paras[0].firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 31,2: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node paras[1].firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 31,2: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node paras[1].firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 31,3: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node foreignPara1 assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 31,3: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node foreignPara1 assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 31,4: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node foreignPara1.firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 31,4: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node foreignPara1.firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 31,5: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node detachedPara1 assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 31,5: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node detachedPara1 assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 31,6: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node detachedPara1.firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 31,6: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node detachedPara1.firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 31,7: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node document 
+PASS 31,7: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node document 
+FAIL 31,8: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node detachedDiv assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 31,8: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node detachedDiv assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 31,9: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node foreignDoc 
+PASS 31,9: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node foreignDoc 
+FAIL 31,10: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node foreignPara2 assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 31,10: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node foreignPara2 assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 31,11: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node xmlDoc 
+PASS 31,11: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node xmlDoc 
+FAIL 31,12: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node xmlElement assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 31,12: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node xmlElement assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 31,13: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node detachedTextNode assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 31,13: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node detachedTextNode assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 31,14: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node foreignTextNode assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 31,14: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node foreignTextNode assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 31,15: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node processingInstruction assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 31,15: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node processingInstruction assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 31,16: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node detachedProcessingInstruction assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 31,16: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node detachedProcessingInstruction assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 31,17: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node comment assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 31,17: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node comment assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 31,18: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node detachedComment assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 31,18: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node detachedComment assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Cdefghij&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 31,19: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node docfrag 
+PASS 31,19: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node docfrag 
+PASS 31,20: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node doctype 
+PASS 31,20: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node doctype 
+PASS 31,21: resulting DOM for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node foreignDoctype 
+PASS 31,21: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node foreignDoctype 
+FAIL 32,0: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node paras[0] assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 32,0: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node paras[0] assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 32,1: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node paras[0].firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 32,1: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node paras[0].firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 32,2: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node paras[1].firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 32,2: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node paras[1].firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 32,3: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node foreignPara1 assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 32,3: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node foreignPara1 assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 32,4: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node foreignPara1.firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 32,4: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node foreignPara1.firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 32,5: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node detachedPara1 assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 32,5: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node detachedPara1 assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 32,6: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node detachedPara1.firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 32,6: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node detachedPara1.firstChild assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 32,7: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node document 
+PASS 32,7: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node document 
+FAIL 32,8: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node detachedDiv assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 32,8: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node detachedDiv assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 32,9: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node foreignDoc 
+PASS 32,9: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node foreignDoc 
+FAIL 32,10: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node foreignPara2 assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 32,10: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node foreignPara2 assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 32,11: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node xmlDoc 
+PASS 32,11: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node xmlDoc 
+FAIL 32,12: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node xmlElement assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 32,12: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node xmlElement assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 32,13: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node detachedTextNode assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 32,13: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node detachedTextNode assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 32,14: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node foreignTextNode assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 32,14: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node foreignTextNode assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 32,15: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node processingInstruction assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 32,15: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node processingInstruction assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 32,16: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node detachedProcessingInstruction assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 32,16: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node detachedProcessingInstruction assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 32,17: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node comment assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 32,17: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node comment assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 32,18: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node detachedComment assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 32,18: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node detachedComment assert_true: First differing node: expected Text node &quot;&quot;, got Text node &quot;Klmnopqr&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 32,19: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node docfrag 
+PASS 32,19: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node docfrag 
+PASS 32,20: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node doctype 
+PASS 32,20: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node doctype 
+PASS 32,21: resulting DOM for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node foreignDoctype 
+PASS 32,21: resulting range position for range [detachedXmlTextNode, 0, detachedXmlTextNode, 8], node foreignDoctype 
+FAIL 33,0: resulting DOM for range [detachedComment, 3, detachedComment, 4], node paras[0] assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 33,0: resulting range position for range [detachedComment, 3, detachedComment, 4], node paras[0] assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 33,1: resulting DOM for range [detachedComment, 3, detachedComment, 4], node paras[0].firstChild assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 33,1: resulting range position for range [detachedComment, 3, detachedComment, 4], node paras[0].firstChild assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 33,2: resulting DOM for range [detachedComment, 3, detachedComment, 4], node paras[1].firstChild assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 33,2: resulting range position for range [detachedComment, 3, detachedComment, 4], node paras[1].firstChild assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 33,3: resulting DOM for range [detachedComment, 3, detachedComment, 4], node foreignPara1 assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 33,3: resulting range position for range [detachedComment, 3, detachedComment, 4], node foreignPara1 assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 33,4: resulting DOM for range [detachedComment, 3, detachedComment, 4], node foreignPara1.firstChild assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 33,4: resulting range position for range [detachedComment, 3, detachedComment, 4], node foreignPara1.firstChild assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 33,5: resulting DOM for range [detachedComment, 3, detachedComment, 4], node detachedPara1 assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 33,5: resulting range position for range [detachedComment, 3, detachedComment, 4], node detachedPara1 assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 33,6: resulting DOM for range [detachedComment, 3, detachedComment, 4], node detachedPara1.firstChild assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 33,6: resulting range position for range [detachedComment, 3, detachedComment, 4], node detachedPara1.firstChild assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 33,7: resulting DOM for range [detachedComment, 3, detachedComment, 4], node document 
+PASS 33,7: resulting range position for range [detachedComment, 3, detachedComment, 4], node document 
+FAIL 33,8: resulting DOM for range [detachedComment, 3, detachedComment, 4], node detachedDiv assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 33,8: resulting range position for range [detachedComment, 3, detachedComment, 4], node detachedDiv assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 33,9: resulting DOM for range [detachedComment, 3, detachedComment, 4], node foreignDoc 
+PASS 33,9: resulting range position for range [detachedComment, 3, detachedComment, 4], node foreignDoc 
+FAIL 33,10: resulting DOM for range [detachedComment, 3, detachedComment, 4], node foreignPara2 assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 33,10: resulting range position for range [detachedComment, 3, detachedComment, 4], node foreignPara2 assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 33,11: resulting DOM for range [detachedComment, 3, detachedComment, 4], node xmlDoc 
+PASS 33,11: resulting range position for range [detachedComment, 3, detachedComment, 4], node xmlDoc 
+FAIL 33,12: resulting DOM for range [detachedComment, 3, detachedComment, 4], node xmlElement assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 33,12: resulting range position for range [detachedComment, 3, detachedComment, 4], node xmlElement assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 33,13: resulting DOM for range [detachedComment, 3, detachedComment, 4], node detachedTextNode assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 33,13: resulting range position for range [detachedComment, 3, detachedComment, 4], node detachedTextNode assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 33,14: resulting DOM for range [detachedComment, 3, detachedComment, 4], node foreignTextNode assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 33,14: resulting range position for range [detachedComment, 3, detachedComment, 4], node foreignTextNode assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 33,15: resulting DOM for range [detachedComment, 3, detachedComment, 4], node processingInstruction assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 33,15: resulting range position for range [detachedComment, 3, detachedComment, 4], node processingInstruction assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 33,16: resulting DOM for range [detachedComment, 3, detachedComment, 4], node detachedProcessingInstruction assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 33,16: resulting range position for range [detachedComment, 3, detachedComment, 4], node detachedProcessingInstruction assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 33,17: resulting DOM for range [detachedComment, 3, detachedComment, 4], node comment assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 33,17: resulting range position for range [detachedComment, 3, detachedComment, 4], node comment assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 33,18: resulting DOM for range [detachedComment, 3, detachedComment, 4], node detachedComment assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 33,18: resulting range position for range [detachedComment, 3, detachedComment, 4], node detachedComment assert_true: First differing node: expected Comment node &lt;!--Stuwxyz--&gt;, got Comment node &lt;!--Stuvwxyz--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 33,19: resulting DOM for range [detachedComment, 3, detachedComment, 4], node docfrag 
+PASS 33,19: resulting range position for range [detachedComment, 3, detachedComment, 4], node docfrag 
+PASS 33,20: resulting DOM for range [detachedComment, 3, detachedComment, 4], node doctype 
+PASS 33,20: resulting range position for range [detachedComment, 3, detachedComment, 4], node doctype 
+PASS 33,21: resulting DOM for range [detachedComment, 3, detachedComment, 4], node foreignDoctype 
+PASS 33,21: resulting range position for range [detachedComment, 3, detachedComment, 4], node foreignDoctype 
+FAIL 34,0: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node paras[0] assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 34,0: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node paras[0] assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 34,1: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node paras[0].firstChild assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 34,1: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node paras[0].firstChild assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 34,2: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node paras[1].firstChild assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 34,2: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node paras[1].firstChild assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 34,3: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node foreignPara1 assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 34,3: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node foreignPara1 assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 34,4: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node foreignPara1.firstChild assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 34,4: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node foreignPara1.firstChild assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 34,5: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node detachedPara1 assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 34,5: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node detachedPara1 assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 34,6: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node detachedPara1.firstChild assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 34,6: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node detachedPara1.firstChild assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 34,7: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node document 
+PASS 34,7: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node document 
+FAIL 34,8: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node detachedDiv assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 34,8: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node detachedDiv assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 34,9: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node foreignDoc 
+PASS 34,9: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node foreignDoc 
+FAIL 34,10: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node foreignPara2 assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 34,10: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node foreignPara2 assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 34,11: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node xmlDoc 
+PASS 34,11: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node xmlDoc 
+FAIL 34,12: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node xmlElement assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 34,12: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node xmlElement assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 34,13: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node detachedTextNode assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 34,13: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node detachedTextNode assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 34,14: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node foreignTextNode assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 34,14: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node foreignTextNode assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 34,15: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node processingInstruction assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 34,15: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node processingInstruction assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 34,16: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node detachedProcessingInstruction assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 34,16: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node detachedProcessingInstruction assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 34,17: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node comment assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 34,17: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node comment assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 34,18: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node detachedComment assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 34,18: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node detachedComment assert_true: First differing node: expected Comment node &lt;!--ריה יהודה--&gt;, got Comment node &lt;!--אריה יהודה--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 34,19: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node docfrag 
+PASS 34,19: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node docfrag 
+PASS 34,20: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node doctype 
+PASS 34,20: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node doctype 
+PASS 34,21: resulting DOM for range [detachedForeignComment, 0, detachedForeignComment, 1], node foreignDoctype 
+PASS 34,21: resulting range position for range [detachedForeignComment, 0, detachedForeignComment, 1], node foreignDoctype 
+FAIL 35,0: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node paras[0] assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 35,0: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node paras[0] assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 35,1: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node paras[0].firstChild assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 35,1: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node paras[0].firstChild assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 35,2: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node paras[1].firstChild assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 35,2: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node paras[1].firstChild assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 35,3: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node foreignPara1 assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 35,3: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node foreignPara1 assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 35,4: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node foreignPara1.firstChild assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 35,4: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node foreignPara1.firstChild assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 35,5: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node detachedPara1 assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 35,5: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node detachedPara1 assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 35,6: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node detachedPara1.firstChild assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 35,6: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node detachedPara1.firstChild assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 35,7: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node document 
+PASS 35,7: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node document 
+FAIL 35,8: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node detachedDiv assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 35,8: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node detachedDiv assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 35,9: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node foreignDoc 
+PASS 35,9: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node foreignDoc 
+FAIL 35,10: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node foreignPara2 assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 35,10: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node foreignPara2 assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 35,11: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node xmlDoc 
+PASS 35,11: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node xmlDoc 
+FAIL 35,12: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node xmlElement assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 35,12: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node xmlElement assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 35,13: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node detachedTextNode assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 35,13: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node detachedTextNode assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 35,14: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node foreignTextNode assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 35,14: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node foreignTextNode assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 35,15: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node processingInstruction assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 35,15: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node processingInstruction assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 35,16: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node detachedProcessingInstruction assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 35,16: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node detachedProcessingInstruction assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 35,17: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node comment assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 35,17: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node comment assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 35,18: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node detachedComment assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 35,18: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node detachedComment assert_true: First differing node: expected Comment node &lt;!--בןם אליעזר--&gt;, got Comment node &lt;!--בן חיים אליעזר--&gt; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 35,19: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node docfrag 
+PASS 35,19: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node docfrag 
+PASS 35,20: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node doctype 
+PASS 35,20: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node doctype 
+PASS 35,21: resulting DOM for range [detachedXmlComment, 2, detachedXmlComment, 6], node foreignDoctype 
+PASS 35,21: resulting range position for range [detachedXmlComment, 2, detachedXmlComment, 6], node foreignDoctype 
+PASS 36,0: resulting DOM for range [docfrag, 0, docfrag, 0], node paras[0] 
+PASS 36,0: resulting range position for range [docfrag, 0, docfrag, 0], node paras[0] 
+PASS 36,1: resulting DOM for range [docfrag, 0, docfrag, 0], node paras[0].firstChild 
+PASS 36,1: resulting range position for range [docfrag, 0, docfrag, 0], node paras[0].firstChild 
+PASS 36,2: resulting DOM for range [docfrag, 0, docfrag, 0], node paras[1].firstChild 
+PASS 36,2: resulting range position for range [docfrag, 0, docfrag, 0], node paras[1].firstChild 
+PASS 36,3: resulting DOM for range [docfrag, 0, docfrag, 0], node foreignPara1 
+PASS 36,3: resulting range position for range [docfrag, 0, docfrag, 0], node foreignPara1 
+PASS 36,4: resulting DOM for range [docfrag, 0, docfrag, 0], node foreignPara1.firstChild 
+PASS 36,4: resulting range position for range [docfrag, 0, docfrag, 0], node foreignPara1.firstChild 
+PASS 36,5: resulting DOM for range [docfrag, 0, docfrag, 0], node detachedPara1 
+PASS 36,5: resulting range position for range [docfrag, 0, docfrag, 0], node detachedPara1 
+PASS 36,6: resulting DOM for range [docfrag, 0, docfrag, 0], node detachedPara1.firstChild 
+PASS 36,6: resulting range position for range [docfrag, 0, docfrag, 0], node detachedPara1.firstChild 
+PASS 36,7: resulting DOM for range [docfrag, 0, docfrag, 0], node document 
+PASS 36,7: resulting range position for range [docfrag, 0, docfrag, 0], node document 
+PASS 36,8: resulting DOM for range [docfrag, 0, docfrag, 0], node detachedDiv 
+PASS 36,8: resulting range position for range [docfrag, 0, docfrag, 0], node detachedDiv 
+PASS 36,9: resulting DOM for range [docfrag, 0, docfrag, 0], node foreignDoc 
+PASS 36,9: resulting range position for range [docfrag, 0, docfrag, 0], node foreignDoc 
+PASS 36,10: resulting DOM for range [docfrag, 0, docfrag, 0], node foreignPara2 
+PASS 36,10: resulting range position for range [docfrag, 0, docfrag, 0], node foreignPara2 
+PASS 36,11: resulting DOM for range [docfrag, 0, docfrag, 0], node xmlDoc 
+PASS 36,11: resulting range position for range [docfrag, 0, docfrag, 0], node xmlDoc 
+PASS 36,12: resulting DOM for range [docfrag, 0, docfrag, 0], node xmlElement 
+PASS 36,12: resulting range position for range [docfrag, 0, docfrag, 0], node xmlElement 
+PASS 36,13: resulting DOM for range [docfrag, 0, docfrag, 0], node detachedTextNode 
+PASS 36,13: resulting range position for range [docfrag, 0, docfrag, 0], node detachedTextNode 
+PASS 36,14: resulting DOM for range [docfrag, 0, docfrag, 0], node foreignTextNode 
+PASS 36,14: resulting range position for range [docfrag, 0, docfrag, 0], node foreignTextNode 
+PASS 36,15: resulting DOM for range [docfrag, 0, docfrag, 0], node processingInstruction 
+PASS 36,15: resulting range position for range [docfrag, 0, docfrag, 0], node processingInstruction 
+PASS 36,16: resulting DOM for range [docfrag, 0, docfrag, 0], node detachedProcessingInstruction 
+PASS 36,16: resulting range position for range [docfrag, 0, docfrag, 0], node detachedProcessingInstruction 
+PASS 36,17: resulting DOM for range [docfrag, 0, docfrag, 0], node comment 
+PASS 36,17: resulting range position for range [docfrag, 0, docfrag, 0], node comment 
+PASS 36,18: resulting DOM for range [docfrag, 0, docfrag, 0], node detachedComment 
+PASS 36,18: resulting range position for range [docfrag, 0, docfrag, 0], node detachedComment 
+PASS 36,19: resulting DOM for range [docfrag, 0, docfrag, 0], node docfrag 
+PASS 36,19: resulting range position for range [docfrag, 0, docfrag, 0], node docfrag 
+PASS 36,20: resulting DOM for range [docfrag, 0, docfrag, 0], node doctype 
+PASS 36,20: resulting range position for range [docfrag, 0, docfrag, 0], node doctype 
+PASS 36,21: resulting DOM for range [docfrag, 0, docfrag, 0], node foreignDoctype 
+PASS 36,21: resulting range position for range [docfrag, 0, docfrag, 0], node foreignDoctype 
+FAIL 37,0: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node paras[0] assert_true: First differing node: expected Element node &lt;p id=&quot;b&quot; style=&quot;display:none&quot;&gt;Ijklmnop
+&lt;/p&gt;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for moved node's tree root.  ] expected true got false
+FAIL 37,0: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node paras[0] assert_true: First differing node: expected Element node &lt;p id=&quot;b&quot; style=&quot;display:none&quot;&gt;Ijklmnop
+&lt;/p&gt;, got Text node &quot;Äb̈c̈d̈ëf̈g̈ḧ
+&quot; [Actual and expected mismatch for moved node's tree root.  ] expected true got false
+PASS 37,1: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node paras[0].firstChild 
+FAIL 37,1: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node paras[0].firstChild assert_equals: Unexpected endOffset after surroundContents() expected 0 but got 4
+PASS 37,2: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node paras[1].firstChild 
+FAIL 37,2: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node paras[1].firstChild assert_equals: Unexpected endOffset after surroundContents() expected 0 but got 4
+FAIL 37,3: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node foreignPara1 assert_true: First differing node: expected Element node &lt;p&gt;Mnopqrst&lt;/p&gt;, got Text node &quot;Efghijkl&quot; [Actual and expected mismatch for moved node's tree root.  ] expected true got false
+FAIL 37,3: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node foreignPara1 assert_true: First differing node: expected Element node &lt;p&gt;Mnopqrst&lt;/p&gt;, got Text node &quot;Efghijkl&quot; [Actual and expected mismatch for moved node's tree root.  ] expected true got false
+PASS 37,4: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node foreignPara1.firstChild 
+FAIL 37,4: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node foreignPara1.firstChild assert_equals: Unexpected endOffset after surroundContents() expected 0 but got 4
+FAIL 37,5: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node detachedPara1 assert_true: First differing node: expected Element node &lt;p&gt;Wxyzabcd&lt;/p&gt;, got Text node &quot;Opqrstuv&quot; [Actual and expected mismatch for moved node's tree root.  ] expected true got false
+FAIL 37,5: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node detachedPara1 assert_true: First differing node: expected Element node &lt;p&gt;Wxyzabcd&lt;/p&gt;, got Text node &quot;Opqrstuv&quot; [Actual and expected mismatch for moved node's tree root.  ] expected true got false
+PASS 37,6: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node detachedPara1.firstChild 
+FAIL 37,6: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node detachedPara1.firstChild assert_equals: Unexpected endOffset after surroundContents() expected 0 but got 4
+PASS 37,7: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node document 
+PASS 37,7: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node document 
+FAIL 37,8: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node detachedDiv assert_unreached: DOMs were not equal but we couldn't figure out why Reached unreachable code
+FAIL 37,8: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node detachedDiv assert_unreached: DOMs were not equal but we couldn't figure out why Reached unreachable code
+PASS 37,9: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node foreignDoc 
+PASS 37,9: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node foreignDoc 
+FAIL 37,10: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node foreignPara2 assert_true: First differing node: expected Text node &quot;I admit that I harbor doubts about whether we really need...&quot;, got Text node &quot;Mnopqrst&quot; [Actual and expected mismatch for moved node's tree root.  ] expected true got false
+FAIL 37,10: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node foreignPara2 assert_true: First differing node: expected Text node &quot;I admit that I harbor doubts about whether we really need...&quot;, got Text node &quot;Mnopqrst&quot; [Actual and expected mismatch for moved node's tree root.  ] expected true got false
+PASS 37,11: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node xmlDoc 
+PASS 37,11: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node xmlDoc 
+FAIL 37,12: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node xmlElement assert_true: First differing node: expected ProcessingInstruction node with target &quot;somePI&quot; and data &quot;Did you know that \&quot;:syn sync fromstart\&quot; is very useful wh...&quot;, got Text node &quot;do re mi fa so la ti&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 37,12: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node xmlElement assert_true: First differing node: expected ProcessingInstruction node with target &quot;somePI&quot; and data &quot;Did you know that \&quot;:syn sync fromstart\&quot; is very useful wh...&quot;, got Text node &quot;do re mi fa so la ti&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 37,13: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node detachedTextNode 
+FAIL 37,13: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node detachedTextNode assert_equals: Unexpected endOffset after surroundContents() expected 0 but got 4
+PASS 37,14: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node foreignTextNode 
+FAIL 37,14: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node foreignTextNode assert_equals: Unexpected endOffset after surroundContents() expected 0 but got 4
+PASS 37,15: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node processingInstruction 
+FAIL 37,15: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node processingInstruction assert_equals: Unexpected endOffset after surroundContents() expected 0 but got 4
+FAIL 37,16: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node detachedProcessingInstruction assert_true: First differing node: expected ProcessingInstruction node with target &quot;somePI&quot; and data &quot;Did you know that \&quot;:syn sync fromstart\&quot; is very useful wh...&quot;, got ProcessingInstruction node with target &quot;somePI&quot; and data &quot;you know that \&quot;:syn sync fromstart\&quot; is very useful when u...&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 37,16: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node detachedProcessingInstruction assert_true: First differing node: expected ProcessingInstruction node with target &quot;somePI&quot; and data &quot;Did you know that \&quot;:syn sync fromstart\&quot; is very useful wh...&quot;, got ProcessingInstruction node with target &quot;somePI&quot; and data &quot;you know that \&quot;:syn sync fromstart\&quot; is very useful when u...&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 37,17: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node comment assert_true: First differing node: expected ProcessingInstruction node with target &quot;somePI&quot; and data &quot;Did you know that \&quot;:syn sync fromstart\&quot; is very useful wh...&quot;, got ProcessingInstruction node with target &quot;somePI&quot; and data &quot;you know that \&quot;:syn sync fromstart\&quot; is very useful when u...&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 37,17: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node comment assert_true: First differing node: expected ProcessingInstruction node with target &quot;somePI&quot; and data &quot;Did you know that \&quot;:syn sync fromstart\&quot; is very useful wh...&quot;, got ProcessingInstruction node with target &quot;somePI&quot; and data &quot;you know that \&quot;:syn sync fromstart\&quot; is very useful when u...&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 37,18: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node detachedComment assert_true: First differing node: expected ProcessingInstruction node with target &quot;somePI&quot; and data &quot;Did you know that \&quot;:syn sync fromstart\&quot; is very useful wh...&quot;, got ProcessingInstruction node with target &quot;somePI&quot; and data &quot;you know that \&quot;:syn sync fromstart\&quot; is very useful when u...&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+FAIL 37,18: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node detachedComment assert_true: First differing node: expected ProcessingInstruction node with target &quot;somePI&quot; and data &quot;Did you know that \&quot;:syn sync fromstart\&quot; is very useful wh...&quot;, got ProcessingInstruction node with target &quot;somePI&quot; and data &quot;you know that \&quot;:syn sync fromstart\&quot; is very useful when u...&quot; [Actual and expected mismatch for range's tree root.  ] expected true got false
+PASS 37,19: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node docfrag 
+PASS 37,19: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node docfrag 
+PASS 37,20: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node doctype 
+PASS 37,20: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node doctype 
+PASS 37,21: resulting DOM for range [processingInstruction, 0, processingInstruction, 4], node foreignDoctype 
+PASS 37,21: resulting range position for range [processingInstruction, 0, processingInstruction, 4], node foreignDoctype 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangesurroundContentshtmlfromrev189470trunkLayoutTestshttptestsw3cdomrangesRangesurroundContentshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-surroundContents.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/Range-surroundContents.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-surroundContents.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-surroundContents.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,354 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;meta charset=utf-8&gt;
+&lt;title&gt;Range.surroundContents() tests&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Aryeh Gregor&quot; href=ayg@aryeh.name&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;p&gt;To debug test failures, add a query parameter &quot;subtest&quot; with the test id (like
+&quot;?subtest=5,16&quot;).  Only that test will be run.  Then you can look at the resulting
+iframes in the DOM.
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;script src=../common.js&gt;&lt;/script&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+
+testDiv.parentNode.removeChild(testDiv);
+
+function mySurroundContents(range, newParent) {
+  try {
+    // &quot;If the detached flag is set, throw an &quot;InvalidStateError&quot; exception
+    // and terminate these steps.&quot;
+    try {
+      range.collapsed;
+    } catch (e) {
+      return &quot;INVALID_STATE_ERR&quot;;
+    }
+
+    // &quot;If a non-Text node is partially contained in the context object,
+    // throw a &quot;InvalidStateError&quot; exception and terminate these steps.&quot;
+    var node = range.commonAncestorContainer;
+    var stop = nextNodeDescendants(node);
+    for (; node != stop; node = nextNode(node)) {
+      if (node.nodeType != Node.TEXT_NODE
+      &amp;&amp; isPartiallyContained(node, range)) {
+        return &quot;INVALID_STATE_ERR&quot;;
+      }
+    }
+
+    // &quot;If newParent is a Document, DocumentType, or DocumentFragment node,
+    // throw an &quot;InvalidNodeTypeError&quot; exception and terminate these
+    // steps.&quot;
+    if (newParent.nodeType == Node.DOCUMENT_NODE
+    || newParent.nodeType == Node.DOCUMENT_TYPE_NODE
+    || newParent.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
+      return &quot;INVALID_NODE_TYPE_ERR&quot;;
+    }
+
+    // &quot;Call extractContents() on the context object, and let fragment be
+    // the result.&quot;
+    var fragment = myExtractContents(range);
+    if (typeof fragment == &quot;string&quot;) {
+      return fragment;
+    }
+
+    // &quot;While newParent has children, remove its first child.&quot;
+    while (newParent.childNodes.length) {
+      newParent.removeChild(newParent.firstChild);
+    }
+
+    // &quot;Call insertNode(newParent) on the context object.&quot;
+    var ret = myInsertNode(range, newParent);
+    if (typeof ret == &quot;string&quot;) {
+      return ret;
+    }
+
+    // &quot;Call appendChild(fragment) on newParent.&quot;
+    newParent.appendChild(fragment);
+
+    // &quot;Call selectNode(newParent) on the context object.&quot;
+    //
+    // We just reimplement this in-place.
+    if (!newParent.parentNode) {
+      return &quot;INVALID_NODE_TYPE_ERR&quot;;
+    }
+    var index = indexOf(newParent);
+    range.setStart(newParent.parentNode, index);
+    range.setEnd(newParent.parentNode, index + 1);
+  } catch (e) {
+    return getDomExceptionName(e);
+  }
+}
+
+function restoreIframe(iframe, i, j) {
+  // Most of this function is designed to work around the fact that Opera
+  // doesn't let you add a doctype to a document that no longer has one, in
+  // any way I can figure out.  I eventually compromised on something that
+  // will still let Opera pass most tests that don't actually involve
+  // doctypes.
+  while (iframe.contentDocument.firstChild
+  &amp;&amp; iframe.contentDocument.firstChild.nodeType != Node.DOCUMENT_TYPE_NODE) {
+    iframe.contentDocument.removeChild(iframe.contentDocument.firstChild);
+  }
+
+  while (iframe.contentDocument.lastChild
+  &amp;&amp; iframe.contentDocument.lastChild.nodeType != Node.DOCUMENT_TYPE_NODE) {
+    iframe.contentDocument.removeChild(iframe.contentDocument.lastChild);
+  }
+
+  if (!iframe.contentDocument.firstChild) {
+    // This will throw an exception in Opera if we reach here, which is why
+    // I try to avoid it.  It will never happen in a browser that obeys the
+    // spec, so it's really just insurance.  I don't think it actually gets
+    // hit by anything.
+    iframe.contentDocument.appendChild(iframe.contentDocument.implementation.createDocumentType(&quot;html&quot;, &quot;&quot;, &quot;&quot;));
+  }
+  iframe.contentDocument.appendChild(referenceDoc.documentElement.cloneNode(true));
+  iframe.contentWindow.setupRangeTests();
+  iframe.contentWindow.testRangeInput = testRangesShort[i];
+  iframe.contentWindow.testNodeInput = testNodesShort[j];
+  iframe.contentWindow.run();
+}
+
+function testSurroundContents(i, j) {
+  var actualRange;
+  var expectedRange;
+  var actualNode;
+  var expectedNode;
+  var actualRoots = [];
+  var expectedRoots = [];
+
+  var detached = false;
+
+  domTests[i][j].step(function() {
+    restoreIframe(actualIframe, i, j);
+    restoreIframe(expectedIframe, i, j);
+
+    actualRange = actualIframe.contentWindow.testRange;
+    expectedRange = expectedIframe.contentWindow.testRange;
+    actualNode = actualIframe.contentWindow.testNode;
+    expectedNode = expectedIframe.contentWindow.testNode;
+
+    try {
+      actualRange.collapsed;
+    } catch (e) {
+      detached = true;
+    }
+
+    assert_equals(actualIframe.contentWindow.unexpectedException, null,
+      &quot;Unexpected exception thrown when setting up Range for actual surroundContents()&quot;);
+    assert_equals(expectedIframe.contentWindow.unexpectedException, null,
+      &quot;Unexpected exception thrown when setting up Range for simulated surroundContents()&quot;);
+    assert_equals(typeof actualRange, &quot;object&quot;,
+      &quot;typeof Range produced in actual iframe&quot;);
+    assert_false(actualRange === null,
+      &quot;Range produced in actual iframe was null&quot;);
+    assert_equals(typeof expectedRange, &quot;object&quot;,
+      &quot;typeof Range produced in expected iframe&quot;);
+    assert_false(expectedRange === null,
+      &quot;Range produced in expected iframe was null&quot;);
+    assert_equals(typeof actualNode, &quot;object&quot;,
+      &quot;typeof Node produced in actual iframe&quot;);
+    assert_false(actualNode === null,
+      &quot;Node produced in actual iframe was null&quot;);
+    assert_equals(typeof expectedNode, &quot;object&quot;,
+      &quot;typeof Node produced in expected iframe&quot;);
+    assert_false(expectedNode === null,
+      &quot;Node produced in expected iframe was null&quot;);
+
+    // We want to test that the trees containing the ranges are equal, and
+    // also the trees containing the moved nodes.  These might not be the
+    // same, if we're inserting a node from a detached tree or a different
+    // document.
+    //
+    // Detached ranges are always in the contentDocument.
+    if (detached) {
+      actualRoots.push(actualIframe.contentDocument);
+      expectedRoots.push(expectedIframe.contentDocument);
+    } else {
+      actualRoots.push(furthestAncestor(actualRange.startContainer));
+      expectedRoots.push(furthestAncestor(expectedRange.startContainer));
+    }
+
+    if (furthestAncestor(actualNode) != actualRoots[0]) {
+      actualRoots.push(furthestAncestor(actualNode));
+    }
+    if (furthestAncestor(expectedNode) != expectedRoots[0]) {
+      expectedRoots.push(furthestAncestor(expectedNode));
+    }
+
+    assert_equals(actualRoots.length, expectedRoots.length,
+      &quot;Either the actual node and actual range are in the same tree but the expected are in different trees, or vice versa&quot;);
+
+    // This doctype stuff is to work around the fact that Opera 11.00 will
+    // move around doctypes within a document, even to totally invalid
+    // positions, but it won't allow a new doctype to be added to a
+    // document in any way I can figure out.  So if we try moving a doctype
+    // to some invalid place, in Opera it will actually succeed, and then
+    // restoreIframe() will remove the doctype along with the root element,
+    // and then nothing can re-add the doctype.  So instead, we catch it
+    // during the test itself and move it back to the right place while we
+    // still can.
+    //
+    // I spent *way* too much time debugging and working around this bug.
+    var actualDoctype = actualIframe.contentDocument.doctype;
+    var expectedDoctype = expectedIframe.contentDocument.doctype;
+
+    var result;
+    try {
+      result = mySurroundContents(expectedRange, expectedNode);
+    } catch (e) {
+      if (expectedDoctype != expectedIframe.contentDocument.firstChild) {
+        expectedIframe.contentDocument.insertBefore(expectedDoctype, expectedIframe.contentDocument.firstChild);
+      }
+      throw e;
+    }
+    if (typeof result == &quot;string&quot;) {
+      assert_throws(result, function() {
+        try {
+          actualRange.surroundContents(actualNode);
+        } catch (e) {
+          if (expectedDoctype != expectedIframe.contentDocument.firstChild) {
+            expectedIframe.contentDocument.insertBefore(expectedDoctype, expectedIframe.contentDocument.firstChild);
+          }
+          if (actualDoctype != actualIframe.contentDocument.firstChild) {
+            actualIframe.contentDocument.insertBefore(actualDoctype, actualIframe.contentDocument.firstChild);
+          }
+          throw e;
+        }
+      }, &quot;A &quot; + result + &quot; must be thrown in this case&quot;);
+      // Don't return, we still need to test DOM equality
+    } else {
+      try {
+        actualRange.surroundContents(actualNode);
+      } catch (e) {
+        if (expectedDoctype != expectedIframe.contentDocument.firstChild) {
+          expectedIframe.contentDocument.insertBefore(expectedDoctype, expectedIframe.contentDocument.firstChild);
+        }
+        if (actualDoctype != actualIframe.contentDocument.firstChild) {
+          actualIframe.contentDocument.insertBefore(actualDoctype, actualIframe.contentDocument.firstChild);
+        }
+        throw e;
+      }
+    }
+
+    for (var k = 0; k &lt; actualRoots.length; k++) {
+      assertNodesEqual(actualRoots[k], expectedRoots[k], k ? &quot;moved node's tree root&quot; : &quot;range's tree root&quot;);
+    }
+  });
+  domTests[i][j].done();
+
+  positionTests[i][j].step(function() {
+    assert_equals(actualIframe.contentWindow.unexpectedException, null,
+      &quot;Unexpected exception thrown when setting up Range for actual surroundContents()&quot;);
+    assert_equals(expectedIframe.contentWindow.unexpectedException, null,
+      &quot;Unexpected exception thrown when setting up Range for simulated surroundContents()&quot;);
+    assert_equals(typeof actualRange, &quot;object&quot;,
+      &quot;typeof Range produced in actual iframe&quot;);
+    assert_false(actualRange === null,
+      &quot;Range produced in actual iframe was null&quot;);
+    assert_equals(typeof expectedRange, &quot;object&quot;,
+      &quot;typeof Range produced in expected iframe&quot;);
+    assert_false(expectedRange === null,
+      &quot;Range produced in expected iframe was null&quot;);
+    assert_equals(typeof actualNode, &quot;object&quot;,
+      &quot;typeof Node produced in actual iframe&quot;);
+    assert_false(actualNode === null,
+      &quot;Node produced in actual iframe was null&quot;);
+    assert_equals(typeof expectedNode, &quot;object&quot;,
+      &quot;typeof Node produced in expected iframe&quot;);
+    assert_false(expectedNode === null,
+      &quot;Node produced in expected iframe was null&quot;);
+
+    for (var k = 0; k &lt; actualRoots.length; k++) {
+      assertNodesEqual(actualRoots[k], expectedRoots[k], k ? &quot;moved node's tree root&quot; : &quot;range's tree root&quot;);
+    }
+
+    if (detached) {
+      // No further tests we can do
+      return;
+    }
+
+    assert_equals(actualRange.startOffset, expectedRange.startOffset,
+      &quot;Unexpected startOffset after surroundContents()&quot;);
+    assert_equals(actualRange.endOffset, expectedRange.endOffset,
+      &quot;Unexpected endOffset after surroundContents()&quot;);
+    // How do we decide that the two nodes are equal, since they're in
+    // different trees?  Since the DOMs are the same, it's enough to check
+    // that the index in the parent is the same all the way up the tree.
+    // But we can first cheat by just checking they're actually equal.
+    assert_true(actualRange.startContainer.isEqualNode(expectedRange.startContainer),
+      &quot;Unexpected startContainer after surroundContents(), expected &quot; +
+      expectedRange.startContainer.nodeName.toLowerCase() + &quot; but got &quot; +
+      actualRange.startContainer.nodeName.toLowerCase());
+    var currentActual = actualRange.startContainer;
+    var currentExpected = expectedRange.startContainer;
+    var actual = &quot;&quot;;
+    var expected = &quot;&quot;;
+    while (currentActual &amp;&amp; currentExpected) {
+      actual = indexOf(currentActual) + &quot;-&quot; + actual;
+      expected = indexOf(currentExpected) + &quot;-&quot; + expected;
+
+      currentActual = currentActual.parentNode;
+      currentExpected = currentExpected.parentNode;
+    }
+    actual = actual.substr(0, actual.length - 1);
+    expected = expected.substr(0, expected.length - 1);
+    assert_equals(actual, expected,
+      &quot;startContainer superficially looks right but is actually the wrong node if you trace back its index in all its ancestors (I'm surprised this actually happened&quot;);
+  });
+  positionTests[i][j].done();
+}
+
+testRanges.unshift('&quot;detached&quot;');
+
+var iStart = 0;
+var iStop = testRangesShort.length;
+var jStart = 0;
+var jStop = testNodesShort.length;
+
+if (/subtest=[0-9]+,[0-9]+/.test(location.search)) {
+  var matches = /subtest=([0-9]+),([0-9]+)/.exec(location.search);
+  iStart = Number(matches[1]);
+  iStop = Number(matches[1]) + 1;
+  jStart = Number(matches[2]) + 0;
+  jStop = Number(matches[2]) + 1;
+}
+
+var domTests = [];
+var positionTests = [];
+for (var i = iStart; i &lt; iStop; i++) {
+  domTests[i] = [];
+  positionTests[i] = [];
+  for (var j = jStart; j &lt; jStop; j++) {
+    domTests[i][j] = async_test(i + &quot;,&quot; + j + &quot;: resulting DOM for range &quot; + testRangesShort[i] + &quot;, node &quot; + testNodesShort[j]);
+    positionTests[i][j] = async_test(i + &quot;,&quot; + j + &quot;: resulting range position for range &quot; + testRangesShort[i] + &quot;, node &quot; + testNodesShort[j]);
+  }
+}
+
+var actualIframe = document.createElement(&quot;iframe&quot;);
+actualIframe.style.display = &quot;none&quot;;
+actualIframe.id = &quot;actual&quot;;
+document.body.appendChild(actualIframe);
+
+var expectedIframe = document.createElement(&quot;iframe&quot;);
+expectedIframe.style.display = &quot;none&quot;;
+expectedIframe.id = &quot;expected&quot;;
+document.body.appendChild(expectedIframe);
+
+var referenceDoc = document.implementation.createHTMLDocument(&quot;&quot;);
+referenceDoc.removeChild(referenceDoc.documentElement);
+
+actualIframe.onload = function() {
+  expectedIframe.onload = function() {
+    for (var i = iStart; i &lt; iStop; i++) {
+      for (var j = jStart; j &lt; jStop; j++) {
+        testSurroundContents(i, j);
+      }
+    }
+  }
+  expectedIframe.src = &quot;Range-test-iframe.html&quot;;
+  referenceDoc.appendChild(actualIframe.contentDocument.documentElement.cloneNode(true));
+}
+actualIframe.src = &quot;Range-test-iframe.html&quot;;
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangetestiframeexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-test-iframe-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-test-iframe-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-test-iframe-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x8
+  RenderBlock {HTML} at (0,0) size 800x8
+    RenderBody {BODY} at (8,8) size 784x0
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomrangesRangetestiframehtmlfromrev189470trunkLayoutTestshttptestsw3cdomrangesresourcesRangetestiframehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-test-iframe.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/ranges/resources/Range-test-iframe.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-test-iframe.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/ranges/Range-test-iframe.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,56 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;Range test iframe&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Aryeh Gregor&quot; href=ayg@aryeh.name&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;body onload=run()&gt;
+&lt;script src=../common.js&gt;&lt;/script&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+
+// This script only exists because we want to evaluate the range endpoints
+// in each iframe using that iframe's local variables set up by common.js.  It
+// just creates the range and does nothing else.  The data is returned via
+// window.testRange, and if an exception is thrown, it's put in
+// window.unexpectedException.
+window.unexpectedException = null;
+
+function run() {
+  try {
+    window.unexpectedException = null;
+
+    if (typeof window.testNodeInput != &quot;undefined&quot;) {
+      window.testNode = eval(window.testNodeInput);
+    }
+
+    var rangeEndpoints;
+    if (typeof window.testRangeInput == &quot;undefined&quot;) {
+      // Use the hash (old way of doing things, bad because it requires
+      // navigation)
+      if (location.hash == &quot;&quot;) {
+        return;
+      }
+      rangeEndpoints = eval(location.hash.substr(1));
+    } else {
+      // Get the variable directly off the window, faster and can be done
+      // synchronously
+      rangeEndpoints = eval(window.testRangeInput);
+    }
+
+    var range;
+    if (rangeEndpoints == &quot;detached&quot;) {
+      range = document.createRange();
+      range.detach();
+    } else {
+      range = ownerDocument(rangeEndpoints[0]).createRange();
+      range.setStart(rangeEndpoints[0], rangeEndpoints[1]);
+      range.setEnd(rangeEndpoints[2], rangeEndpoints[3]);
+    }
+
+    window.testRange = range;
+  } catch(e) {
+    window.unexpectedException = e;
+  }
+}
+
+testDiv.style.display = &quot;none&quot;;
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalNodeFilterconstantsexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomtraversalNodeFilterconstantsexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/NodeFilter-constants-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/traversal/NodeFilter-constants-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/NodeFilter-constants-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/NodeFilter-constants-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+
+PASS Constants for acceptNode on NodeFilter interface object. 
+PASS Constants for whatToShow on NodeFilter interface object. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalNodeFilterconstantshtmlfromrev189470trunkLayoutTestshttptestsw3cdomtraversalNodeFilterconstantshtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/NodeFilter-constants.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/traversal/NodeFilter-constants.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/NodeFilter-constants.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/NodeFilter-constants.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;NodeFilter constants&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;../constants.js&quot;&gt;&lt;/script&gt;
+&lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
+&lt;script&gt;
+var objects;
+setup(function() {
+  objects = [
+    [NodeFilter, &quot;NodeFilter interface object&quot;],
+  ]
+})
+testConstants(objects, [
+  [&quot;FILTER_ACCEPT&quot;, 1],
+  [&quot;FILTER_REJECT&quot;, 2],
+  [&quot;FILTER_SKIP&quot;, 3]
+], &quot;acceptNode&quot;)
+testConstants(objects, [
+  [&quot;SHOW_ALL&quot;, 0xFFFFFFFF],
+  [&quot;SHOW_ELEMENT&quot;, 0x1],
+  [&quot;SHOW_ATTRIBUTE&quot;, 0x2],
+  [&quot;SHOW_TEXT&quot;, 0x4],
+  [&quot;SHOW_CDATA_SECTION&quot;, 0x8],
+  [&quot;SHOW_ENTITY_REFERENCE&quot;, 0x10],
+  [&quot;SHOW_ENTITY&quot;, 0x20],
+  [&quot;SHOW_PROCESSING_INSTRUCTION&quot;, 0x40],
+  [&quot;SHOW_COMMENT&quot;, 0x80],
+  [&quot;SHOW_DOCUMENT&quot;, 0x100],
+  [&quot;SHOW_DOCUMENT_TYPE&quot;, 0x200],
+  [&quot;SHOW_DOCUMENT_FRAGMENT&quot;, 0x400],
+  [&quot;SHOW_NOTATION&quot;, 0x800]
+], &quot;whatToShow&quot;)
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalNodeIteratorexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomtraversalNodeIteratorexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/NodeIterator-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/traversal/NodeIterator-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/NodeIterator-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/NodeIterator-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,747 @@
</span><ins>+
+PASS detach() should be a no-op 
+PASS createNodeIterator() parameter defaults 
+PASS createNodeIterator() with null as arguments 
+FAIL createNodeIterator() with undefined as arguments assert_equals: whatToShow expected 4294967295 but got 0
+PASS Propagate exception from filter function 
+PASS document.createNodeIterator(paras[0], 0, null) 
+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] == '#' })) 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalNodeIteratorremovalexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomtraversalNodeIteratorremovalexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/NodeIterator-removal-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/traversal/NodeIterator-removal-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/NodeIterator-removal-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/NodeIterator-removal-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,24 @@
</span><ins>+
+PASS Test removing node paras[0] 
+PASS Test removing node paras[0].firstChild 
+PASS Test removing node paras[1].firstChild 
+PASS Test removing node foreignPara1 
+PASS Test removing node foreignPara1.firstChild 
+PASS Test removing node detachedPara1 
+PASS Test removing node detachedPara1.firstChild 
+PASS Test removing node foreignPara2 
+PASS Test removing node xmlElement 
+PASS Test removing node foreignTextNode 
+PASS Test removing node processingInstruction 
+PASS Test removing node comment 
+PASS Test removing node doctype 
+PASS Test removing node foreignDoctype 
+PASS Test removing node paras[1] 
+PASS Test removing node detachedPara2 
+PASS Test removing node detachedPara2.firstChild 
+PASS Test removing node testDiv 
+PASS Test removing node xmlTextNode 
+PASS Test removing node xmlComment 
+PASS Test removing node foreignComment 
+PASS Test removing node xmlDoctype 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalNodeIteratorremovalhtmlfromrev189470trunkLayoutTestshttptestsw3cdomtraversalNodeIteratorremovalhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/NodeIterator-removal.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/traversal/NodeIterator-removal.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/NodeIterator-removal.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/NodeIterator-removal.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,100 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;NodeIterator removal tests&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Aryeh Gregor&quot; href=ayg@aryeh.name&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;script src=../common.js&gt;&lt;/script&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+
+for (var i = 0; i &lt; testNodes.length; i++) {
+  var node = eval(testNodes[i]);
+  if (!node.parentNode) {
+    // Nothing to test
+    continue;
+  }
+  test(function() {
+    var iters = [];
+    var descs = [];
+    var expectedReferenceNodes = [];
+    var expectedPointers = [];
+
+    for (var j = 0; j &lt; testNodes.length; j++) {
+      var root = eval(testNodes[j]);
+      // Add all distinct iterators with this root, calling nextNode()
+      // repeatedly until it winds up with the same iterator.
+      for (var k = 0; ; k++) {
+        var iter = document.createNodeIterator(root);
+        for (var l = 0; l &lt; k; l++) {
+          iter.nextNode();
+        }
+        if (k &amp;&amp; iter.referenceNode == iters[iters.length - 1].referenceNode
+            &amp;&amp; iter.pointerBeforeReferenceNode
+               == iters[iters.length - 1].pointerBeforeReferenceNode) {
+          break;
+        } else {
+          iters.push(iter);
+          descs.push(&quot;document.createNodeIterator(&quot; + testNodes[j]
+            + &quot;) advanced &quot; + k + &quot; times&quot;);
+          expectedReferenceNodes.push(iter.referenceNode);
+          expectedPointers.push(iter.pointerBeforeReferenceNode);
+
+          var idx = iters.length - 1;
+
+          // &quot;If the node is root or is not an inclusive ancestor of the
+          // referenceNode attribute value, terminate these steps.&quot;
+          //
+          // We also have to rule out the case where node is an ancestor of
+          // root, which is implicitly handled by the spec since such a node
+          // was not part of the iterator collection to start with.
+          if (isInclusiveAncestor(node, root)
+              || !isInclusiveAncestor(node, iter.referenceNode)) {
+            continue;
+          }
+
+          // &quot;If the pointerBeforeReferenceNode attribute value is false, set
+          // the referenceNode attribute to the first node preceding the node
+          // that is being removed, and terminate these steps.&quot;
+          if (!iter.pointerBeforeReferenceNode) {
+            expectedReferenceNodes[idx] = previousNode(node);
+            continue;
+          }
+
+          // &quot;If there is a node following the last inclusive descendant of the
+          // node that is being removed, set the referenceNode attribute to the
+          // first such node, and terminate these steps.&quot;
+          var next = nextNodeDescendants(node);
+          if (next) {
+            expectedReferenceNodes[idx] = next;
+            continue;
+          }
+
+          // &quot;Set the referenceNode attribute to the first node preceding the
+          // node that is being removed and set the pointerBeforeReferenceNode
+          // attribute to false.&quot;
+          expectedReferenceNodes[idx] = previousNode(node);
+          expectedPointers[idx] = false;
+        }
+      }
+    }
+
+    var oldParent = node.parentNode;
+    var oldSibling = node.nextSibling;
+    oldParent.removeChild(node);
+
+    for (var j = 0; j &lt; iters.length; j++) {
+      var iter = iters[j];
+      assert_equals(iter.referenceNode, expectedReferenceNodes[j],
+                    &quot;.referenceNode of &quot; + descs[j]);
+      assert_equals(iter.pointerBeforeReferenceNode, expectedPointers[j],
+                    &quot;.pointerBeforeReferenceNode of &quot; + descs[j]);
+    }
+
+    oldParent.insertBefore(node, oldSibling);
+  }, &quot;Test removing node &quot; + testNodes[i]);
+}
+
+testDiv.style.display = &quot;none&quot;;
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalNodeIteratorhtmlfromrev189470trunkLayoutTestshttptestsw3cdomtraversalNodeIteratorhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/NodeIterator.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/traversal/NodeIterator.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/NodeIterator.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/NodeIterator.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,202 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;NodeIterator tests&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Aryeh Gregor&quot; href=ayg@aryeh.name&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;script src=../common.js&gt;&lt;/script&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+
+function check_iter(iter, root, whatToShowValue) {
+    whatToShowValue = whatToShowValue === undefined ? 0xFFFFFFFF : whatToShowValue;
+
+    assert_equals(iter.toString(), '[object NodeIterator]', 'toString');
+    assert_equals(iter.root, root, 'root');
+    assert_equals(iter.whatToShow, whatToShowValue, 'whatToShow');
+    assert_equals(iter.filter, null, 'filter');
+    assert_equals(iter.referenceNode, root, 'referenceNode');
+    assert_equals(iter.pointerBeforeReferenceNode, true, 'pointerBeforeReferenceNode');
+    assert_readonly(iter, 'root');
+    assert_readonly(iter, 'whatToShow');
+    assert_readonly(iter, 'filter');
+    assert_readonly(iter, 'referenceNode');
+    assert_readonly(iter, 'pointerBeforeReferenceNode');
+}
+
+test(function() {
+  var iter = document.createNodeIterator(document);
+  iter.detach();
+  iter.detach();
+}, &quot;detach() should be a no-op&quot;);
+
+test(function() {
+  var iter = document.createNodeIterator(document);
+  check_iter(iter, document);
+}, &quot;createNodeIterator() parameter defaults&quot;);
+
+test(function() {
+  var iter = document.createNodeIterator(document, null, null);
+  check_iter(iter, document, 0);
+}, &quot;createNodeIterator() with null as arguments&quot;);
+
+test(function() {
+  var iter = document.createNodeIterator(document, undefined, undefined);
+  check_iter(iter, document);
+}, &quot;createNodeIterator() with undefined as arguments&quot;);
+
+test(function() {
+  var iter = document.createNodeIterator(document, NodeFilter.SHOW_ALL,
+                                        function() { throw {name: &quot;failed&quot;} });
+  assert_throws({name: &quot;failed&quot;}, function() { iter.nextNode() });
+}, &quot;Propagate exception from filter function&quot;);
+
+function testIterator(root, whatToShow, filter) {
+  var iter = document.createNodeIterator(root, whatToShow, filter);
+
+  assert_equals(iter.root, root, &quot;.root&quot;);
+  assert_equals(iter.referenceNode, root, &quot;Initial .referenceNode&quot;);
+  assert_equals(iter.pointerBeforeReferenceNode, true,
+                &quot;.pointerBeforeReferenceNode&quot;);
+  assert_equals(iter.whatToShow, whatToShow, &quot;.whatToShow&quot;);
+  assert_equals(iter.filter, filter, &quot;.filter&quot;);
+
+  var expectedReferenceNode = root;
+  var expectedBeforeNode = true;
+  // &quot;Let node be the value of the referenceNode attribute.&quot;
+  var node = root;
+  // &quot;Let before node be the value of the pointerBeforeReferenceNode
+  // attribute.&quot;
+  var beforeNode = true;
+  var i = 1;
+  // Each loop iteration runs nextNode() once.
+  while (node) {
+    do {
+      if (!beforeNode) {
+        // &quot;If before node is false, let node be the first node following node
+        // in the iterator collection. If there is no such node return null.&quot;
+        node = nextNode(node);
+        if (!isInclusiveDescendant(node, root)) {
+          node = null;
+          break;
+        }
+      } else {
+        // &quot;If before node is true, set it to false.&quot;
+        beforeNode = false;
+      }
+      // &quot;Filter node and let result be the return value.
+      //
+      // &quot;If result is FILTER_ACCEPT, go to the next step in the overall set of
+      // steps.
+      //
+      // &quot;Otherwise, run these substeps again.&quot;
+      if (!((1 &lt;&lt; (node.nodeType - 1)) &amp; whatToShow)
+          || (filter &amp;&amp; filter(node) != NodeFilter.FILTER_ACCEPT)) {
+        continue;
+      }
+
+      // &quot;Set the referenceNode attribute to node, set the
+      // pointerBeforeReferenceNode attribute to before node, and return node.&quot;
+      expectedReferenceNode = node;
+      expectedBeforeNode = beforeNode;
+
+      break;
+    } while (true);
+
+    assert_equals(iter.nextNode(), node, &quot;.nextNode() &quot; + i + &quot; time(s)&quot;);
+    assert_equals(iter.referenceNode, expectedReferenceNode,
+                  &quot;.referenceNode after nextNode() &quot; + i + &quot; time(s)&quot;);
+    assert_equals(iter.pointerBeforeReferenceNode, expectedBeforeNode,
+             &quot;.pointerBeforeReferenceNode after nextNode() &quot; + i + &quot; time(s)&quot;);
+
+    i++;
+  }
+
+  // Same but for previousNode() (mostly copy-pasted, oh well)
+  var iter = document.createNodeIterator(root, whatToShow, filter);
+
+  var expectedReferenceNode = root;
+  var expectedBeforeNode = true;
+  // &quot;Let node be the value of the referenceNode attribute.&quot;
+  var node = root;
+  // &quot;Let before node be the value of the pointerBeforeReferenceNode
+  // attribute.&quot;
+  var beforeNode = true;
+  var i = 1;
+  // Each loop iteration runs previousNode() once.
+  while (node) {
+    do {
+      if (beforeNode) {
+        // &quot;If before node is true, let node be the first node preceding node
+        // in the iterator collection. If there is no such node return null.&quot;
+        node = previousNode(node);
+        if (!isInclusiveDescendant(node, root)) {
+          node = null;
+          break;
+        }
+      } else {
+        // &quot;If before node is false, set it to true.&quot;
+        beforeNode = true;
+      }
+      // &quot;Filter node and let result be the return value.
+      //
+      // &quot;If result is FILTER_ACCEPT, go to the next step in the overall set of
+      // steps.
+      //
+      // &quot;Otherwise, run these substeps again.&quot;
+      if (!((1 &lt;&lt; (node.nodeType - 1)) &amp; whatToShow)
+          || (filter &amp;&amp; filter(node) != NodeFilter.FILTER_ACCEPT)) {
+        continue;
+      }
+
+      // &quot;Set the referenceNode attribute to node, set the
+      // pointerBeforeReferenceNode attribute to before node, and return node.&quot;
+      expectedReferenceNode = node;
+      expectedBeforeNode = beforeNode;
+
+      break;
+    } while (true);
+
+    assert_equals(iter.previousNode(), node, &quot;.previousNode() &quot; + i + &quot; time(s)&quot;);
+    assert_equals(iter.referenceNode, expectedReferenceNode,
+                  &quot;.referenceNode after previousNode() &quot; + i + &quot; time(s)&quot;);
+    assert_equals(iter.pointerBeforeReferenceNode, expectedBeforeNode,
+         &quot;.pointerBeforeReferenceNode after previousNode() &quot; + i + &quot; time(s)&quot;);
+
+    i++;
+  }
+}
+
+var whatToShows = [
+  &quot;0&quot;,
+  &quot;0xFFFFFFFF&quot;,
+  &quot;NodeFilter.SHOW_ELEMENT&quot;,
+  &quot;NodeFilter.SHOW_ATTRIBUTE&quot;,
+  &quot;NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT&quot;,
+];
+
+var callbacks = [
+  &quot;null&quot;,
+  &quot;(function(node) { return true })&quot;,
+  &quot;(function(node) { return false })&quot;,
+  &quot;(function(node) { return node.nodeName[0] == '#' })&quot;,
+];
+
+var tests = [];
+for (var i = 0; i &lt; testNodes.length; i++) {
+  for (var j = 0; j &lt; whatToShows.length; j++) {
+    for (var k = 0; k &lt; callbacks.length; k++) {
+      tests.push([
+        &quot;document.createNodeIterator(&quot; + testNodes[i]
+          + &quot;, &quot; + whatToShows[j] + &quot;, &quot; + callbacks[k] + &quot;)&quot;,
+        eval(testNodes[i]), eval(whatToShows[j]), eval(callbacks[k])
+      ]);
+    }
+  }
+}
+
+generate_tests(testIterator, tests);
+
+testDiv.style.display = &quot;none&quot;;
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkeracceptNodefilterexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomtraversalTreeWalkeracceptNodefilterexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/traversal/TreeWalker-acceptNode-filter-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,14 @@
</span><ins>+Test JS objects as NodeFilters
+
+
+PASS Testing with raw function filter 
+PASS Testing with object filter 
+PASS Testing with null filter 
+PASS Testing with undefined filter 
+PASS Testing with object lacking acceptNode property 
+PASS Testing with object with non-function acceptNode property 
+PASS Testing with function having acceptNode function 
+PASS Testing acceptNode callee 
+PASS Testing with filter function that throws 
+PASS Testing with filter object that throws 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkeracceptNodefilterhtmlfromrev189470trunkLayoutTestshttptestsw3cdomtraversalTreeWalkeracceptNodefilterhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/traversal/TreeWalker-acceptNode-filter.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-acceptNode-filter.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,156 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;!--
+Test adapted from https://mxr.mozilla.org/chromium/source/src/third_party/WebKit/LayoutTests/fast/dom/TreeWalker/script-tests/acceptNode-filter.js
+--&gt;
+&lt;head&gt;
+&lt;title&gt;TreeWalker: acceptNode-filter&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;traversal-support.js&quot;&gt;&lt;/script&gt;
+&lt;link rel=&quot;stylesheet&quot; href=&quot;/resources/testharness.css&quot;&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p&gt;Test JS objects as NodeFilters&lt;/p&gt;
+&lt;script&gt;
+var testElement;
+setup(function() {
+    testElement = document.createElement(&quot;div&quot;);
+    testElement.id = 'root';
+    //testElement.innerHTML='&lt;div id=&quot;A1&quot;&gt;&lt;div id=&quot;B1&quot;&gt;&lt;/div&gt;&lt;div id=&quot;B2&quot;&gt;&lt;/div&gt;&lt;/div&gt;';
+
+    // XXX for Servo, build the tree without using innerHTML
+    var a1 = document.createElement(&quot;div&quot;);
+    a1.id = &quot;A1&quot;;
+    var b1 = document.createElement(&quot;div&quot;);
+    b1.id = &quot;B1&quot;;
+    var b2 = document.createElement(&quot;div&quot;);
+    b2.id = &quot;B2&quot;;
+    testElement.appendChild(a1);
+    a1.appendChild(b1);
+    a1.appendChild(b2);
+});
+
+test(function()
+{
+    function filter(node)
+    {
+        if (node.id == &quot;B1&quot;)
+            return NodeFilter.FILTER_SKIP;
+        return NodeFilter.FILTER_ACCEPT;
+    }
+
+    var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, filter);
+    assert_node(walker.currentNode, { type: Element, id: 'root' });
+    assert_node(walker.firstChild(), { type: Element, id: 'A1' });
+    assert_node(walker.currentNode, { type: Element, id: 'A1' });
+    assert_node(walker.nextNode(), { type: Element, id: 'B2' });
+    assert_node(walker.currentNode, { type: Element, id: 'B2' });
+}, 'Testing with raw function filter');
+
+test(function()
+{
+    var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, {
+        acceptNode : function(node) {
+            if (node.id == &quot;B1&quot;)
+                return NodeFilter.FILTER_SKIP;
+            return NodeFilter.FILTER_ACCEPT;
+        }
+    });
+    assert_node(walker.currentNode, { type: Element, id: 'root' });
+    assert_node(walker.firstChild(), { type: Element, id: 'A1' });
+    assert_node(walker.currentNode, { type: Element, id: 'A1' });
+    assert_node(walker.nextNode(), { type: Element, id: 'B2' });
+    assert_node(walker.currentNode, { type: Element, id: 'B2' });
+}, 'Testing with object filter');
+
+test(function()
+{
+    var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, null);
+    assert_node(walker.currentNode, { type: Element, id: 'root' });
+    assert_node(walker.firstChild(), { type: Element, id: 'A1' });
+    assert_node(walker.currentNode, { type: Element, id: 'A1' });
+    assert_node(walker.nextNode(), { type: Element, id: 'B1' });
+    assert_node(walker.currentNode, { type: Element, id: 'B1' });
+}, 'Testing with null filter');
+
+test(function()
+{
+    var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, undefined);
+    assert_node(walker.currentNode, { type: Element, id: 'root' });
+    assert_node(walker.firstChild(), { type: Element, id: 'A1' });
+    assert_node(walker.currentNode, { type: Element, id: 'A1' });
+    assert_node(walker.nextNode(), { type: Element, id: 'B1' });
+    assert_node(walker.currentNode, { type: Element, id: 'B1' });
+}, 'Testing with undefined filter');
+
+test(function()
+{
+    var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, {});
+    assert_throws(new TypeError(), function () { walker.firstChild(); });
+    assert_node(walker.currentNode, { type: Element, id: 'root' });
+    assert_throws(new TypeError(), function () { walker.nextNode(); });
+    assert_node(walker.currentNode, { type: Element, id: 'root' });
+}, 'Testing with object lacking acceptNode property');
+
+test(function()
+{
+    var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, { acceptNode: &quot;foo&quot; });
+    assert_throws(new TypeError(), function () { walker.firstChild(); });
+    assert_node(walker.currentNode, { type: Element, id: 'root' });
+    assert_throws(new TypeError(), function () { walker.nextNode(); });
+    assert_node(walker.currentNode, { type: Element, id: 'root' });
+}, 'Testing with object with non-function acceptNode property');
+
+test(function()
+{
+    var filter = function() { return NodeFilter.FILTER_ACCEPT; };
+    filter.acceptNode = function(node) { return NodeFilter.FILTER_SKIP; };
+    var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, filter);
+    assert_node(walker.firstChild(), { type: Element, id: 'A1' });
+    assert_node(walker.nextNode(), { type: Element, id: 'B1' });
+}, 'Testing with function having acceptNode function');
+
+test(function()
+{
+    var filter = {
+        acceptNode: function(node) {
+            return NodeFilter.FILTER_ACCEPT;
+        }
+    };
+    var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, filter);
+    assert_node(walker.firstChild(), { type: Element, id: 'A1' });
+}, 'Testing acceptNode callee');
+
+test(function()
+{
+    var test_error = { name: &quot;test&quot; };
+    var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT,
+                                           function(node) {
+                                               throw test_error;
+                                           });
+    assert_throws(test_error, function () { walker.firstChild(); });
+    assert_node(walker.currentNode, { type: Element, id: 'root' });
+    assert_throws(test_error, function () { walker.nextNode(); });
+    assert_node(walker.currentNode, { type: Element, id: 'root' });
+}, 'Testing with filter function that throws');
+
+test(function()
+{
+    var test_error = { name: &quot;test&quot; };
+    var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT,
+                                           {
+                                               acceptNode : function(node) {
+                                                   throw test_error;
+                                               }
+                                           });
+    assert_throws(test_error, function () { walker.firstChild(); });
+    assert_node(walker.currentNode, { type: Element, id: 'root' });
+    assert_throws(test_error, function () { walker.nextNode(); });
+    assert_node(walker.currentNode, { type: Element, id: 'root' });
+}, 'Testing with filter object that throws');
+
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkerbasicexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomtraversalTreeWalkerbasicexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-basic-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/traversal/TreeWalker-basic-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-basic-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-basic-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+This test checks the basic functionality of TreeWalker.
+
+
+PASS Construct a TreeWalker by document.createTreeWalker(root). 
+PASS Construct a TreeWalker by document.createTreeWalker(root, null, null). 
+FAIL Construct a TreeWalker by document.createTreeWalker(root, undefined, undefined). assert_equals: whatToShow expected 4294967295 but got 0
+FAIL Give an invalid root node to document.createTreeWalker(). assert_throws: function &quot;function () { document.createTreeWalker(null); }&quot; did not throw
+PASS Walk over nodes. 
+PASS Optional arguments to createTreeWalker should be optional (3 passed, null). 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkerbasichtmlfromrev189470trunkLayoutTestshttptestsw3cdomtraversalTreeWalkerbasichtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-basic.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/traversal/TreeWalker-basic.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-basic.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-basic.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,155 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;!--
+Test adapted from https://mxr.mozilla.org/chromium/source/src/third_party/WebKit/LayoutTests/fast/dom/TreeWalker/TreeWalker-basic.html
+--&gt;
+&lt;head&gt;
+&lt;title&gt;TreeWalker: Basic test&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;traversal-support.js&quot;&gt;&lt;/script&gt;
+&lt;link rel=&quot;stylesheet&quot; href=&quot;/resources/testharness.css&quot;&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p&gt;This test checks the basic functionality of TreeWalker.&lt;/p&gt;
+&lt;script&gt;
+function createSampleDOM()
+{
+    // Tree structure:
+    //             #a
+    //             |
+    //        +----+----+
+    //        |         |
+    //       &quot;b&quot;        #c
+    //                  |
+    //             +----+----+
+    //             |         |
+    //            #d      &lt;!--j--&gt;
+    //             |
+    //        +----+----+
+    //        |    |    |
+    //       &quot;e&quot;  #f   &quot;i&quot;
+    //             |
+    //          +--+--+
+    //          |     |
+    //         &quot;g&quot; &lt;!--h--&gt;
+    var div = document.createElement('div');
+    div.id = 'a';
+    // div.innerHTML = 'b&lt;div id=&quot;c&quot;&gt;&lt;div id=&quot;d&quot;&gt;e&lt;span id=&quot;f&quot;&gt;g&lt;!--h--&gt;&lt;/span&gt;i&lt;/div&gt;&lt;!--j--&gt;&lt;/div&gt;';
+
+    div.appendChild(document.createTextNode(&quot;b&quot;));
+
+    var c = document.createElement(&quot;div&quot;);
+    c.id = 'c';
+    div.appendChild(c);
+
+    var d = document.createElement(&quot;div&quot;);
+    d.id = 'd';
+    c.appendChild(d);
+
+    var e = document.createTextNode(&quot;e&quot;);
+    d.appendChild(e);
+
+    var f = document.createElement(&quot;span&quot;);
+    f.id = 'f';
+    d.appendChild(f);
+
+    var g = document.createTextNode(&quot;g&quot;);
+    f.appendChild(g);
+
+    var h = document.createComment(&quot;h&quot;);
+    f.appendChild(h);
+
+    var i = document.createTextNode(&quot;i&quot;);
+    d.appendChild(i);
+
+    var j = document.createComment(&quot;j&quot;);
+    c.appendChild(j);
+
+    return div;
+}
+
+function check_walker(walker, root, whatToShowValue)
+{
+    whatToShowValue = whatToShowValue === undefined ? 0xFFFFFFFF : whatToShowValue;
+
+    assert_equals(walker.toString(), '[object TreeWalker]', 'toString');
+    assert_equals(walker.root, root, 'root');
+    assert_equals(walker.whatToShow, whatToShowValue, 'whatToShow');
+    assert_equals(walker.filter, null, 'filter');
+    assert_equals(walker.currentNode, root, 'currentNode');
+    assert_readonly(walker, 'root');
+    assert_readonly(walker, 'whatToShow');
+    assert_readonly(walker, 'filter');
+}
+
+test(function ()
+{
+    var root = createSampleDOM();
+    var walker = document.createTreeWalker(root);
+    check_walker(walker, root);
+}, 'Construct a TreeWalker by document.createTreeWalker(root).');
+
+test(function ()
+{
+    var root = createSampleDOM();
+    var walker = document.createTreeWalker(root, null, null);
+    check_walker(walker, root, 0);
+}, 'Construct a TreeWalker by document.createTreeWalker(root, null, null).');
+
+test(function ()
+{
+    var root = createSampleDOM();
+    var walker = document.createTreeWalker(root, undefined, undefined);
+    check_walker(walker, root);
+}, 'Construct a TreeWalker by document.createTreeWalker(root, undefined, undefined).');
+
+test(function ()
+{
+    assert_throws(new TypeError(), function () { document.createTreeWalker(); });
+    assert_throws(new TypeError(), function () { document.createTreeWalker(null); });
+    assert_throws(new TypeError(), function () { document.createTreeWalker(undefined); });
+    assert_throws(new TypeError(), function () { document.createTreeWalker(new Object()); });
+    assert_throws(new TypeError(), function () { document.createTreeWalker(1); });
+}, 'Give an invalid root node to document.createTreeWalker().');
+
+test(function ()
+{
+    var root = createSampleDOM();
+    var walker = document.createTreeWalker(root);
+    var f = root.lastChild.firstChild.childNodes[1];  // An element node: div#f.
+
+    assert_node(walker.currentNode, { type: Element, id: 'a' });
+    assert_equals(walker.parentNode(), null);
+    assert_node(walker.currentNode, { type: Element, id: 'a' });
+    assert_node(walker.firstChild(), { type: Text, nodeValue: 'b' });
+    assert_node(walker.currentNode, { type: Text, nodeValue: 'b' });
+    assert_node(walker.nextSibling(), { type: Element, id: 'c' });
+    assert_node(walker.currentNode, { type: Element, id: 'c' });
+    assert_node(walker.lastChild(), { type: Comment, nodeValue: 'j' });
+    assert_node(walker.currentNode, { type: Comment, nodeValue: 'j' });
+    assert_node(walker.previousSibling(), { type: Element, id: 'd' });
+    assert_node(walker.currentNode, { type: Element, id: 'd' });
+    assert_node(walker.nextNode(), { type: Text, nodeValue: 'e' });
+    assert_node(walker.currentNode, { type: Text, nodeValue: 'e' });
+    assert_node(walker.parentNode(), { type: Element, id: 'd' });
+    assert_node(walker.currentNode, { type: Element, id: 'd' });
+    assert_node(walker.previousNode(), { type: Element, id: 'c' });
+    assert_node(walker.currentNode, { type: Element, id: 'c' });
+    assert_equals(walker.nextSibling(), null);
+    assert_node(walker.currentNode, { type: Element, id: 'c' });
+    walker.currentNode = f;
+    assert_equals(walker.currentNode, f);
+}, 'Walk over nodes.');
+
+test(function() {
+    var treeWalker = document.createTreeWalker(document.body, 42, null);
+    assert_equals(treeWalker.root, document.body);
+    assert_equals(treeWalker.currentNode, document.body);
+    assert_equals(treeWalker.whatToShow, 42);
+    assert_equals(treeWalker.filter, null);
+}, &quot;Optional arguments to createTreeWalker should be optional (3 passed, null).&quot;);
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkercurrentNodeexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomtraversalTreeWalkercurrentNodeexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-currentNode-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/traversal/TreeWalker-currentNode-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-currentNode-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-currentNode-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
+
+Test TreeWalker currentNode functionality
+
+
+PASS Test that TreeWalker.parent() doesn't set the currentNode to a node not under the root. 
+PASS Test that we handle setting the currentNode to arbitrary nodes not under the root element. 
+PASS Test how we handle the case when the traversed to node is within the root, but the currentElement is not. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkercurrentNodehtmlfromrev189470trunkLayoutTestshttptestsw3cdomtraversalTreeWalkercurrentNodehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-currentNode.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/traversal/TreeWalker-currentNode.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-currentNode.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-currentNode.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,74 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;!--
+Test adapted from https://mxr.mozilla.org/chromium/source/src/third_party/WebKit/LayoutTests/fast/dom/TreeWalker/resources/TreeWalker-currentNode.js
+--&gt;
+&lt;head&gt;
+&lt;title&gt;TreeWalker: currentNode&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;traversal-support.js&quot;&gt;&lt;/script&gt;
+&lt;link rel=&quot;stylesheet&quot; href=&quot;/resources/testharness.css&quot;&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;div id='parent'&gt;
+&lt;div id='subTree'&gt;&lt;p&gt;Lorem ipsum &lt;span&gt;dolor &lt;b&gt;sit&lt;/b&gt; amet&lt;/span&gt;, consectetur &lt;i&gt;adipisicing&lt;/i&gt; elit, sed do eiusmod &lt;tt&gt;tempor &lt;b&gt;&lt;i&gt;incididunt ut&lt;/i&gt; labore&lt;/b&gt; et dolore magna&lt;/tt&gt; aliqua.&lt;/p&gt;&lt;/div&gt;
+&lt;/div&gt;
+&lt;p&gt;Test TreeWalker currentNode functionality&lt;/p&gt;
+&lt;script&gt;
+// var subTree = document.createElement('div');
+// subTree.innerHTML = &quot;&lt;p&gt;Lorem ipsum &lt;span&gt;dolor &lt;b&gt;sit&lt;/b&gt; amet&lt;/span&gt;, consectetur &lt;i&gt;adipisicing&lt;/i&gt; elit, sed do eiusmod &lt;tt&gt;tempor &lt;b&gt;&lt;i&gt;incididunt ut&lt;/i&gt; labore&lt;/b&gt; et dolore magna&lt;/tt&gt; aliqua.&lt;/p&gt;&quot;
+// document.body.appendChild(subTree);
+var subTree = document.getElementById(&quot;subTree&quot;);
+
+var all = function(node) { return true; }
+
+test(function()
+{
+    var w = document.createTreeWalker(subTree, NodeFilter.SHOW_ELEMENT, all);
+    assert_node(w.currentNode, { type: Element, id: 'subTree' });
+    assert_equals(w.parentNode(), null);
+    assert_node(w.currentNode, { type: Element, id: 'subTree' });
+}, &quot;Test that TreeWalker.parent() doesn't set the currentNode to a node not under the root.&quot;);
+
+test(function()
+{
+    var w = document.createTreeWalker(subTree,
+                                      NodeFilter.SHOW_ELEMENT
+                                      | NodeFilter.SHOW_COMMENT,
+                                      all);
+    w.currentNode = document.documentElement;
+    assert_equals(w.parentNode(), null);
+    assert_equals(w.currentNode, document.documentElement);
+    w.currentNode = document.documentElement;
+    assert_equals(w.nextNode(), document.documentElement.firstChild);
+    assert_equals(w.currentNode, document.documentElement.firstChild);
+    w.currentNode = document.documentElement;
+    assert_equals(w.previousNode(), null);
+    assert_equals(w.currentNode, document.documentElement);
+    w.currentNode = document.documentElement;
+    assert_equals(w.firstChild(), document.documentElement.firstChild);
+    assert_equals(w.currentNode, document.documentElement.firstChild);
+    w.currentNode = document.documentElement;
+    assert_equals(w.lastChild(), document.documentElement.lastChild);
+    assert_equals(w.currentNode, document.documentElement.lastChild);
+    w.currentNode = document.documentElement;
+    assert_equals(w.nextSibling(), null);
+    assert_equals(w.currentNode, document.documentElement);
+    w.currentNode = document.documentElement;
+    assert_equals(w.previousSibling(), null);
+    assert_equals(w.currentNode, document.documentElement);
+}, &quot;Test that we handle setting the currentNode to arbitrary nodes not under the root element.&quot;);
+
+test(function()
+{
+    var w = document.createTreeWalker(subTree, NodeFilter.SHOW_ELEMENT, all);
+    w.currentNode = subTree.previousSibling;
+    assert_equals(w.nextNode(), subTree);
+    w.currentNode = document.getElementById(&quot;parent&quot;);
+    assert_equals(w.firstChild(), subTree);
+}, &quot;Test how we handle the case when the traversed to node is within the root, but the currentElement is not.&quot;);
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkerexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomtraversalTreeWalkerexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/traversal/TreeWalker-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,743 @@
</span><ins>+
+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 })) 
+FAIL document.createTreeWalker(document, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .nextSibling() expected Text node &quot;TreeWalker tests&quot; but got null
+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 })) 
+FAIL document.createTreeWalker(detachedDiv, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .nextSibling() expected Text node &quot;Wxyzabcd&quot; but got null
+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 })) 
+FAIL document.createTreeWalker(foreignDoc, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .nextSibling() expected Text node &quot;Efghijkl&quot; but got Comment node &lt;!--&quot;Commenter&quot; and &quot;commentator&quot; mean different things.  I'v...--&gt;
+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 })) 
+FAIL document.createTreeWalker(xmlDoc, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .nextSibling() expected Text node &quot;do re mi fa so la ti&quot; but got Comment node &lt;!--I maliciously created a comment that will break incautiou...--&gt;
+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 })) 
+FAIL document.createTreeWalker(testDiv, 0xFFFFFFFF, (function(node) { return node.nodeName[0] == '#' })) assert_equals: .nextSibling() expected Text node &quot;Ijklmnop
+&quot; but got Comment node &lt;!--Alphabet soup?--&gt;
+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] == '#' })) 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkerpreviousNodeLastChildRejectexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomtraversalTreeWalkerpreviousNodeLastChildRejectexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-previousNodeLastChildReject-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/traversal/TreeWalker-previousNodeLastChildReject-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-previousNodeLastChildReject-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-previousNodeLastChildReject-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+Test that previousNode properly respects the filter.
+
+
+PASS Test that previousNode properly respects the filter. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkerpreviousNodeLastChildRejecthtmlfromrev189470trunkLayoutTestshttptestsw3cdomtraversalTreeWalkerpreviousNodeLastChildRejecthtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-previousNodeLastChildReject.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/traversal/TreeWalker-previousNodeLastChildReject.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-previousNodeLastChildReject.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-previousNodeLastChildReject.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,88 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;!--
+Test adapted from https://mxr.mozilla.org/chromium/source/src/third_party/WebKit/LayoutTests/fast/dom/TreeWalker/script-tests/previousNodeLastChildReject.js
+--&gt;
+&lt;head&gt;
+&lt;title&gt;TreeWalker: previousNodeLastChildReject&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;traversal-support.js&quot;&gt;&lt;/script&gt;
+&lt;link rel=&quot;stylesheet&quot; href=&quot;/resources/testharness.css&quot;&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p&gt;Test that previousNode properly respects the filter.&lt;/p&gt;
+&lt;script&gt;
+var testElement;
+setup(function() {
+    testElement = document.createElement(&quot;div&quot;);
+    testElement.id = 'root';
+    // testElement.innerHTML='&lt;div id=&quot;A1&quot;&gt;&lt;div id=&quot;B1&quot;&gt;&lt;div id=&quot;C1&quot;&gt;&lt;/div&gt;&lt;div id=&quot;C2&quot;&gt;&lt;div id=&quot;D1&quot;&gt;&lt;/div&gt;&lt;div id=&quot;D2&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;B2&quot;&gt;&lt;div id=&quot;C3&quot;&gt;&lt;/div&gt;&lt;div id=&quot;C4&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;';
+    // testElement.innerHTML='
+    // &lt;div id=&quot;A1&quot;&gt;
+    //   &lt;div id=&quot;B1&quot;&gt;
+    //     &lt;div id=&quot;C1&quot;&gt;
+    //     &lt;/div&gt;
+    //     &lt;div id=&quot;C2&quot;&gt;
+    //       &lt;div id=&quot;D1&quot;&gt;
+    //       &lt;/div&gt;
+    //       &lt;div id=&quot;D2&quot;&gt;
+    //       &lt;/div&gt;
+    //     &lt;/div&gt;
+    //   &lt;/div&gt;
+    //   &lt;div id=&quot;B2&quot;&gt;
+    //     &lt;div id=&quot;C3&quot;&gt;
+    //     &lt;/div&gt;
+    //     &lt;div id=&quot;C4&quot;&gt;
+    //     &lt;/div&gt;
+    //   &lt;/div&gt;
+    // &lt;/div&gt;';
+
+    // XXX for Servo, build the tree without using innerHTML
+    var a1 = document.createElement(&quot;div&quot;); a1.id = &quot;A1&quot;;
+    var b1 = document.createElement(&quot;div&quot;); b1.id = &quot;B1&quot;;
+    var b2 = document.createElement(&quot;div&quot;); b2.id = &quot;B2&quot;;
+    var c1 = document.createElement(&quot;div&quot;); c1.id = &quot;C1&quot;;
+    var c2 = document.createElement(&quot;div&quot;); c2.id = &quot;C2&quot;;
+    var c3 = document.createElement(&quot;div&quot;); c3.id = &quot;C3&quot;;
+    var c4 = document.createElement(&quot;div&quot;); c4.id = &quot;C4&quot;;
+    var d1 = document.createElement(&quot;div&quot;); d1.id = &quot;D1&quot;;
+    var d2 = document.createElement(&quot;div&quot;); d2.id = &quot;D2&quot;;
+
+    testElement.appendChild(a1);
+    a1.appendChild(b1);
+    a1.appendChild(b2);
+    b1.appendChild(c1);
+    b1.appendChild(c2);
+    b2.appendChild(c3);
+    b2.appendChild(c4);
+    c2.appendChild(d1);
+    c2.appendChild(d2);
+});
+
+test(function()
+{
+    function filter(node)
+    {
+        if (node.id == &quot;C2&quot;)
+            return NodeFilter.FILTER_REJECT;
+        return NodeFilter.FILTER_ACCEPT;
+    }
+
+    var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, filter);
+    assert_node(walker.currentNode, { type: Element, id: 'root' });
+    assert_node(walker.firstChild(), { type: Element, id: 'A1' });
+    assert_node(walker.currentNode, { type: Element, id: 'A1' });
+    assert_node(walker.nextNode(), { type: Element, id: 'B1' });
+    assert_node(walker.currentNode, { type: Element, id: 'B1' });
+    assert_node(walker.nextNode(), { type: Element, id: 'C1' });
+    assert_node(walker.currentNode, { type: Element, id: 'C1' });
+    assert_node(walker.nextNode(), { type: Element, id: 'B2' });
+    assert_node(walker.currentNode, { type: Element, id: 'B2' });
+    assert_node(walker.previousNode(), { type: Element, id: 'C1' });
+    assert_node(walker.currentNode, { type: Element, id: 'C1' });
+}, 'Test that previousNode properly respects the filter.');
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkerpreviousSiblingLastChildSkipexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomtraversalTreeWalkerpreviousSiblingLastChildSkipexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-previousSiblingLastChildSkip-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/traversal/TreeWalker-previousSiblingLastChildSkip-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-previousSiblingLastChildSkip-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-previousSiblingLastChildSkip-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+Test that previousSibling properly respects the filter.
+
+
+PASS Test that previousSibling properly respects the filter. 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkerpreviousSiblingLastChildSkiphtmlfromrev189470trunkLayoutTestshttptestsw3cdomtraversalTreeWalkerpreviousSiblingLastChildSkiphtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-previousSiblingLastChildSkip.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/traversal/TreeWalker-previousSiblingLastChildSkip.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-previousSiblingLastChildSkip.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-previousSiblingLastChildSkip.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,92 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;!--
+Test adapted from https://mxr.mozilla.org/chromium/source/src/third_party/WebKit/LayoutTests/fast/dom/TreeWalker/script-tests/previousSiblingLastChildSkip.js
+--&gt;
+&lt;head&gt;
+&lt;title&gt;TreeWalker: previousSiblingLastChildSkip&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;traversal-support.js&quot;&gt;&lt;/script&gt;
+&lt;link rel=&quot;stylesheet&quot; href=&quot;/resources/testharness.css&quot;&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p&gt;Test that previousSibling properly respects the filter.&lt;/p&gt;
+&lt;script&gt;
+var testElement;
+setup(function() {
+    testElement = document.createElement(&quot;div&quot;);
+    testElement.id = 'root';
+    // testElement.innerHTML='&lt;div id=&quot;A1&quot;&gt;&lt;div id=&quot;B1&quot;&gt;&lt;div id=&quot;C1&quot;&gt;&lt;/div&gt;&lt;div id=&quot;C2&quot;&gt;&lt;div id=&quot;D1&quot;&gt;&lt;/div&gt;&lt;div id=&quot;D2&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id=&quot;B2&quot;&gt;&lt;div id=&quot;C3&quot;&gt;&lt;/div&gt;&lt;div id=&quot;C4&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;';
+    // testElement.innerHTML='
+    // &lt;div id=&quot;A1&quot;&gt;
+    //   &lt;div id=&quot;B1&quot;&gt;
+    //     &lt;div id=&quot;C1&quot;&gt;
+    //     &lt;/div&gt;
+    //     &lt;div id=&quot;C2&quot;&gt;
+    //       &lt;div id=&quot;D1&quot;&gt;
+    //       &lt;/div&gt;
+    //       &lt;div id=&quot;D2&quot;&gt;
+    //       &lt;/div&gt;
+    //     &lt;/div&gt;
+    //   &lt;/div&gt;
+    //   &lt;div id=&quot;B2&quot;&gt;
+    //     &lt;div id=&quot;C3&quot;&gt;
+    //     &lt;/div&gt;
+    //     &lt;div id=&quot;C4&quot;&gt;
+    //     &lt;/div&gt;
+    //   &lt;/div&gt;
+    // &lt;/div&gt;';
+
+    // XXX for Servo, build the tree without using innerHTML
+    var a1 = document.createElement(&quot;div&quot;); a1.id = &quot;A1&quot;;
+    var b1 = document.createElement(&quot;div&quot;); b1.id = &quot;B1&quot;;
+    var b2 = document.createElement(&quot;div&quot;); b2.id = &quot;B2&quot;;
+    var c1 = document.createElement(&quot;div&quot;); c1.id = &quot;C1&quot;;
+    var c2 = document.createElement(&quot;div&quot;); c2.id = &quot;C2&quot;;
+    var c3 = document.createElement(&quot;div&quot;); c3.id = &quot;C3&quot;;
+    var c4 = document.createElement(&quot;div&quot;); c4.id = &quot;C4&quot;;
+    var d1 = document.createElement(&quot;div&quot;); d1.id = &quot;D1&quot;;
+    var d2 = document.createElement(&quot;div&quot;); d2.id = &quot;D2&quot;;
+
+    testElement.appendChild(a1);
+    a1.appendChild(b1);
+    a1.appendChild(b2);
+    b1.appendChild(c1);
+    b1.appendChild(c2);
+    b2.appendChild(c3);
+    b2.appendChild(c4);
+    c2.appendChild(d1);
+    c2.appendChild(d2);
+});
+
+test(function()
+{
+    function filter(node)
+    {
+        if (node.id == &quot;B1&quot;)
+            return NodeFilter.FILTER_SKIP;
+        return NodeFilter.FILTER_ACCEPT;
+    }
+
+    var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, filter);
+    assert_node(walker.currentNode, { type: Element, id: 'root' });
+    assert_node(walker.firstChild(), { type: Element, id: 'A1' });
+    assert_node(walker.currentNode, { type: Element, id: 'A1' });
+    assert_node(walker.nextNode(), { type: Element, id: 'C1' });
+    assert_node(walker.currentNode, { type: Element, id: 'C1' });
+    assert_node(walker.nextNode(), { type: Element, id: 'C2' });
+    assert_node(walker.currentNode, { type: Element, id: 'C2' });
+    assert_node(walker.nextNode(), { type: Element, id: 'D1' });
+    assert_node(walker.currentNode, { type: Element, id: 'D1' });
+    assert_node(walker.nextNode(), { type: Element, id: 'D2' });
+    assert_node(walker.currentNode, { type: Element, id: 'D2' });
+    assert_node(walker.nextNode(), { type: Element, id: 'B2' });
+    assert_node(walker.currentNode, { type: Element, id: 'B2' });
+    assert_node(walker.previousSibling(), { type: Element, id: 'C2' });
+    assert_node(walker.currentNode, { type: Element, id: 'C2' });
+}, 'Test that previousSibling properly respects the filter.');
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkertraversalrejectexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomtraversalTreeWalkertraversalrejectexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-traversal-reject-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/traversal/TreeWalker-traversal-reject-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-traversal-reject-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-traversal-reject-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+Test TreeWalker with rejection
+
+
+PASS Testing nextNode 
+PASS Testing firstChild 
+PASS Testing nextSibling 
+PASS Testing parentNode 
+PASS Testing previousSibling 
+PASS Testing previousNode 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkertraversalrejecthtmlfromrev189470trunkLayoutTestshttptestsw3cdomtraversalTreeWalkertraversalrejecthtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-traversal-reject.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/traversal/TreeWalker-traversal-reject.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-traversal-reject.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-traversal-reject.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,110 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;!--
+Test adapted from https://mxr.mozilla.org/chromium/source/src/third_party/WebKit/LayoutTests/fast/dom/TreeWalker/script-tests/traversal-reject.js
+--&gt;
+&lt;head&gt;
+&lt;title&gt;TreeWalker: traversal-reject&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;traversal-support.js&quot;&gt;&lt;/script&gt;
+&lt;link rel=&quot;stylesheet&quot; href=&quot;/resources/testharness.css&quot;&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p&gt;Test TreeWalker with rejection&lt;/p&gt;
+&lt;script&gt;
+var testElement;
+setup(function() {
+    testElement = document.createElement(&quot;div&quot;);
+    testElement.id = 'root';
+    //testElement.innerHTML='&lt;div id=&quot;A1&quot;&gt;  &lt;div id=&quot;B1&quot;&gt;  &lt;div id=&quot;C1&quot;&gt;&lt;/div&gt;  &lt;/div&gt;  &lt;div id=&quot;B2&quot;&gt;&lt;/div&gt;&lt;div id=&quot;B3&quot;&gt;&lt;/div&gt;  &lt;/div&gt;';
+    // &lt;div id=&quot;A1&quot;&gt;
+    //   &lt;div id=&quot;B1&quot;&gt;
+    //     &lt;div id=&quot;C1&quot;&gt;&lt;/div&gt;
+    //   &lt;/div&gt;
+    //   &lt;div id=&quot;B2&quot;&gt;&lt;/div&gt;
+    //   &lt;div id=&quot;B3&quot;&gt;&lt;/div&gt;
+    // &lt;/div&gt;
+
+
+    // XXX for Servo, build the tree without using innerHTML
+    var a1 = document.createElement(&quot;div&quot;); a1.id = &quot;A1&quot;;
+    var b1 = document.createElement(&quot;div&quot;); b1.id = &quot;B1&quot;;
+    var b2 = document.createElement(&quot;div&quot;); b2.id = &quot;B2&quot;;
+    var b3 = document.createElement(&quot;div&quot;); b3.id = &quot;B3&quot;;
+    var c1 = document.createElement(&quot;div&quot;); c1.id = &quot;C1&quot;;
+
+    testElement.appendChild(a1);
+    a1.appendChild(b1);
+    a1.appendChild(b2);
+    a1.appendChild(b3);
+    b1.appendChild(c1);
+});
+
+var rejectB1Filter = {
+  acceptNode: function(node) {
+    if (node.id == 'B1')
+      return NodeFilter.FILTER_REJECT;
+
+    return NodeFilter.FILTER_ACCEPT;
+  }
+}
+
+var skipB2Filter = {
+  acceptNode: function(node) {
+    if (node.id == 'B2')
+      return NodeFilter.FILTER_SKIP;
+
+    return NodeFilter.FILTER_ACCEPT;
+  }
+}
+
+test(function()
+{
+    var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, rejectB1Filter);
+    assert_node(walker.nextNode(), { type: Element, id: 'A1' });
+    assert_node(walker.nextNode(), { type: Element, id: 'B2' });
+    assert_node(walker.nextNode(), { type: Element, id: 'B3' });
+}, 'Testing nextNode');
+
+test(function()
+{
+    var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, rejectB1Filter);
+    assert_node(walker.firstChild(), { type: Element, id: 'A1' });
+    assert_node(walker.firstChild(), { type: Element, id: 'B2' });
+}, 'Testing firstChild');
+
+test(function()
+{
+    var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, skipB2Filter);
+    assert_node(walker.firstChild(), { type: Element, id: 'A1' });
+    assert_node(walker.firstChild(), { type: Element, id: 'B1' });
+    assert_node(walker.nextSibling(), { type: Element, id: 'B3' });
+}, 'Testing nextSibling');
+
+test(function()
+{
+    var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, rejectB1Filter);
+    walker.currentNode = testElement.querySelectorAll('#C1')[0];
+    assert_node(walker.parentNode(), { type: Element, id: 'A1' });
+}, 'Testing parentNode');
+
+test(function()
+{
+    var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, skipB2Filter);
+    walker.currentNode = testElement.querySelectorAll('#B3')[0];
+    assert_node(walker.previousSibling(), { type: Element, id: 'B1' });
+}, 'Testing previousSibling');
+
+test(function()
+{
+    var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, rejectB1Filter);
+    walker.currentNode = testElement.querySelectorAll('#B3')[0];
+    assert_node(walker.previousNode(), { type: Element, id: 'B2' });
+    assert_node(walker.previousNode(), { type: Element, id: 'A1' });
+}, 'Testing previousNode');
+
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkertraversalskipexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomtraversalTreeWalkertraversalskipexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-traversal-skip-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/traversal/TreeWalker-traversal-skip-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-traversal-skip-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-traversal-skip-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+Test TreeWalker with skipping
+
+
+PASS Testing nextNode 
+PASS Testing firstChild 
+PASS Testing nextSibling 
+PASS Testing parentNode 
+PASS Testing previousSibling 
+PASS Testing previousNode 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkertraversalskipmostexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomtraversalTreeWalkertraversalskipmostexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-traversal-skip-most-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/traversal/TreeWalker-traversal-skip-most-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-traversal-skip-most-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-traversal-skip-most-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,6 @@
</span><ins>+Test TreeWalker with skipping
+
+
+PASS Testing nextSibling 
+PASS Testing previousSibling 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkertraversalskipmosthtmlfromrev189470trunkLayoutTestshttptestsw3cdomtraversalTreeWalkertraversalskipmosthtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-traversal-skip-most.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/traversal/TreeWalker-traversal-skip-most.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-traversal-skip-most.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-traversal-skip-most.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,67 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;!--
+Test adapted from https://mxr.mozilla.org/chromium/source/src/third_party/WebKit/LayoutTests/fast/dom/TreeWalker/script-tests/traversal-skip-most.js
+--&gt;
+&lt;head&gt;
+&lt;title&gt;TreeWalker: traversal-skip-most&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;traversal-support.js&quot;&gt;&lt;/script&gt;
+&lt;link rel=&quot;stylesheet&quot; href=&quot;/resources/testharness.css&quot;&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p&gt;Test TreeWalker with skipping&lt;/p&gt;
+&lt;script&gt;
+var testElement;
+setup(function() {
+    testElement = document.createElement(&quot;div&quot;);
+    testElement.id = 'root';
+    // testElement.innerHTML='&lt;div id=&quot;A1&quot;&gt;&lt;div id=&quot;B1&quot; class=&quot;keep&quot;&gt;&lt;/div&gt;&lt;div id=&quot;B2&quot;&gt;this text matters&lt;/div&gt;&lt;div id=&quot;B3&quot; class=&quot;keep&quot;&gt;&lt;/div&gt;&lt;/div&gt;';
+    // &lt;div id=&quot;A1&quot;&gt;
+    //   &lt;div id=&quot;B1&quot; class=&quot;keep&quot;&gt;&lt;/div&gt;
+    //   &lt;div id=&quot;B2&quot;&gt;this text matters&lt;/div&gt;
+    //   &lt;div id=&quot;B3&quot; class=&quot;keep&quot;&gt;&lt;/div&gt;
+    // &lt;/div&gt;
+
+
+    // XXX for Servo, build the tree without using innerHTML
+    var a1 = document.createElement(&quot;div&quot;); a1.id = &quot;A1&quot;;
+    var b1 = document.createElement(&quot;div&quot;); b1.id = &quot;B1&quot;; b1.className = &quot;keep&quot;;
+    var b2 = document.createElement(&quot;div&quot;); b2.id = &quot;B2&quot;;
+    var b3 = document.createElement(&quot;div&quot;); b3.id = &quot;B3&quot;; b3.className = &quot;keep&quot;;
+
+    testElement.appendChild(a1);
+    a1.appendChild(b1);
+    a1.appendChild(b2)
+        .appendChild(document.createTextNode(&quot;this text matters&quot;));
+    a1.appendChild(b3);
+});
+
+var filter = {
+  acceptNode: function(node) {
+    if (node.className == 'keep')
+      return NodeFilter.FILTER_ACCEPT;
+
+    return NodeFilter.FILTER_SKIP;
+  }
+}
+
+test(function()
+{
+    var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, filter);
+    assert_node(walker.firstChild(), { type: Element, id: 'B1' });
+    assert_node(walker.nextSibling(), { type: Element, id: 'B3' });
+}, 'Testing nextSibling');
+
+test(function()
+{
+    var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, filter);
+    walker.currentNode = testElement.querySelectorAll('#B3')[0];
+    assert_node(walker.previousSibling(), { type: Element, id: 'B1' });
+}, 'Testing previousSibling');
+
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkertraversalskiphtmlfromrev189470trunkLayoutTestshttptestsw3cdomtraversalTreeWalkertraversalskiphtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-traversal-skip.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/traversal/TreeWalker-traversal-skip.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-traversal-skip.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-traversal-skip.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,112 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;!--
+Test adapted from https://mxr.mozilla.org/chromium/source/src/third_party/WebKit/LayoutTests/fast/dom/TreeWalker/script-tests/traversal-skip.js
+--&gt;
+&lt;head&gt;
+&lt;title&gt;TreeWalker: traversal-skip&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;traversal-support.js&quot;&gt;&lt;/script&gt;
+&lt;link rel=&quot;stylesheet&quot; href=&quot;/resources/testharness.css&quot;&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p&gt;Test TreeWalker with skipping&lt;/p&gt;
+&lt;script&gt;
+var testElement;
+setup(function() {
+    testElement = document.createElement(&quot;div&quot;);
+    testElement.id = 'root';
+    // testElement.innerHTML='&lt;div id=&quot;A1&quot;&gt;  &lt;div id=&quot;B1&quot;&gt;  &lt;div id=&quot;C1&quot;&gt;&lt;/div&gt;  &lt;/div&gt;  &lt;div id=&quot;B2&quot;&gt;&lt;/div&gt;&lt;div id=&quot;B3&quot;&gt;&lt;/div&gt;  &lt;/div&gt;';
+    // &lt;div id=&quot;A1&quot;&gt;
+    //   &lt;div id=&quot;B1&quot;&gt;
+    //     &lt;div id=&quot;C1&quot;&gt;&lt;/div&gt;
+    //   &lt;/div&gt;
+    //   &lt;div id=&quot;B2&quot;&gt;&lt;/div&gt;
+    //   &lt;div id=&quot;B3&quot;&gt;&lt;/div&gt;
+    // &lt;/div&gt;
+
+
+    // XXX for Servo, build the tree without using innerHTML
+    var a1 = document.createElement(&quot;div&quot;); a1.id = &quot;A1&quot;;
+    var b1 = document.createElement(&quot;div&quot;); b1.id = &quot;B1&quot;;
+    var b2 = document.createElement(&quot;div&quot;); b2.id = &quot;B2&quot;;
+    var b3 = document.createElement(&quot;div&quot;); b3.id = &quot;B3&quot;;
+    var c1 = document.createElement(&quot;div&quot;); c1.id = &quot;C1&quot;;
+
+    testElement.appendChild(a1);
+    a1.appendChild(b1);
+    a1.appendChild(b2);
+    a1.appendChild(b3);
+    b1.appendChild(c1);
+});
+
+var skipB1Filter = {
+  acceptNode: function(node) {
+    if (node.id == 'B1')
+      return NodeFilter.FILTER_SKIP;
+
+    return NodeFilter.FILTER_ACCEPT;
+  }
+}
+
+var skipB2Filter = {
+  acceptNode: function(node) {
+    if (node.id == 'B2')
+      return NodeFilter.FILTER_SKIP;
+
+    return NodeFilter.FILTER_ACCEPT;
+  }
+}
+
+test(function()
+{
+    var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, skipB1Filter);
+    assert_node(walker.nextNode(), { type: Element, id: 'A1' });
+    assert_node(walker.nextNode(), { type: Element, id: 'C1' });
+    assert_node(walker.nextNode(), { type: Element, id: 'B2' });
+    assert_node(walker.nextNode(), { type: Element, id: 'B3' });
+}, 'Testing nextNode');
+
+test(function()
+{
+    var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, skipB1Filter);
+    assert_node(walker.firstChild(), { type: Element, id: 'A1' });
+    assert_node(walker.firstChild(), { type: Element, id: 'C1' });
+}, 'Testing firstChild');
+
+test(function()
+{
+    var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, skipB2Filter);
+    assert_node(walker.firstChild(), { type: Element, id: 'A1' });
+    assert_node(walker.firstChild(), { type: Element, id: 'B1' });
+    assert_node(walker.nextSibling(), { type: Element, id: 'B3' });
+}, 'Testing nextSibling');
+
+test(function()
+{
+    var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, skipB1Filter);
+    walker.currentNode = testElement.querySelectorAll('#C1')[0];
+    assert_node(walker.parentNode(), { type: Element, id: 'A1' });
+}, 'Testing parentNode');
+
+test(function()
+{
+    var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, skipB2Filter);
+    walker.currentNode = testElement.querySelectorAll('#B3')[0];
+    assert_node(walker.previousSibling(), { type: Element, id: 'B1' });
+}, 'Testing previousSibling');
+
+test(function()
+{
+    var walker = document.createTreeWalker(testElement, NodeFilter.SHOW_ELEMENT, skipB1Filter);
+    walker.currentNode = testElement.querySelectorAll('#B3')[0];
+    assert_node(walker.previousNode(), { type: Element, id: 'B2' });
+    assert_node(walker.previousNode(), { type: Element, id: 'C1' });
+    assert_node(walker.previousNode(), { type: Element, id: 'A1' });
+}, 'Testing previousNode');
+
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkerwalkingoutsideatreeexpectedtxtfromrev189470trunkLayoutTestshttptestsw3cdomtraversalTreeWalkerwalkingoutsideatreeexpectedtxt"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-walking-outside-a-tree-expected.txt (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/traversal/TreeWalker-walking-outside-a-tree-expected.txt) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-walking-outside-a-tree-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-walking-outside-a-tree-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,5 @@
</span><ins>+[Acid3 - Test 006a] walking outside a tree
+
+
+PASS walking outside a tree 
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkerwalkingoutsideatreehtmlfromrev189470trunkLayoutTestshttptestsw3cdomtraversalTreeWalkerwalkingoutsideatreehtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-walking-outside-a-tree.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/traversal/TreeWalker-walking-outside-a-tree.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-walking-outside-a-tree.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker-walking-outside-a-tree.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,41 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+&lt;html&gt;
+&lt;!--
+Test adapted from https://github.com/operasoftware/presto-testo/blob/master/core/standards/acid3/individual/006a.html
+--&gt;
+&lt;head&gt;
+&lt;title&gt;TreeWalker: walking-outside-a-tree&lt;/title&gt;
+&lt;script src=&quot;/resources/testharness.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;/resources/testharnessreport.js&quot;&gt;&lt;/script&gt;
+&lt;script src=&quot;traversal-support.js&quot;&gt;&lt;/script&gt;
+&lt;link rel=&quot;stylesheet&quot; href=&quot;/resources/testharness.css&quot;&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;/head&gt;
+&lt;body&gt;
+&lt;p&gt;[Acid3 - Test 006a] walking outside a tree&lt;/p&gt;
+&lt;script&gt;
+test(function () {
+    // test 6: walking outside a tree
+    var doc = document.createElement(&quot;div&quot;);
+    var head = document.createElement('head');
+    var title = document.createElement('title');
+    var body = document.createElement('body');
+    var p = document.createElement('p');
+    doc.appendChild(head);
+    head.appendChild(title);
+    doc.appendChild(body);
+    body.appendChild(p);
+
+    var w = document.createTreeWalker(body, 0xFFFFFFFF, null);
+    doc.removeChild(body);
+    assert_equals(w.lastChild(), p, &quot;TreeWalker failed after removing the current node from the tree&quot;);
+    doc.appendChild(p);
+    assert_equals(w.previousNode(), title, &quot;failed to handle regrafting correctly&quot;);
+    p.appendChild(body);
+    assert_equals(w.nextNode(), p, &quot;couldn't retrace steps&quot;);
+    assert_equals(w.nextNode(), body, &quot;couldn't step back into root&quot;);
+    assert_equals(w.previousNode(), null, &quot;root didn't retake its rootish position&quot;);
+}, &quot;walking outside a tree&quot;);
+&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalTreeWalkerhtmlfromrev189470trunkLayoutTestshttptestsw3cdomtraversalTreeWalkerhtml"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker.html (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/traversal/TreeWalker.html) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker.html                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/TreeWalker.html        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,298 @@
</span><ins>+&lt;!doctype html&gt;
+&lt;title&gt;TreeWalker tests&lt;/title&gt;
+&lt;link rel=&quot;author&quot; title=&quot;Aryeh Gregor&quot; href=ayg@aryeh.name&gt;
+&lt;meta name=timeout content=long&gt;
+&lt;div id=log&gt;&lt;/div&gt;
+&lt;script src=/resources/testharness.js&gt;&lt;/script&gt;
+&lt;script src=/resources/testharnessreport.js&gt;&lt;/script&gt;
+&lt;script src=../common.js&gt;&lt;/script&gt;
+&lt;script&gt;
+&quot;use strict&quot;;
+
+// TODO .previousNode, .nextNode
+
+function filterNode(node, whatToShow, filter) {
+    // &quot;If active flag is set throw an &quot;InvalidStateError&quot;.&quot;
+    // Ignore active flag for these tests, we aren't calling recursively
+    // TODO Test me
+
+    // &quot;Let n be node's nodeType attribute value minus 1.&quot;
+    var n = node.nodeType - 1;
+
+    // &quot;If the nth bit (where 0 is the least significant bit) of whatToShow is
+    // not set, return FILTER_SKIP.&quot;
+    if (!(whatToShow &amp; (1 &lt;&lt; n))) {
+        return NodeFilter.FILTER_SKIP;
+    }
+
+    // &quot;If filter is null, return FILTER_ACCEPT.&quot;
+    if (!filter) {
+        return NodeFilter.FILTER_ACCEPT;
+    }
+
+    // &quot;Set the active flag.&quot;
+    //
+    // &quot;Let result be the return value of invoking filter.&quot;
+    //
+    // &quot;Unset the active flag.&quot;
+    //
+    // &quot;If an exception was thrown, re-throw the exception.&quot;
+    // TODO Test me
+    //
+    // &quot;Return result.&quot;
+    return filter(node);
+}
+
+function testTraverseChildren(type, walker, root, whatToShow, filter) {
+    // TODO We don't test .currentNode other than the root
+    walker.currentNode = root;
+    assert_equals(walker.currentNode, root, &quot;Setting .currentNode&quot;);
+
+    var expectedReturn = null;
+    var expectedCurrentNode = root;
+
+    // &quot;To traverse children of type type, run these steps:
+    //
+    // &quot;Let node be the value of the currentNode attribute.&quot;
+    var node = walker.currentNode;
+
+    // &quot;Set node to node's first child if type is first, and node's last child
+    // if type is last.&quot;
+    node = type == &quot;first&quot; ? node.firstChild : node.lastChild;
+
+    // &quot;Main: While node is not null, run these substeps:&quot;
+    while (node) {
+        // &quot;Filter node and let result be the return value.&quot;
+        var result = filterNode(node, whatToShow, filter);
+
+        // &quot;If result is FILTER_ACCEPT, then set the currentNode attribute to
+        // node and return node.&quot;
+        if (result == NodeFilter.FILTER_ACCEPT) {
+            expectedCurrentNode = expectedReturn = node;
+            break;
+        }
+
+        // &quot;If result is FILTER_SKIP, run these subsubsteps:&quot;
+        if (result == NodeFilter.FILTER_SKIP) {
+            // &quot;Let child be node's first child if type is first, and node's
+            // last child if type is last.&quot;
+            var child = type == &quot;first&quot; ? node.firstChild : node.lastChild;
+
+            // &quot;If child is not null, set node to child and goto Main.&quot;
+            if (child) {
+                node = child;
+                continue;
+            }
+        }
+
+        // &quot;While node is not null, run these subsubsteps:&quot;
+        while (node) {
+            // &quot;Let sibling be node's next sibling if type is first, and node's
+            // previous sibling if type is last.&quot;
+            var sibling = type == &quot;first&quot; ? node.nextSibling
+                : node.previousSibling;
+
+            // &quot;If sibling is not null, set node to sibling and goto Main.&quot;
+            if (sibling) {
+                node = sibling;
+                break;
+            }
+
+            // &quot;Let parent be node's parent.&quot;
+            var parent = node.parentNode;
+
+            // &quot;If parent is null, parent is root, or parent is currentNode
+            // attribute's value, return null.&quot;
+            if (!parent || parent == root || parent == walker.currentNode) {
+                expectedReturn = node = null;
+                break;
+            } else {
+            // &quot;Otherwise, set node to parent.&quot;
+                node = parent;
+            }
+        }
+    }
+
+    if (type == &quot;first&quot;) {
+        assert_equals(walker.firstChild(), expectedReturn, &quot;.firstChild()&quot;);
+        assert_equals(walker.currentNode, expectedCurrentNode,
+            &quot;.currentNode after .firstChild()&quot;);
+    } else {
+        assert_equals(walker.lastChild(), expectedReturn, &quot;.lastChild()&quot;);
+        assert_equals(walker.currentNode, expectedCurrentNode,
+        &quot;.currentNode after .lastChild()&quot;);
+    }
+}
+
+function testTraverseSiblings(type, walker, root, whatToShow, filter) {
+    // TODO We don't test .currentNode other than the root's first or last child
+    if (!root.firstChild) {
+        // Nothing much to test
+
+        walker.currentNode = root;
+        assert_equals(walker.currentNode, root, &quot;Setting .currentNode&quot;);
+
+        if (type == &quot;next&quot;) {
+            assert_equals(walker.nextSibling(), null, &quot;.nextSibling()&quot;);
+            assert_equals(walker.currentNode, root,
+                &quot;.currentNode after .nextSibling()&quot;)
+        } else {
+            assert_equals(walker.previousSibling(), null, &quot;.previousSibling()&quot;);
+            assert_equals(walker.currentNode, root,
+                &quot;.currentNode after .previousSibling()&quot;)
+        }
+        return;
+    }
+
+    if (type == &quot;next&quot;) {
+        walker.currentNode = root.firstChild;
+        assert_equals(walker.currentNode, root.firstChild,
+            &quot;Setting .currentNode&quot;);
+    } else {
+        walker.currentNode = root.lastChild;
+        assert_equals(walker.currentNode, root.lastChild,
+            &quot;Setting .currentNode&quot;);
+    }
+
+    var expectedReturn = null;
+    var expectedCurrentNode = type == &quot;next&quot; ? root.firstChild : root.lastChild;
+
+    // &quot;To traverse siblings of type type run these steps:&quot;
+    (function() {
+        // &quot;Let node be the value of the currentNode attribute.&quot;
+        var node = type == &quot;next&quot; ? root.firstChild : root.lastChild;
+
+        // &quot;If node is root, return null.
+        //
+        // &quot;Run these substeps:
+        do {
+            // &quot;Let sibling be node's next sibling if type is next, and node's
+            // previous sibling if type is previous.&quot;
+            var sibling = type == &quot;next&quot; ? node.nextSibling :
+                node.previousSibling;
+
+            // &quot;While sibling is not null, run these subsubsteps:&quot;
+            while (sibling) {
+                // &quot;Set node to sibling.&quot;
+                node = sibling;
+
+                // &quot;Filter node and let result be the return value.&quot;
+                var result = filterNode(node, whatToShow, filter);
+
+                // &quot;If result is FILTER_ACCEPT, then set the currentNode
+                // attribute to node and return node.&quot;
+                if (result == NodeFilter.FILTER_ACCEPT) {
+                    expectedCurrentNode = expectedReturn = node;
+                    return;
+                }
+
+                // &quot;Set sibling to node's first child if type is next, and
+                // node's last child if type is previous.&quot;
+                sibling = type == &quot;next&quot; ? node.firstChild : node.lastChild;
+
+                // &quot;If result is FILTER_REJECT or sibling is null, then set
+                // sibling to node's next sibling if type is next, and node's
+                // previous sibling if type is previous.&quot;
+                if (result == NodeFilter.FILTER_REJECT || !sibling) {
+                    sibling = type == &quot;next&quot; ? node.nextSibling :
+                        node.previousSibling;
+                }
+            }
+
+            // &quot;Set node to its parent.&quot;
+            node = node.parentNode;
+
+            // &quot;If node is null or is root, return null.
+            if (!node || node == root) {
+                return;
+            }
+            // &quot;Filter node and if the return value is FILTER_ACCEPT, then
+            // return null.&quot;
+            if (filterNode(node, whatToShow, filter)) {
+                return;
+            }
+
+            // &quot;Run these substeps again.&quot;
+        } while (true);
+    })();
+
+    if (type == &quot;next&quot;) {
+        assert_equals(walker.nextSibling(), expectedReturn, &quot;.nextSibling()&quot;);
+        assert_equals(walker.currentNode, expectedCurrentNode,
+            &quot;.currentNode after .nextSibling()&quot;);
+    } else {
+        assert_equals(walker.previousSibling(), expectedReturn, &quot;.previousSibling()&quot;);
+        assert_equals(walker.currentNode, expectedCurrentNode,
+            &quot;.currentNode after .previousSibling()&quot;);
+    }
+}
+
+function testWalker(root, whatToShow, filter) {
+    var walker = document.createTreeWalker(root, whatToShow, filter);
+
+    assert_equals(walker.root, root, &quot;.root&quot;);
+    assert_equals(walker.whatToShow, whatToShow, &quot;.whatToShow&quot;);
+    assert_equals(walker.filter, filter, &quot;.filter&quot;);
+    assert_equals(walker.currentNode, root, &quot;.currentNode&quot;);
+
+    var expectedReturn = null;
+    var expectedCurrentNode = walker.currentNode;
+    // &quot;The parentNode() method must run these steps:&quot;
+    //
+    // &quot;Let node be the value of the currentNode attribute.&quot;
+    var node = walker.currentNode;
+
+    // &quot;While node is not null and is not root, run these substeps:&quot;
+    while (node &amp;&amp; node != root) {
+        // &quot;Let node be node's parent.&quot;
+        node = node.parentNode;
+
+        // &quot;If node is not null and filtering node returns FILTER_ACCEPT, then
+        // set the currentNode attribute to node, return node.&quot;
+        if (node &amp;&amp; filterNode(node, whatToShow, filter) ==
+        NodeFilter.FILTER_ACCEPT) {
+            expectedCurrentNode = expectedReturn = node;
+        }
+    }
+    assert_equals(walker.parentNode(), expectedReturn, &quot;.parentNode()&quot;);
+    assert_equals(walker.currentNode, expectedCurrentNode,
+        &quot;.currentNode after .parentNode()&quot;);
+
+    testTraverseChildren(&quot;first&quot;, walker, root, whatToShow, filter);
+    testTraverseChildren(&quot;last&quot;, walker, root, whatToShow, filter);
+
+    testTraverseSiblings(&quot;next&quot;, walker, root, whatToShow, filter);
+    testTraverseSiblings(&quot;previous&quot;, walker, root, whatToShow, filter);
+}
+
+var whatToShows = [
+    &quot;0&quot;,
+    &quot;0xFFFFFFFF&quot;,
+    &quot;NodeFilter.SHOW_ELEMENT&quot;,
+    &quot;NodeFilter.SHOW_ATTRIBUTE&quot;,
+    &quot;NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_DOCUMENT&quot;,
+];
+
+var callbacks = [
+    &quot;null&quot;,
+    &quot;(function(node) { return true })&quot;,
+    &quot;(function(node) { return false })&quot;,
+    &quot;(function(node) { return node.nodeName[0] == '#' })&quot;,
+];
+
+var tests = [];
+for (var i = 0; i &lt; testNodes.length; i++) {
+    for (var j = 0; j &lt; whatToShows.length; j++) {
+        for (var k = 0; k &lt; callbacks.length; k++) {
+            tests.push([
+                &quot;document.createTreeWalker(&quot; + testNodes[i] +
+                    &quot;, &quot; + whatToShows[j] + &quot;, &quot; + callbacks[k] + &quot;)&quot;,
+                eval(testNodes[i]), eval(whatToShows[j]), eval(callbacks[k])
+            ]);
+        }
+    }
+}
+generate_tests(testWalker, tests);
+
+testDiv.style.display = &quot;none&quot;;
+&lt;/script&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversaltraversalsupportjsfromrev189470trunkLayoutTestshttptestsw3cdomtraversaltraversalsupportjs"></a>
<div class="copfile"><h4>Copied: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/traversal-support.js (from rev 189470, trunk/LayoutTests/http/tests/w3c/dom/traversal/traversal-support.js) (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/traversal-support.js                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/traversal-support.js        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,10 @@
</span><ins>+// |expected| should be an object indicating the expected type of node.
+function assert_node(actual, expected)
+{
+    assert_true(actual instanceof expected.type,
+                'Node type mismatch: actual = ' + actual.nodeType + ', expected = ' + expected.nodeType);
+    if (typeof(expected.id) !== 'undefined')
+        assert_equals(actual.id, expected.id);
+    if (typeof(expected.nodeValue) !== 'undefined')
+        assert_equals(actual.nodeValue, expected.nodeValue);
+}
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished001expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/001-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/001-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/001-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x41
+  RenderBlock {html} at (0,0) size 800x41
+    RenderBody {body} at (8,13) size 784x15
+      RenderBlock {pre} at (0,0) size 784x15
+        RenderText {#text} at (0,0) size 32x15
+          text run at (0,0) width 32: &quot;PASS&quot;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished001xml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/001.xml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/001.xml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/001.xml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,53 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+ &lt;head&gt;
+  &lt;title&gt;DOM Traversal: NodeIterator: Basics&lt;/title&gt;
+  &lt;script type=&quot;text/javascript&quot;&gt; &lt;![CDATA[
+    function doTest() {
+      var iterator = document.createNodeIterator(document, NodeFilter.SHOW_ALL, null, false);
+      var expected = new Array(9, // document
+                               1, // html
+                               3, 1, // head
+                               3, 1, 3, // title
+                               3, 1, 3, 4, // script and CDATA block
+                               3, 3, 1, // body
+                               3, 1, 3, // pre
+                               3, // &lt;/body&gt;
+                               3, 8, // &lt;!-- --&gt;
+                               3, 7, // &lt;? ?&gt;,
+                               3, 4, 3); // CDATA
+      var found = new Array();
+
+      // walk document
+      var node;
+      while (node = iterator.nextNode())
+        found.push(node.nodeType);
+
+      // check results
+      var errors = 0;
+      var s = '';
+      var length = (found.length &gt; expected.length) ? found.length : expected.length;
+      s += 'EXPECTED  FOUND\n';
+      for (var i = 0; i &lt; length; i += 1) {
+        s += '  ' + (expected[i] ? expected[i] : '-') +
+      '         ' + (found[i] ? found[i] : '-');
+        if (found[i] != expected[i]) {
+          s += '      MISMATCH';
+          errors += 1;
+        }
+        s += '\n';
+      }
+      var p = document.getElementsByTagNameNS('http://www.w3.org/1999/xhtml', 'pre')[0];
+      if (errors)
+        p.firstChild.data = 'FAIL: ' + errors + ' errors found:\n\n' + s;
+      else
+        p.firstChild.data = 'PASS';
+    }
+  ]]&gt;&lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body onload=&quot;doTest()&quot;&gt;
+  &lt;pre id=&quot;result&quot;&gt;FAIL: Script failed to run.&lt;/pre&gt;
+ &lt;/body&gt;
+ &lt;!-- some more nodes to test this: --&gt;
+ &lt;?test node?&gt;
+ &lt;![CDATA[]]&gt;
+&lt;/html&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished002expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/002-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/002-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/002-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x41
+  RenderBlock {html} at (0,0) size 800x41
+    RenderBody {body} at (8,13) size 784x15
+      RenderBlock {pre} at (0,0) size 784x15
+        RenderText {#text} at (0,0) size 32x15
+          text run at (0,0) width 32: &quot;PASS&quot;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished002xml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/002.xml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/002.xml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/002.xml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,54 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+ &lt;head&gt;
+  &lt;title&gt;DOM Traversal: NodeIterator: Basics Backwards&lt;/title&gt;
+  &lt;script type=&quot;text/javascript&quot;&gt; &lt;![CDATA[
+    function doTest() {
+      var iterator = document.createNodeIterator(document, NodeFilter.SHOW_ALL, null, false);
+      var expected = new Array(9, // document
+                               1, // html
+                               3, 1, // head
+                               3, 1, 3, // title
+                               3, 1, 3, 4, // script and CDATA block
+                               3, 3, 1, // body
+                               3, 1, 3, // pre
+                               3, // &lt;/body&gt;
+                               3, 8, // &lt;!-- --&gt;
+                               3, 7, // &lt;? ?&gt;,
+                               3, 4, 3); // CDATA
+      var found = new Array();
+
+      // walk document
+      var node;
+      while (node = iterator.nextNode());
+      while (node = iterator.previousNode())
+        found.unshift(node.nodeType);
+
+      // check results
+      var errors = 0;
+      var s = '';
+      var length = (found.length &gt; expected.length) ? found.length : expected.length;
+      s += 'EXPECTED  FOUND\n';
+      for (var i = 0; i &lt; length; i += 1) {
+        s += '  ' + (expected[i] ? expected[i] : '-') +
+      '         ' + (found[i] ? found[i] : '-');
+        if (found[i] != expected[i]) {
+          s += '      MISMATCH';
+          errors += 1;
+        }
+        s += '\n';
+      }
+      var p = document.getElementsByTagNameNS('http://www.w3.org/1999/xhtml', 'pre')[0];
+      if (errors)
+        p.firstChild.data = 'FAIL: ' + errors + ' errors found:\n\n' + s;
+      else
+        p.firstChild.data = 'PASS';
+    }
+  ]]&gt;&lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body onload=&quot;doTest()&quot;&gt;
+  &lt;pre id=&quot;result&quot;&gt;FAIL: Script failed to run.&lt;/pre&gt;
+ &lt;/body&gt;
+ &lt;!-- some more nodes to test this: --&gt;
+ &lt;?test node?&gt;
+ &lt;![CDATA[]]&gt;
+&lt;/html&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished003expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/003-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/003-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/003-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x44
+  RenderBlock {html} at (0,0) size 800x44
+    RenderBody {body} at (8,13) size 784x15
+      RenderBlock {pre} at (0,0) size 784x15
+        RenderText {#text} at (0,0) size 32x15
+          text run at (0,0) width 32: &quot;PASS&quot;
+      RenderBlock {p} at (0,31) size 784x0
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished003xml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/003.xml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/003.xml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/003.xml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,58 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+ &lt;head&gt;
+  &lt;title&gt;DOM Traversal: NodeIterator: Removal of nodes that should have no effect&lt;/title&gt;
+  &lt;!--
+   This tests these cases that should have no effect:
+    1. Remove a node unrelated to the reference node
+    2. Remove an ancestor of the root node
+    3. Remove the root node itself
+    4. Remove descendant of reference node
+  --&gt;
+  &lt;script type=&quot;text/javascript&quot;&gt; &lt;![CDATA[
+    var errors = 0;
+    var log = '';
+    function doTest() {
+      var iterator = document.createNodeIterator(document.getElementById('root'), NodeFilter.SHOW_ALL, null, false);
+      var root = document.getElementById('root');
+      var A = document.getElementById('A');
+      var B = document.getElementById('B');
+      var C = document.getElementById('C');
+      var D = document.getElementById('D');
+      var E = document.getElementById('E');
+      check(iterator.nextNode(), root);
+      remove(document.getElementById('X'));
+      check(iterator.nextNode(), A);
+      remove(document.getElementById('Y'));
+      check(iterator.nextNode(), B);
+      remove(root);
+      check(iterator.nextNode(), C);
+      remove(E);
+      check(iterator.nextNode(), D);
+      if (errors)
+        document.getElementById('result').firstChild.data = 'FAIL: ' + errors + ' errors:\n' + log;
+      else
+        document.getElementById('result').firstChild.data = 'PASS';
+    }
+    function check(a, b) {
+      if (!a) {
+        errors += 1;
+        log += 'Found null but expected ' + b + ' (' + b.id + ').\n';
+      } else if (a != b) {
+        errors += 1;
+        log += 'Found ' + a + ' (' + a.id + ') but expected ' + b + ' (' + b.id + ').\n';
+      }
+    }
+    function remove(a) {
+      if (!a) {
+        errors += 1;
+        log += 'Tried removing null node.\n';
+      } else
+      a.parentNode.removeChild(a);
+    }
+  ]]&gt;&lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body onload=&quot;doTest()&quot;&gt;
+  &lt;pre id=&quot;result&quot;&gt;FAIL: Script did not complete.&lt;/pre&gt;
+  &lt;p&gt;&lt;span id=&quot;X&quot;&gt;&lt;/span&gt;&lt;span id=&quot;Y&quot;&gt;&lt;span id=&quot;root&quot;&gt;&lt;span id=&quot;A&quot;&gt;&lt;span id=&quot;B&quot;&gt;&lt;span id=&quot;C&quot;&gt;&lt;span id=&quot;D&quot;&gt;&lt;span id=&quot;E&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished004expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/004-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/004-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/004-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x44
+  RenderBlock {html} at (0,0) size 800x44
+    RenderBody {body} at (8,13) size 784x15
+      RenderBlock {pre} at (0,0) size 784x15
+        RenderText {#text} at (0,0) size 32x15
+          text run at (0,0) width 32: &quot;PASS&quot;
+      RenderBlock {p} at (0,31) size 784x0
+        RenderInline {span} at (0,0) size 0x0
+          RenderInline {span} at (0,0) size 0x0
+          RenderInline {span} at (0,0) size 0x0
+            RenderInline {span} at (0,0) size 0x0
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished004xml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/004.xml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/004.xml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/004.xml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,49 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+ &lt;head&gt;
+  &lt;title&gt;DOM Traversal: NodeIterator: Removal of the Reference Node&lt;/title&gt;
+  &lt;script type=&quot;text/javascript&quot;&gt; &lt;![CDATA[
+    var errors = 0;
+    var log = '';
+    function doTest() {
+      var iterator = document.createNodeIterator(document.getElementById('root'), NodeFilter.SHOW_ALL, null, false);
+      var root = document.getElementById('root');
+      var A = document.getElementById('A');
+      var AA = document.getElementById('AA');
+      var B = document.getElementById('B');
+      var C = document.getElementById('C');
+      check(iterator.nextNode(), root);
+      check(iterator.nextNode(), A);
+      check(iterator.nextNode(), AA);
+      check(iterator.nextNode(), B);
+      remove(B);
+      check(iterator.previousNode(), AA);
+      remove(AA);
+      check(iterator.nextNode(), C);
+      if (errors)
+        document.getElementById('result').firstChild.data = 'FAIL: ' + errors + ' errors:\n' + log;
+      else
+        document.getElementById('result').firstChild.data = 'PASS';
+    }
+    function check(a, b) {
+      if (!a) {
+        errors += 1;
+        log += 'Found null but expected ' + b + ' (' + b.id + ').\n';
+      } else if (a != b) {
+        errors += 1;
+        log += 'Found ' + a + ' (' + a.id + ') but expected ' + b + ' (' + b.id + ').\n';
+      }
+    }
+    function remove(a) {
+      if (!a) {
+        errors += 1;
+        log += 'Tried removing null node.\n';
+      } else
+      a.parentNode.removeChild(a);
+    }
+  ]]&gt;&lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body onload=&quot;doTest()&quot;&gt;
+  &lt;pre id=&quot;result&quot;&gt;FAIL: Script did not complete.&lt;/pre&gt;
+  &lt;p&gt;&lt;span id=&quot;root&quot;&gt;&lt;span id=&quot;A&quot;&gt;&lt;span id=&quot;AA&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id=&quot;B&quot;&gt;&lt;/span&gt;&lt;span id=&quot;C&quot;&gt;&lt;span id=&quot;CC&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished005expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/005-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/005-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/005-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,15 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x44
+  RenderBlock {html} at (0,0) size 800x44
+    RenderBody {body} at (8,13) size 784x15
+      RenderBlock {pre} at (0,0) size 784x15
+        RenderText {#text} at (0,0) size 32x15
+          text run at (0,0) width 32: &quot;PASS&quot;
+      RenderBlock {p} at (0,31) size 784x0
+        RenderInline {span} at (0,0) size 0x0
+          RenderInline {span} at (0,0) size 0x0
+            RenderInline {span} at (0,0) size 0x0
+              RenderInline {span} at (0,0) size 0x0
+          RenderInline {span} at (0,0) size 0x0
+            RenderInline {span} at (0,0) size 0x0
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished005xml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/005.xml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/005.xml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/005.xml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,57 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+ &lt;head&gt;
+  &lt;title&gt;DOM Traversal: NodeIterator: Removal of the Reference Node (deep check)&lt;/title&gt;
+  &lt;script type=&quot;text/javascript&quot;&gt; &lt;![CDATA[
+    var errors = 0;
+    var log = '';
+    function doTest() {
+      var iterator = document.createNodeIterator(document.getElementById('root'), NodeFilter.SHOW_ALL, null, false);
+      var root = document.getElementById('root');
+      var A = document.getElementById('A');
+      var AA = document.getElementById('AA');
+      var B = document.getElementById('B');
+      var C = document.getElementById('C');
+      check(iterator.nextNode(), root);
+      check(iterator.nextNode(), A);
+      check(iterator.nextNode(), AA);
+      check(iterator.nextNode(), B);
+      remove(B);
+      var X = addChildTo(AA);
+      check(iterator.nextNode(), X);
+      check(iterator.previousNode(), X);
+      remove(X);
+      var Y = addChildTo(AA);
+      check(iterator.previousNode(), Y);
+      if (errors)
+        document.getElementById('result').firstChild.data = 'FAIL: ' + errors + ' errors:\n' + log;
+      else
+        document.getElementById('result').firstChild.data = 'PASS';
+    }
+    function check(a, b) {
+      if (!a) {
+        errors += 1;
+        log += 'Found null but expected ' + b + ' (' + b.id + ').\n';
+      } else if (a != b) {
+        errors += 1;
+        log += 'Found ' + a + ' (' + a.id + ') but expected ' + b + ' (' + b.id + ').\n';
+      }
+    }
+    function remove(a) {
+      if (!a) {
+        errors += 1;
+        log += 'Tried removing null node.\n';
+      } else
+      a.parentNode.removeChild(a);
+    }
+    function addChildTo(a) {
+      var x = document.createElementNS('http://www.w3.org/1999/xhtml', 'span');
+      a.appendChild(x);
+      return x;
+    }
+  ]]&gt;&lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body onload=&quot;doTest()&quot;&gt;
+  &lt;pre id=&quot;result&quot;&gt;FAIL: Script did not complete.&lt;/pre&gt;
+  &lt;p&gt;&lt;span id=&quot;root&quot;&gt;&lt;span id=&quot;A&quot;&gt;&lt;span id=&quot;AA&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id=&quot;B&quot;&gt;&lt;/span&gt;&lt;span id=&quot;C&quot;&gt;&lt;span id=&quot;CC&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished006expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/006-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/006-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/006-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x44
+  RenderBlock {html} at (0,0) size 800x44
+    RenderBody {body} at (8,13) size 784x15
+      RenderBlock {pre} at (0,0) size 784x15
+        RenderText {#text} at (0,0) size 32x15
+          text run at (0,0) width 32: &quot;PASS&quot;
+      RenderBlock {p} at (0,31) size 784x0
+        RenderInline {span} at (0,0) size 0x0
+          RenderInline {span} at (0,0) size 0x0
+          RenderInline {span} at (0,0) size 0x0
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished006xml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/006.xml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/006.xml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/006.xml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,47 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+ &lt;head&gt;
+  &lt;title&gt;DOM Traversal: NodeIterator: Removal of an ancestor of the Reference Node (forwards)&lt;/title&gt;
+  &lt;script type=&quot;text/javascript&quot;&gt; &lt;![CDATA[
+    var errors = 0;
+    var log = '';
+    function doTest() {
+      var iterator = document.createNodeIterator(document.getElementById('root'), NodeFilter.SHOW_ALL, null, false);
+      var root = document.getElementById('root');
+      var A = document.getElementById('A');
+      var B = document.getElementById('B');
+      var BB = document.getElementById('BB');
+      var C = document.getElementById('C');
+      check(iterator.nextNode(), root);
+      check(iterator.nextNode(), A);
+      check(iterator.nextNode(), B);
+      check(iterator.nextNode(), BB);
+      remove(B);
+      check(iterator.previousNode(), A);
+      if (errors)
+        document.getElementById('result').firstChild.data = 'FAIL: ' + errors + ' errors:\n' + log;
+      else
+        document.getElementById('result').firstChild.data = 'PASS';
+    }
+    function check(a, b) {
+      if (!a) {
+        errors += 1;
+        log += 'Found null but expected ' + b + ' (' + b.id + ').\n';
+      } else if (a != b) {
+        errors += 1;
+        log += 'Found ' + a + ' (' + a.id + ') but expected ' + b + ' (' + b.id + ').\n';
+      }
+    }
+    function remove(a) {
+      if (!a) {
+        errors += 1;
+        log += 'Tried removing null node.\n';
+      } else
+      a.parentNode.removeChild(a);
+    }
+  ]]&gt;&lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body onload=&quot;doTest()&quot;&gt;
+  &lt;pre id=&quot;result&quot;&gt;FAIL: Script did not complete.&lt;/pre&gt;
+  &lt;p&gt;&lt;span id=&quot;root&quot;&gt;&lt;span id=&quot;A&quot;&gt;&lt;/span&gt;&lt;span id=&quot;B&quot;&gt;&lt;span id=&quot;BB&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id=&quot;C&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished007expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/007-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/007-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/007-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x44
+  RenderBlock {html} at (0,0) size 800x44
+    RenderBody {body} at (8,13) size 784x15
+      RenderBlock {pre} at (0,0) size 784x15
+        RenderText {#text} at (0,0) size 32x15
+          text run at (0,0) width 32: &quot;PASS&quot;
+      RenderBlock {p} at (0,31) size 784x0
+        RenderInline {span} at (0,0) size 0x0
+          RenderInline {span} at (0,0) size 0x0
+            RenderInline {span} at (0,0) size 0x0
+          RenderInline {span} at (0,0) size 0x0
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished007xml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/007.xml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/007.xml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/007.xml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,54 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+ &lt;head&gt;
+  &lt;title&gt;DOM Traversal: NodeIterator: Removal of an ancestor of the Reference Node (forwards) (deep check)&lt;/title&gt;
+  &lt;script type=&quot;text/javascript&quot;&gt; &lt;![CDATA[
+    var errors = 0;
+    var log = '';
+    function doTest() {
+      var iterator = document.createNodeIterator(document.getElementById('root'), NodeFilter.SHOW_ALL, null, false);
+      var root = document.getElementById('root');
+      var A = document.getElementById('A');
+      var B = document.getElementById('B');
+      var BB = document.getElementById('BB');
+      var C = document.getElementById('C');
+      check(iterator.nextNode(), root);
+      check(iterator.nextNode(), A);
+      check(iterator.nextNode(), B);
+      check(iterator.nextNode(), BB);
+      remove(B);
+      var X = addChildTo(A);
+      check(iterator.nextNode(), X);
+      if (errors)
+        document.getElementById('result').firstChild.data = 'FAIL: ' + errors + ' errors:\n' + log;
+      else
+        document.getElementById('result').firstChild.data = 'PASS';
+    }
+    function check(a, b) {
+      if (!a) {
+        errors += 1;
+        log += 'Found null but expected ' + b + ' (' + b.id + ').\n';
+      } else if (a != b) {
+        errors += 1;
+        log += 'Found ' + a + ' (' + a.id + ') but expected ' + b + ' (' + b.id + ').\n';
+      }
+    }
+    function remove(a) {
+      if (!a) {
+        errors += 1;
+        log += 'Tried removing null node.\n';
+      } else
+      a.parentNode.removeChild(a);
+    }
+    function addChildTo(a) {
+      var x = document.createElementNS('http://www.w3.org/1999/xhtml', 'span');
+      x.id = 'X';
+      a.appendChild(x);
+      return x;
+    }
+  ]]&gt;&lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body onload=&quot;doTest()&quot;&gt;
+  &lt;pre id=&quot;result&quot;&gt;FAIL: Script did not complete.&lt;/pre&gt;
+  &lt;p&gt;&lt;span id=&quot;root&quot;&gt;&lt;span id=&quot;A&quot;&gt;&lt;/span&gt;&lt;span id=&quot;B&quot;&gt;&lt;span id=&quot;BB&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id=&quot;C&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished008expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/008-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/008-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/008-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,12 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x44
+  RenderBlock {html} at (0,0) size 800x44
+    RenderBody {body} at (8,13) size 784x15
+      RenderBlock {pre} at (0,0) size 784x15
+        RenderText {#text} at (0,0) size 32x15
+          text run at (0,0) width 32: &quot;PASS&quot;
+      RenderBlock {p} at (0,31) size 784x0
+        RenderInline {span} at (0,0) size 0x0
+          RenderInline {span} at (0,0) size 0x0
+          RenderInline {span} at (0,0) size 0x0
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished008xml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/008.xml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/008.xml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/008.xml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,48 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+ &lt;head&gt;
+  &lt;title&gt;DOM Traversal: NodeIterator: Removal of an ancestor of the Reference Node (backwards)&lt;/title&gt;
+  &lt;script type=&quot;text/javascript&quot;&gt; &lt;![CDATA[
+    var errors = 0;
+    var log = '';
+    function doTest() {
+      var iterator = document.createNodeIterator(document.getElementById('root'), NodeFilter.SHOW_ALL, null, false);
+      var root = document.getElementById('root');
+      var A = document.getElementById('A');
+      var B = document.getElementById('B');
+      var BB = document.getElementById('BB');
+      var C = document.getElementById('C');
+      check(iterator.nextNode(), root);
+      check(iterator.nextNode(), A);
+      check(iterator.nextNode(), B);
+      check(iterator.nextNode(), BB);
+      check(iterator.previousNode(), BB);
+      remove(B);
+      check(iterator.nextNode(), C);
+      if (errors)
+        document.getElementById('result').firstChild.data = 'FAIL: ' + errors + ' errors:\n' + log;
+      else
+        document.getElementById('result').firstChild.data = 'PASS';
+    }
+    function check(a, b) {
+      if (!a) {
+        errors += 1;
+        log += 'Found null but expected ' + b + ' (' + b.id + ').\n';
+      } else if (a != b) {
+        errors += 1;
+        log += 'Found ' + a + ' (' + a.id + ') but expected ' + b + ' (' + b.id + ').\n';
+      }
+    }
+    function remove(a) {
+      if (!a) {
+        errors += 1;
+        log += 'Tried removing null node.\n';
+      } else
+      a.parentNode.removeChild(a);
+    }
+  ]]&gt;&lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body onload=&quot;doTest()&quot;&gt;
+  &lt;pre id=&quot;result&quot;&gt;FAIL: Script did not complete.&lt;/pre&gt;
+  &lt;p&gt;&lt;span id=&quot;root&quot;&gt;&lt;span id=&quot;A&quot;&gt;&lt;/span&gt;&lt;span id=&quot;B&quot;&gt;&lt;span id=&quot;BB&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id=&quot;C&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished009expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/009-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/009-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/009-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,13 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x44
+  RenderBlock {html} at (0,0) size 800x44
+    RenderBody {body} at (8,13) size 784x15
+      RenderBlock {pre} at (0,0) size 784x15
+        RenderText {#text} at (0,0) size 32x15
+          text run at (0,0) width 32: &quot;PASS&quot;
+      RenderBlock {p} at (0,31) size 784x0
+        RenderInline {span} at (0,0) size 0x0
+          RenderInline {span} at (0,0) size 0x0
+            RenderInline {span} at (0,0) size 0x0
+          RenderInline {span} at (0,0) size 0x0
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished009xml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/009.xml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/009.xml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/009.xml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,55 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+ &lt;head&gt;
+  &lt;title&gt;DOM Traversal: NodeIterator: Removal of an ancestor of the Reference Node (backwards) (deep check)&lt;/title&gt;
+  &lt;script type=&quot;text/javascript&quot;&gt; &lt;![CDATA[
+    var errors = 0;
+    var log = '';
+    function doTest() {
+      var iterator = document.createNodeIterator(document.getElementById('root'), NodeFilter.SHOW_ALL, null, false);
+      var root = document.getElementById('root');
+      var A = document.getElementById('A');
+      var B = document.getElementById('B');
+      var BB = document.getElementById('BB');
+      var C = document.getElementById('C');
+      check(iterator.nextNode(), root);
+      check(iterator.nextNode(), A);
+      check(iterator.nextNode(), B);
+      check(iterator.nextNode(), BB);
+      check(iterator.previousNode(), BB);
+      remove(B);
+      var X = addChildTo(A);
+      check(iterator.previousNode(), X);
+      if (errors)
+        document.getElementById('result').firstChild.data = 'FAIL: ' + errors + ' errors:\n' + log;
+      else
+        document.getElementById('result').firstChild.data = 'PASS';
+    }
+    function check(a, b) {
+      if (!a) {
+        errors += 1;
+        log += 'Found null but expected ' + b + ' (' + b.id + ').\n';
+      } else if (a != b) {
+        errors += 1;
+        log += 'Found ' + a + ' (' + a.id + ') but expected ' + b + ' (' + b.id + ').\n';
+      }
+    }
+    function remove(a) {
+      if (!a) {
+        errors += 1;
+        log += 'Tried removing null node.\n';
+      } else
+      a.parentNode.removeChild(a);
+    }
+    function addChildTo(a) {
+      var x = document.createElementNS('http://www.w3.org/1999/xhtml', 'span');
+      x.id = 'X';
+      a.appendChild(x);
+      return x;
+    }
+  ]]&gt;&lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body onload=&quot;doTest()&quot;&gt;
+  &lt;pre id=&quot;result&quot;&gt;FAIL: Script did not complete.&lt;/pre&gt;
+  &lt;p&gt;&lt;span id=&quot;root&quot;&gt;&lt;span id=&quot;A&quot;&gt;&lt;/span&gt;&lt;span id=&quot;B&quot;&gt;&lt;span id=&quot;BB&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id=&quot;C&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
+ &lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished010expectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/010-expected.txt (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/010-expected.txt                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/010-expected.txt        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,8 @@
</span><ins>+layer at (0,0) size 800x600
+  RenderView at (0,0) size 800x600
+layer at (0,0) size 800x41
+  RenderBlock {html} at (0,0) size 800x41
+    RenderBody {body} at (8,13) size 784x15
+      RenderBlock {pre} at (0,0) size 784x15
+        RenderText {#text} at (0,0) size 32x15
+          text run at (0,0) width 32: &quot;PASS&quot;
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinished010xml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/010.xml (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/010.xml                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/010.xml        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1,64 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
+ &lt;head&gt;
+  &lt;title&gt;DOM Traversal: NodeIterator: Filters&lt;/title&gt;
+  &lt;script type=&quot;text/javascript&quot;&gt; &lt;![CDATA[
+    function doTest() {
+      var iterator = document.createNodeIterator(document, NodeFilter.SHOW_ALL, testFilter, false);
+      // skips text nodes and body element
+      var expected = new Array(9, // document
+                               1, // html
+                               1, // head
+                               1, // title
+                               1, 4, // script and CDATA block
+                               // body (skipped)
+                               1, // pre
+                               // &lt;/body&gt;
+                               8, // &lt;!-- --&gt;
+                               // PI skipped
+                               4); // CDATA
+      var found = new Array();
+
+      // walk document
+      var node;
+      while (node = iterator.nextNode())
+        found.push(node.nodeType);
+
+      // check results
+      var errors = 0;
+      var s = '';
+      var length = (found.length &gt; expected.length) ? found.length : expected.length;
+      s += 'EXPECTED  FOUND\n';
+      for (var i = 0; i &lt; length; i += 1) {
+        s += '  ' + (expected[i] ? expected[i] : '-') +
+      '         ' + (found[i] ? found[i] : '-');
+        if (found[i] != expected[i]) {
+          s += '      MISMATCH';
+          errors += 1;
+        }
+        s += '\n';
+      }
+      var p = document.getElementsByTagNameNS('http://www.w3.org/1999/xhtml', 'pre')[0];
+      if (errors)
+        p.firstChild.data = 'FAIL: ' + errors + ' errors found:\n\n' + s;
+      else
+        p.firstChild.data = 'PASS';
+    }
+
+    function testFilter(n) {
+      if (n.nodeType == 3) {
+        return NodeFilter.FILTER_SKIP;
+      } else if (n.nodeName == 'body') {
+        return NodeFilter.FILTER_REJECT; // same as _SKIP
+      }
+      return 1; // FILTER_ACCEPT
+    }
+
+  ]]&gt;&lt;/script&gt;
+ &lt;/head&gt;
+ &lt;body onload=&quot;doTest()&quot;&gt;
+  &lt;pre id=&quot;result&quot;&gt;FAIL: Script failed to run.&lt;/pre&gt;
+ &lt;/body&gt;
+ &lt;!-- some more nodes to test this: --&gt;
+ &lt;?body test?&gt;
+ &lt;![CDATA[]]&gt;
+&lt;/html&gt;
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsdomtraversalunfinishedTODO"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/TODO (0 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/TODO                                (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/dom/traversal/unfinished/TODO        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -0,0 +1 @@
</span><ins>+Check what happens when a NodeFilter turns a number not in the range 1..3
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkLayoutTestsplatformeflTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/efl/TestExpectations (189470 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/efl/TestExpectations        2015-09-07 23:05:28 UTC (rev 189470)
+++ trunk/LayoutTests/platform/efl/TestExpectations        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -2447,8 +2447,8 @@
</span><span class="cx"> webkit.org/b/148470 fast/text/international/thai-offsetForPosition-inside-character.html [ Failure ]
</span><span class="cx"> webkit.org/b/148470 fast/text/selection-in-initial-advance-region.html [ Failure ]
</span><span class="cx"> webkit.org/b/148470 fast/text/textIteratorNilRenderer.html [ Failure ]
</span><del>-webkit.org/b/148470 http/tests/w3c/dom/events/EventTarget-dispatchEvent.html [ Failure ]
-webkit.org/b/148470 http/tests/w3c/dom/nodes/Document-createEvent.html [ Failure ]
</del><ins>+webkit.org/b/148470 imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent.html [ Failure ]
+webkit.org/b/148470 imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.html [ Failure ]
</ins><span class="cx"> webkit.org/b/148470 http/tests/w3c/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-newelements.html [ Failure ]
</span><span class="cx"> webkit.org/b/148470 http/tests/w3c/html/dom/documents/dom-tree-accessors/document.getElementsByName/document.getElementsByName-newelements.xhtml [ Failure ]
</span><span class="cx"> webkit.org/b/148470 http/tests/w3c/html/dom/interfaces.html [ Failure ]
</span></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/ios-simulator/TestExpectations (189470 => 189471)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/TestExpectations        2015-09-07 23:05:28 UTC (rev 189470)
+++ trunk/LayoutTests/platform/ios-simulator/TestExpectations        2015-09-08 01:09:45 UTC (rev 189471)
</span><span class="lines">@@ -2739,8 +2739,8 @@
</span><span class="cx"> fast/parser/xml-colon-entity.html [ Failure ]
</span><span class="cx"> fast/parser/xml-declaration-missing-ending-mark.html [ Failure ]
</span><span class="cx"> fast/text/arabic-times-new-roman.html [ Failure ]
</span><del>-http/tests/w3c/dom/events/EventTarget-dispatchEvent.html [ Failure ]
-http/tests/w3c/dom/nodes/Document-createEvent.html [ Failure ]
</del><ins>+imported/w3c/web-platform-tests/dom/events/EventTarget-dispatchEvent.html [ Failure ]
+imported/w3c/web-platform-tests/dom/nodes/Document-createEvent.html [ Failure ]
</ins><span class="cx"> imported/w3c/canvas/2d.imageData.put.unchanged.html [ Failure ]
</span><span class="cx"> platform/ios-simulator/ios/accessibility/set-value.html [ Failure ]
</span><span class="cx"> platform/ios-simulator/ios/fast/css/webkit-overflow-scrolling-parsing.html [ Failure ]
</span><span class="lines">@@ -2794,7 +2794,7 @@
</span><span class="cx"> http/tests/messaging/cross-domain-message-send.html [ Skip ]
</span><span class="cx"> http/tests/ssl/ping-with-unsafe-redirect.html [ Skip ]
</span><span class="cx"> http/tests/ssl/referer-301.html [ Skip ]
</span><del>-http/tests/w3c/dom/events/Event-constants.html [ Skip ]
</del><ins>+imported/w3c/web-platform-tests/dom/events/Event-constants.html [ Skip ]
</ins><span class="cx"> 
</span><span class="cx"> # Tests that fail as of 09/02/2015:
</span><span class="cx"> editing/deleting/delete-block-merge-contents-010.html [ Failure ]
</span></span></pre>
</div>
</div>

</body>
</html>